一点就分享系列(实践篇3-下篇)(待更新中,敬请期待)— yolov5之“回顾总结”与“彩蛋附赠”+“后续模型设计“+永不完结的更新idea“

一点就分享系列(实践篇3-上)

一点就分享系列(实践篇3-中)

一点就分享系列(实践篇3-下 )

前言
最近一个字!忙!!!很多朋友在催更,不是我不想发,是真的需要实验,这篇的核心本来是:对v5头部和label assign进行创新和实验,故此我需要梳理下现在比较sota的anchor 匹配机制,进行学习理解并编码,这无疑需要大量时间,但是我目前的工作强度是不允许的,而且最近打算开源个pytorch人脸项目+ 基于deepstream的C版本sdk项目(已在GIT上了),就是每天到家都是11点多了,晚上还要开2个小时的远程工作,主要是时间不够用,一个人实在做不了这么多,但是我想法和思路很多,真的缺帮手,所以公开招募!志同道合的小伙伴一起做开源项目并长期更新维护(通用检测、人脸识别、ocr等等)
但是,此时此刻(2021年的9月15号11点50分~),我决定先开个头,如果说上篇是初窥门径,中篇就是班门弄斧,但是下篇的东西绝对会是小有所成, 希望我的文章和人都在进步,我始终认为:如今的深度学习是特殊的,特殊性在于它是最具备时代时间性的技术和理论体系结合的产物,抛开时间发展和算力支持就没什么说的必要了。。
言归正传!大概分享下这篇要做的事情,核心肯定是上述说的,但是呢近期看到了不少优秀的文章和项目,实在心痒,所以文章大致定个基准内容。。

所有开源项目:定期不定时更新维护!
关于我的yolov5项目my github,和作者更新同步且保持添加自己的idea。(代码有时候因为和作者的merge还有点问题,我发现就会立刻改好上传 一般都是些代码优化变动 也可以提醒我)实验有提升的,通过博客或者git PR提交方式联系,感谢反馈!

一点就分享系列(实践篇3)

  • 一点就分享系列(实践篇3-上)
  • 一点就分享系列(实践篇3-中)
  • 一点就分享系列(实践篇3-下 )
  • 回顾总结+“展望
  • 一、关于yolov5的三个“彩蛋”
    • 0.修改心得和建议(2021-9/24 ,先写点~):
    • 1一些源码细节“彩蛋”、(2021/10/11 更新merge v5仓库,之前的程序问题应该已经解决)
      • 1.1. 2021/10/20 更新之前merge的v6.0版本代码,解决了一些更新后的问题,详情改动参考博客说明[V6.0最快速览:](https://blog.csdn.net/weixin_44119362/article/details/120748319?spm=1001.2014.3001.5501)
    • 2.业务拓展项目“彩蛋”
    • 3.yolov5代码全注释讲解版本
  • 二、颠覆结构设计
  • 总结


回顾总结+“展望

大致回顾总结:

实践篇3 yolov5上篇——始于2020年底,我使用v5进行初步改进,主要以添加各种简便的注意力插件或者融合层放在backbone后面为主(如asff,cbam,coord等),随后得到了一些经验性的结论和网友的实验反馈(比如有人用注意力在小数据集的dense 目标上有提点,通用数据集一般epoch上做实验想超过官方baseline难上加难~)和模型样本匹配的理解。
yolov5中篇——在2021年初,v5中篇加入了transformer算子mhsa(最新代码有bug,我抽空解决下),还有学术风波事件liduo的involution和2019 iccv的上采样算子等等,引入eiou和focal-iou,目前看来transformer在浅层并不好有效学习,且开销较大,只能学习swin-transformer的思路,不然还是像我原先那样放在底层和position embed做add去构建block?后来补了个bifpn,大概是这样子吧。

2021年中,我对fpn有了新的认知,在focus文章里我提到了,而且最近随着yolox的推出,我注意力都放在样本匹配和业务训练上了!其余呢?完成了一些自己的工作项目,效果还不错,对于一些trick的使用有了积累了不少经验~比如focal思想确实是效果比较好,小数据上易过拟合,训练直观上很难评估其效果,只有在业务场景下测试才能发现focal loss的优势,除了这些,打算给大家分享下,v5作者更新的代码细节补充,和一些关于v5的变体检测任务等等吧。还没想好,看时间更了~而且最近git会上一些开源项目,也是不断更新维护的,搬砖不易,希望大伙支持下。


一、关于yolov5的三个“彩蛋”

0.修改心得和建议(2021-9/24 ,先写点~):

  1. 网络模型Backbone的:不得不说v5的结构已经很优秀了,这边大部分的做法都是插注意力机制 ,大部分的注意力机制都是结合通道和空间去做文章,比如上篇中提到的SE,CBAM,Coord等等还有很多,还有transformer,这里说下注意力机制的一些经验:
    首先,网络在浅层的参数其实是相对学习容易的,而深层则会困难,不适当的注意力机制会拖慢网络的训练——加大训练难度和参数量,以及开销,而根据我的个人学习经验,在网络结构中浅层主要还是通过3x3卷积去充分去提取局部特征,而在深层中其实3x3卷积在低分辨率的featuremap上或许就不如注意力机制了,试想一下:浅层的高分辨率图像局部信息提取局部相对更加重要,而深层的低分辨率特征在配备了注意力机制,比如transformer去替代3x3卷积,这也是我中篇分享BotNET的初衷,当然这里是有区别的,有的时候少即是多:比如大家知道,transformer是有个位置编码的,不管是swin还是别的SOTA级transformer的模型中,Position embedding 都是必备的,但是通过上篇尴尬使用Involution我思考到,前面的卷积大概是可以做的很好了(不然现在这么多纯CNN的模型怎么达到SOTA的?)那么如果在使用self-attention算子的时候,或许不用加入position embedding?我只需要transformer的全局联系?这是也是我心中最好backbone的候选者!
    再来说NECK部分(我们这里不说解耦检测头):BIFPN,这个有很多朋友反馈在自己数据集上有提升,那么通过上述分析,BIFPN是否可以取消权重的融合,为什么呢?因为权重融合其实就是注意力机制,那么就如上所述,有利就有弊吗,而且聚合网络本来就是加大了模型的开销,最重要的是:我在Fcos文章中的理解其实强调了,FNP/PA/BIFPN,其实核心是多个head而已,确实4个head的V5就是很强啊!所以!总结下,个人认为如果在网络层的改动:
    1.深层加入self-attention去替换3X3卷积;该sefl-attention可以不带位置编码。
    2.聚合用BIFPN(可以不用权重链接),当然还有别的设计结构和层数设计,这个也是网络结构设计的一个难点,实验证明不同的结构设计确实会对性能有很大影响,但是研究这个硬件资源和时间都需要相当充裕。

2.LOSS和样本匹配的改进想法:

1一些源码细节“彩蛋”、(2021/10/11 更新merge v5仓库,之前的程序问题应该已经解决)

ps:在Bot yaml的transformer的位置编码,用参数选项暂时屏蔽掉了,想法来自上述,关于修改模型的训练问题,修改后读取的权重是需要从新训练的,可以先拿个检测集学下,再用自己的数据集,这个只是暂时的,最近忙别的交待下这个事情的进度

1.1. 2021/10/20 更新之前merge的v6.0版本代码,解决了一些更新后的问题,详情改动参考博客说明V6.0最快速览:

简单来说6.0的改动就是贯彻精简二字,另外修复了一些程序问题,算法上比较有意义的修改就是替换掉了作者之前的FOCUS和SPP,选了更小的卷积作为替代,提升了速度,网络更加精简,具体看我博客的更新说明。

2.业务拓展项目“彩蛋”

3.yolov5代码全注释讲解版本


二、颠覆结构设计

总结

你可能感兴趣的:(一点就分享系列,idea,pytorch,深度学习)