当前位置: 首页 > article >正文

SparseRCNN 模型,用于目标检测任务

SparseRCNN 模型,用于目标检测任务
import logging
import math
from typing import List

import numpy as np
import torch
import torch.distributed as dist
import torch.nn.functional as F
from torch import nn
#项目完整代码下载链接:https://download.csdn.net/download/huanghm88/89909179

#from detectron2.layers import ShapeSpec
from detectron2.modeling import META_ARCH_REGISTRY, build_backbone, detector_postprocess
from detectron2.modeling.roi_heads import build_roi_heads

from detectron2.structures import Boxes, ImageList, Instances
from detectron2.utils.logger import log_first_n
from fvcore.nn import giou_loss, smooth_l1_loss

from .loss import SetCriterion, HungarianMatcher
from .head import DynamicHead
from .util.box_ops import box_cxcywh_to_xyxy, box_xyxy_to_cxcywh
from .util.misc import (NestedTensor, nested_tensor_from_tensor_list,
                        accuracy, get_world_size, interpolate,
                        is_dist_avail_and_initialized)

__all__ = ["SparseRCNN"]

import numpy as np
import torch
from torch import nn
from torch.nn import init


class SEAttention(nn.Module):
    def __init__(self, channel=512, reduction=16):
        super().__init__()
        self.ave_pool = nn.AdaptiveAvgPool2d(1)
        self.fc = nn.Sequential(
            nn.Linear(channel, channel // reduction, bias=False),
            nn.ReLU(inplace=True),
            nn.Linear(channel // reduction, channel, bias=False),
            nn.Sigmoid()
        )

    def init_weights(self):
        for m in self.modules():
            if isinstance(m, nn.Conv2d):
                init.kaiming_normal_(m.weight, mode='fan_out')
                if m.bias is not None:
                    init.constant_(m.bias, 0)
            elif isinstance(m, nn.BatchNorm2d):
                init.constant_(m.weight, 1)
                init.constant_(m.weight, 0)
            elif isinstance(m, nn.Linear):
                init.normal_(m.weight, std=0.001)
                if m.bias is not None:
                    init.constant_(m.bias, 0)

    def forward(self, x):
        b, c, _, _ = x.size()
        y = self.ave_pool(x).view(b, c)
        y = self.fc(y).view(b, c, 1, 1)
        return x 

http://www.kler.cn/news/364557.html

相关文章:

  • vue2 a-input输入框使用正则限制为数字、英文及中文,出现吞字符和英文字符打断问题
  • 安全见闻笔记
  • 案例分析-数据库系统
  • FPGA第 13 篇,使用 Xilinx Vivado 创建项目,点亮 LED 灯,Vivado 的基本使用(点亮ZYNQ-7010开发板的LED灯)
  • JS补原型链
  • C++类和对象(下篇)
  • 云计算行业应用实训室建设方案
  • es 常用命令(已亲测)
  • Unity编辑器 连接不到SteamVR问题记录
  • 一个批量输出PDF页数的python程序
  • 常用MQ组件选型时需要考虑的问题
  • 独家大模型经典面试秘籍:问题答案超详细,收藏此文就够咯
  • AnaTraf | 探讨TCP握手时延
  • JavaScript正则表达式利器:exec()方法深度解析与应用实例
  • pnpm : 无法加载文件...
  • 用户画像中不同机器学习模型的优缺点和适用场景
  • Apache Flink 2.0-preview released
  • 如何在Debian操作系统上安装Docker
  • 每日回顾:简单用C写 归并排序
  • 光通信——前传基本架构
  • Next.js14快速上手
  • spark sql 广播模式参数
  • 二叉树的性质
  • 基于Springboot在线视频网站的设计与实现
  • 深入解析东芝TB62261FTG,步进电机驱动方案
  • python之数据结构与算法(数据结构篇)—— 线性表