FemtoDet

论文

https://arxiv.org/pdf/2301.06719
https://github.com/yh-pengtu/FemtoDet

超轻量级检测模型,非常适合cpu推理

SharedNeck

提出了一种SharedNeck结构融合层特征,SharedNeck 将不同尺度的特征通过上采样或下采样对齐,然后通过元素相加的方式进行合并

IBE

提出了一种IBE模块提升模糊物体边界导致的错误检测问题,是对深度可分离卷积的一种改进,下面的图像中最右边图像是有IBE的效果

IBE(ncnn格式)结构:

其中右分支的1×1卷积是将w、h做层融合达到稀疏化,

        # 两次sum代表对两个kernel_size求和
        # 变成[C_out, C_in, kernel_size, kernel_size]-》[C_out, C_in, kernel_size]-》[C_out, C_in]
        # 混合通道可以评估重要性,并且
        kernel_diff = self.conv.weight.sum(2).sum(2)
        # 手工构建1x1卷积
        kernel_diff = kernel_diff[:, :, None, None]

memorydata是一个theta调节系数,作用于这个1×1卷积上;parameter保证训练时该参数会被不断更新

        self.theta = Parameter(torch.zeros([1]))

将融合层1×1卷积的输出与原始卷积融合,并通过两个batchnorm再次融合:

     out_diff = F.conv2d(input=x, weight=kernel_diff, stride=self.conv.stride, padding=0, groups=self.conv.groups)
        theta = F.sigmoid(self.theta)#[None, :, None, None]
        # outs = self.att(out_normal, out_normal - theta * out_diff)
        # 将普通卷积和1x1稀疏卷积融合,1x1
        outs = self.bn(out_normal) + self.bn2(out_normal - theta * out_diff)

以上代码出自femtodet的ibeconv.py

这里我的模型为了提升性能使用的是SILU,原本是ReLU

使用总结

因为模型尺寸很小(不到70k)相对yolo对数据的尺寸适应是比较差的,建议按照一定范围内resize,并且如果对精度有要求适当的减少一些数据增强预处理更好

Github:
https://github.com/MirusUmbra
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇