建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
直达楼层
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

采纳成功

您已采纳当前回复为最佳回复

角动量

发帖: 218粉丝: 8

发消息 + 关注

发表于2021年03月08日 19:38:25 423 4
直达本楼层的链接
楼主
显示全部楼层
[其他] 超轻量的YOLO-Nano

据NanoDet模型,我将我的YOLOv3Slim的backbone换成了十分轻量的ShuffleNetv2,并且去掉最后一层1024的卷积层,而head部份的设计和NanoDet是一样的,十分轻量的PAN结构。至于loss设计,目前仍用YOLO系列的,暂未改动。


模型结构
模型结构图:
image.png
YOLO-Nano网络结构
简单说一下:

1.1 Backbone

使用的是ShuffleNetv2,相关代码我借鉴了NanoDet所提供的网络代码和模型下载地址,由于ShuffleNetv2有大量的depthwise卷积,因此如果不做特殊处理的话,可能对GPU不是太友好。但这样的模型本身是面向嵌入式等移动平台的,鲜有诸如1080ti、2080ti这样的gpu算力。
关于backbone代码,大家可以打开我项目的backbone/shufflenetv2.py。主要使用shufflenetv2-0.5x和shufflenetv2-1.0x两个模型。

1.2 neck

拟定使用spp,这个还没有决定是否加进去,因此待定中。悄悄说一句,应该没有人想尝试家DCNv2吧~那玩意挺慢的。
另外,还用了PAN,PAN的设计参考了NanoDet:
a、去掉所有的卷积,仅仅保留FPN中必要的1x1卷积进行通道对齐,这里,我们将三个尺度的feature map的通道都用1x1卷积处理成96。为什么是96,可以参考NanoDet的设计。
b、所有的上采样操作(对应FPN)、下采样操作(对应PAN后续部份)均使用插值:
# FPN
p4 = self.smooth_0(p4 + F.interpolate(p5, scale_factor=2.0))
p3 = self.smooth_1(p3 + F.interpolate(p4, scale_factor=2.0))

# PAN
p4 = self.smooth_2(p4 + F.interpolate(p3, scale_factor=0.5))
p5 = self.smooth_3(p5 + F.interpolate(p4, scale_factor=0.5))
c、特征融合使用sum操作,而不是cat操作。
d、特征融合后,额外接一个3x3卷积再处理一下,这一是与NanoDet不同的。按照NanoDet的做法,特征融合几乎全是线性操作,个人觉得不太妥,因此,在考虑了速度和精度后,决定加入一层3x3的卷积(后接BN+LeakyReLU)来处理一下,速度上带来的额外开销很小,精度提升了2-3mAP(VOC test)。


举报
分享

分享文章到朋友圈

分享文章到微博

采纳成功

您已采纳当前回复为最佳回复

运气男孩

发帖: 445粉丝: 54

发消息 + 关注

发表于2021年03月08日 23:10:50
直达本楼层的链接
沙发
显示全部楼层

感谢分享

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

HW-QGS

发帖: 261粉丝: 22

发消息 + 关注

发表于2021年03月08日 23:22:35
直达本楼层的链接
板凳
显示全部楼层

感谢分享

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

望闻问切ice

发帖: 517粉丝: 8

级别 : 版主

发消息 + 关注

发表于2021年03月10日 16:18:37
直达本楼层的链接
地板
显示全部楼层

不错的分享,评论支持一下

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

andyleung

发帖: 1023粉丝: 83

发消息 + 关注

发表于2021年03月11日 09:53:14
直达本楼层的链接
5#
显示全部楼层

感谢分享

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册

结贴

您对问题的回复是否满意?
满意度
非常满意 满意 一般 不满意
我要反馈
0/200