货车检测)
(
田间复杂环境下的
黄花菜识别)
(
红外场景下的
车辆检测)
对于场景的选择:
- 不要太烂大街,可以选择偏冷门的,但一定要具有实际意义。
对于检测对象的选择(数据集):
- 建议使用公共数据集(一是认可度高,二是方便进行的对比实验,三是容易获取) 。
PS:
有一个小思路,那就是根据自己学院特色来写。比如xx农业大学的就可以做花果蔬菜的检测,xx交通大学的可以做车辆、交通指示牌的检测,xx海洋大学可以做海底生物检测,xx医科大学可以做医学图像的识别(更多的是分割)等等。
总结一下就是:
自己感兴趣+有实际意义+资源容易获取+没那么烂大街
☀️1.3 阅读相关论文
确定了大致方向之后,我们就要重点看对应领域的论文。看得多了,你就能发现大家都在研究什么,用了哪些涨点的tricks,有哪些需要继续研究的地方,再根据你的数据集制定研究方案。
分享一些论文查找的链接:
👑**(1)顶会**
序号 | 简称 | 全称 | 简介 | 网址 |
---|---|---|---|---|
1 | ICCV | IEEE International Conference on Computer Vision | 国际计算机视觉大会,由IEEE主办。是计算机视觉三大会议最高级别 | Accueil - International Conference on Computer Vision - October 2-6, 2023 - Paris - France - ICCV2023 (thecvf.com)") |
2 | ECCV | European Conference on Computer Vision | 欧洲计算机视觉国际会议。是计算机视觉三大会议之一,每两年召开一次,与ICCV正好错开。 | [首页 |
3 | CVPR | IEEE Conference on Computer Vision and Pattern Recognition | IEEE国际计算机视觉与模式识别会议。该会议一般在6月举行,举办地是美国,是一个一年一次的会议。 | The Computer Vision Foundation – A non-profit organization that fosters and supports research in all aspects of computer vision (thecvf.com)") |
👑(2)顶刊
序号 | 简称 | 全称 | 出版社 | 网址 |
---|---|---|---|---|
1 | TPAMI | Pattern Analysis and Machine Intelligence, IEEE Transactions on IEEE | IEEE | IEEE Transactions on Pattern Analysis and Machine Intelligence / IEEE Xplore |
2 | TIP | Image Processing, IEEE Transactions on | IEEE | IEEE Transactions on Image Processing / IEEE Xplore |
3 | IJCV | International Journal of Computer Vision | Springer | International Journal of Computer Vision / Home |
4 | TMM | Multimedia, IEEE Transactions on | IEEE | IEEE Transactions on Multimedia / IEEE Xplore |
5 | PR | Pattern Recognitionr | Elsevie | Pattern Recognition - Journal - Elsevier |
6 | TCSVT | Transactions on Circuits and Systems for Video Technology | IEEE | IEEE Transactions on Circuits and Systems for Video Technology |
👑(3)中文核心
读论文的时候要注意,不是非要每篇论文都要将内容都阅读完,这样太浪费时间了。重点看一看目录、摘要还有实验部分就可以快速了解到这篇论文主要干了什么?还有什么可以研究的方向?这样你一天能看非常多的论文,看得多了,自然就会知道自己喜欢什么方向,该怎么去做下一步研究,别着急~❤️
PS:
除了顶会顶刊,我们还可以重点看看硕博的毕业论文,一般在结论之后都有展望,这些展望有时候就是现成的创新点和研究方向。
🚀二、如何做实验?
不知道大家一开始有没有一种这样的感觉:
CSDN上有很多大佬:迪菲赫尔曼、芒果汁没有芒果、魔鬼面具、一休哥※、加勒比海带66等等(感谢我的网络导师们!❤️),提供了很多改进方法,那么我随便挑几个不错的组合一下不就行了?so easy!(* ̄▽ ̄*)ブ
一开始我也是这么想的,挑几个最新的,非常自信地将思路跟我导师阐述。 ̄︶ ̄
我导师直接一句话:“你实验了吗?出结果了再汇报。” ̄. ̄
我又马不停蹄回去做实验。ㄟ( ▔, ▔ )ㄏ
搭建完模型,没报错,OK!能跑通,nice!接下来就是见证奇迹的时刻啦!<( ̄︶ ̄)↗
(当时还很兴奋地跟同门炫耀)
然后。。。很快被打脸——不增反降!!!┗|`O′|┛ 嗷~~w(Д)w
我就想,一定是加的不够多,不够新。 ̄へ ̄
于是我就使劲加,玩命加,加加加!(▼へ▼メ)
结果就是越来越低。。。┗( T﹏T )┛
后来突然想到一个问题:
一个浑身戴着金银首饰、浓妆艳抹、穿得雍容华贵的女生,远远不如白T+牛仔裤,扎着马尾素面朝天的少女更得人心。
(图片源自《甄嬛传》,如有侵权立删)
不停地加改进方法反而会适得其反。
我开始一边实验一边摸索规律,总共进行了48次实验,才终于得到我想要的涨点效果!^o^/
接下来分享我实验中踩坑经历~
🌻2.1 实验平台
如果实验室没有足够强的设备,建议大家还是租服务器训练。
不要用自己的笔记本去硬扛,耗时间而且效果不好,出现意外又一切重来(别问我咋知道的)。
👍租服务器的方法看我这篇就好→手把手教你使用AutoDL云服务器训练yolov5模型-CSDN博客
这里不再过多阐述~
🌻2.2 数据集处理
现在很多论文都用到这点,也是我导师提出让我加的创新点。
因为我们做的是特殊的场景,一些公共数据集并不是所有图片都符合,另外还有一部分图像质量不高,所以要做一定的筛选。筛选一波过后数据集的数量可能就不是很够量了,那么就可以通过数据增强来扩充样本。
👍数据增强方法可以看我的这篇→YOLO数据集实现数据增强的方法(裁剪、平移 、旋转、改变亮度、加噪声等)
另外,还可以选取多个数据集,将模型在每个数据集上都跑一遍,这样也可以成为一组对比实验,更有说服力。
🌻2.3 Backbone(特征提取)的替换
主干网络是模型的核心,影响着模型的速度和精度。
目前主干网络可以分为三类:
- **传统CNN:**VGG-16、ResNet-50、DenseNet等等
- **轻量级CNN:**MobileNet、EfficientNet、ShuffleNet、GhostNet等等
- **ViT系列:**Swin Transformer、Repvit、MobileViT等等
传统的CNN网络精度高但参数量巨大,计算慢,如果场景对精度要求非常高且不用管速度可以使用;
轻量级CNN参数量小,速度提升非常多,但是精度下降也很多;
ViT系列参数量也很大,建议大家如果选择ViT系列作为主干网络选择轻量级的,如MobileViT。
具体怎么选取,要根据自己实际场景和数据集的需要。
总的来说,对于现在的趋势,主干网络的选取规则:
使主干网络在提取特征时能够获取更多的有用信息,尽量保持精度的前提下,避免过度地使用轻量化骨干网络而导致精度的损失。
👍本人主干网络替换系列:
YOLOv5改进系列(5)——替换主干网络之 MobileNetV3
YOLOv5改进系列(6)——替换主干网络之 ShuffleNetV2
YOLOv5改进系列(9)——替换主干网络之EfficientNetv2
YOLOv5改进系列(10)——替换主干网络之GhostNet
YOLOv5改进系列(19)——替换主干网络之Swin TransformerV1(参数量更小的ViT模型)
YOLOv5改进系列(21)——替换主干网络之RepViT(清华 ICCV 2023|最新开源移动端ViT)
YOLOv5改进系列(22)——替换主干网络之MobileViTv1(一种轻量级的、通用的移动设备 ViT)
YOLOv5改进系列(23)——替换主干网络之MobileViTv2(移动视觉 Transformer 的高效可分离自注意力机制)
🌻2.4 Neck(特征融合)的更换
在YOLO中,Neck端主要负责融合不同层级的特征图,并提供更高层次的语义信息。
在YOLOv5s原模型中使用经典的**FPN+PAN(自上而下和自下而上相结合)**的特征金字塔网络,然而,这种网络会削弱了非相邻提取层的融合效果,导致特征信息的丢失或退化。
因此在实验时我们常常会更换Neck端。常用的有:
- **BiFPN:****加权双向特征金字塔。**加强特征图的底层信息,使不同尺度的特征图进行信息融合,从而加强特征信息。
- **AFPN:渐进特征金字塔。**以渐进的方式将低层特征与高层特征的语义信息和详细信息直接相互融合,避免了多级传输中的信息丢失或退化,提高特征尺度的不变性。适用于提高小目标的漏检率。
- **CARAFE:**轻量级通用上采样算子。具有感受野大、内容感知、轻量级、计算速度快的特点。适用于移动设备检测任务。
- **EVC:****中心化特征金字塔。**关注不同层之间的特征交互,还考虑了同一层内的特征调节。适用于密集预测任务。
- **增加小目标层:**参考多尺度特征图的特征信息,同时兼顾了较强的语义特征和位置特征。适用于小目标较多的数据集。
本人Neck端更换系列:
🌻2.5 添加注意力机制
注意力机制是块宝,现在绝大部分论文里改进模型都添加注意力机制。
不了解注意力机制的可以先看看这篇→【Transformer系列(2)】注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制超详细讲解_注意力机制和自注意力机制的区别
BUT,
“增加注意力机制一定涨点吗?”
“那么多注意力机制我该选哪个?”
“注意力机制要添加到哪个位置? ”
“注意力机制是加的越多越好吗?”
这些是我文章评论区最常见的问题,今天谈谈我个人理解(不对请指正)
🎄**(1)增加注意力机制不增反降问题**
YOLO算法旨在通过全局特征来预测边界框和分类结果,而不是依赖于局部特征。再一个,YOLO算法本身已经足够强可以应对目标检测任务。
注意力机制是让模型更加关注一张图像中某个区域更细节特征,所以对于YOLO算法来说,可能还不如不加。但是对于一些其他任务,例如图像分割或者更细粒度的分类问题,注意力机制可能会表现出更好的效果。
另外,引入注意力机制也会增加模型参数量,可能会导致训练和推理过程变得更加慢。
除此之外,加入注意力机制不增反降还有可能是以下原因:
(1)数据集过小(300张以内的就不要加了)
(2)添加位置不对
(3)数据集和选用的注意力机制相克(比如小目标不适用加CBAM)
(4)过拟合和欠拟合
🎄**(2)注意力机制的选取问题**
这个问题就像我每次吃自助一样,五花八门的美味盛宴,光是看也看不出那个最好吃,得尝一尝才知道。有可能今天想吃个甜口,觉得小蛋糕最好吃,但明天可能就想吃炸串红烧肉了,后天可能觉得海鲜才是自助之王。。。一抬头,到吃午饭点了(★ ω ★)。
(咱先继续唠,怕我回来灵感没了,废寝忘食ing。。。)
所以总结就是,注意力机制没有谁好谁坏,只是看哪个更适合你自己的数据集,你需要亲自尝试。
常见注意力机制:
- SE:在通道维度增加注意力机制,关键操作是squeeze和excitation。
- **CBAM:由通道注意力机制(channel)**和 **空间注意力机制(spatial)**组成。
- CA:通过精确的位置信息对通道关系和长期依赖性进行编码,具体操作分为Coordinate信息嵌入和Coordinate Attention生成 2个步骤。
- ECA:****通道注意力机制的一种实现形式,是基于SE的扩展。
- SimAM:一种无参数注意力模块,只使用了一个全局池化层和几个全连接层。
- SOCA:可训练二阶注意力模块,通过使用二阶特征统计来自适应地重新调整信道方向特征,以获得更具鉴别性的表示。
- EMA:高效多尺度注意力模块,通过新的跨空间学习方法融合两个并行子网络的输出特征图,设计了一个多尺度并行子网络来建立短和长依赖关系。
🎄**(3)注意力机制的位置问题**
🌲1.首先加在Backbone部分
也就是要加在特征提取那里。因为Neck端的作用是对特征进行融合,Head是基于特征进行预测。在这两个阶段特征已经提取完毕,如果我们这个图像本身提取的特征就不太好,那么在这后面两个阶段再努力也始终有一定的局限。基础不牢,地动山摇。
所以,注意力机制通常加在Backbone部分,这样才能提取到更好的特征,提升上限。
🌲2.SPPF(池化层)前后问题
像我最初的几篇,SE、CBAM、ECA等,是加在SPPF上一层的。
首先是作者实验(用ResNet)源码就是放在这个位置上的。
再一个就拿CBAM举例,它包括空间和通道注意力,这两个主要都是利用全局平均池化将feature map的特征抽象到一系列点注意力权重,然后建立这些权重的联系并附加到原空间或通道特征上。如果加在后面,就会引起过拟合了。
其实这些通道注意力,都不适合加在靠近输入端或者靠近head层的地方,这样反而会降点,最近研究ViT,发现self-attention也差不多。
空间注意力放在网络前面,通道注意力放在后面。
🌲3.如果要加在Neck部分
Neck可以根据数据集的特征加在大中小三层,具体看你的更需要注意力机制关注哪个层特征。
emmm,你们看晕了没?
其实我觉得吧,这些理论知识是我个人理解+大佬经验分享整合的,大家了解个大概就行,它不是百分百正确的定理,有可能同一个模块别人加这个位置好使,你加就降点。所以啊,还是需要大家自己做实验滴~(这就是为啥我实验了48次orz)
🎄**(4)注意力机制数量问题**
通过上面安小鸟的例子,大家应该也明白,这玩意儿再好,也不是越多越好。
先不说随意加反而影响全局效果,别忘了,注意力机制也是有参数的,引进过多会导致模型复杂、计算量大。
另外,我还真有一个朋友这么试了,审核人的意见是:**“**存在技术方案以复杂结构实现简单功能、采用常规或简单特征进行组合或堆叠等明显不符合技术改进常理的行为”。
注意力机制这块真的特有意思,等我以后研究研究有啥新发现了再来补充。(‘ω’)/
👍本人添加注意力机制系列:
🌻2.6 改进IoU
大家先看看IoU介绍,我先去吃个饭~
👍IoU详解→损失函数:IoU、GIoU、DIoU、CIoU、EIoU、alpha IoU、SIoU、WIoU超详细精讲及Pytorch实现
其实每个的特点文章介绍的很清楚了,我也没有做过多实验,总结一下,还是亲自试一试。
👍本人改进IoU系列:
YOLOv5改进系列(11)——添加损失函数之EIoU、AlphaIoU、SIoU、WIoU
YOLOv5改进系列(17)——更换IoU之MPDIoU(ELSEVIER 2023|超越WIoU、EIoU等|实测涨点)
🌻2.7 改进NMS和激活函数
因为我的实验没涉及这两块,所以这里先留个坑,以后有经验了再来填。
想尝试的同学可以看我之前教程:
👍本人改进激活函数教程:
YOLOv5改进系列(13)——更换激活函数之SiLU,ReLU,ELU,Hardswish,Mish,Softplus,AconC系列等
👍本人改进NMS教程:
YOLOv5改进系列(14)——更换NMS(非极大抑制)之 DIoU-NMS、CIoU-NMS、EIoU-NMS、GIoU-NMS 、SIoU-NMS、Soft-NMS
🌻2.8 优化参数
作为一个炼丹师,我本来想尝试一下调参,无奈高估了自己。
这本来就是玄学中的玄学,干嘛为难我这个小白?!o(TヘTo)
哈哈,开玩笑,其实到这时我的实验已经成了,于是调参这块没有过多研究,和大家分享一些大佬们的文章吧,希望有帮助呀~
**总结一下,没有trick可以绝对涨点,实验必须根据自己的数据集亲自做,不增反降是常态,每一次尝试总结加进一步摸索,慢慢地就有经验了,祝大家都能高效涨点!**❤️
🚀三、如何写论文?
很多时候实验好不容易做出来了,但是论文却迟迟无法下笔,说的是不是你?
反正不是我(傲娇脸.jpg)
也许是我一直做论文带读博主的原因,刚开始写论文的时候,要写哪几部分?每部分怎么写?整个框架清晰地出现在我脑海里。网上大部分论文带读只讲网络结构,省略摘要、引言等等,后来想想我立志要做全网最详细的博主,所以每次全篇逐段讲解。轮到我自己写的时候,就自然而然有思路了。
**在学习的道路上,每一份付出都有回报,也许现在看不到任何成果,但在你今后的人生里,它会像一个礼物一样突然出现,也许这就是努力的意义吧!**❤️
鸡汤结束,我们言归正传~
⭐3.1 Abstract—摘要
论文摘要就是整篇文章和浓缩预览,它被排放在论文的首要位置,也是审稿人首先看的地方。
公式:研究的目的和重要性**+研究的方法+得到的研究结果****+结论**
⚡️At:
- 摘要是一整段
- 不要在摘要里出现感情色彩的评价
- 一般在200-300字左右,具体看期刊
⭐3.2 Introduction—引言
引言的作用就是系统性地向读者介绍该篇论文的研究背景、创新点、采用理论及方法等,核心是吸引读者阅读,通常是对于全文内容的高度概括!
公式:背景和需求+介绍之前研究方法+ 前人研究(并指出不足)+本文的贡献
① 背景和需求:先写为什么要研究这个领域,介绍人们对大的领域、行业、学科等背景问题有何期待,说明实现这些期待对背景问题的重要性。通常采用的是一般现在时、现在完成时或现在进行时。
② 介绍之前研究方法:其次介绍这个领域的常见研究方法,并且一步步缩小这个领域的范围一直到自己的那个层次。具体文献综述部分通常采用一般过去时,其他高度概括部分或常识介绍部分通常采用一般现在时或现在完成时。
③ 前人研究(并指出不足):第三就是写之前大佬在该领域怎么研究的也就是研究现状,并且说明存在什么问题没有解决(自己解决了)。通常采用的是一般过去时或现在完成时。
④ 本文的贡献:最后引出自己的东西,说明自己解决了什么问题作出了什么贡献,论文余下部分是如何安排的。通常采用的是一般现在时。
可以想象一个镜头,由远慢慢拉近到你眼前的感觉。
⚡️At:
- 避免背景介绍遗漏,提到的关键信息都要有说明,详略得当
- 避免段与段之间逻辑混乱
- 引用文献要是最新的
⭐3.3 Related Work—相关工作
相关工作时详细地写和自己最相关的研究,但不是一味地说之前的工作做了什么,主要说清楚我们提出的算法和之前算法有何不同,为接下来讲故事做铺垫。
就那最新带读的MobileViT v3举栗子:
它就是先将ViT,再介绍CNN,最后介绍近来两者混合的一些研究。
⚡️At:
- 不要罗列论文,而是从一个整体上介绍其思想,可以展开这些论文思路上的差异。
- 可以依据相关性,递进式分类地介绍相关工作,或者总分形式。对于每类工作都要点出其主要共性问题,以及本文所提出的对应解决方案。
- 前期的调研要充分,并且做的过程中也要关注最新的文章,做到一半发现idea撞车了就比较麻烦了。
- 如果是技术类的相关工作,一定要体现为了把该技术应用到本领域所做出的改进,而不能是仅仅将该技术迁移到本领域,具体看你咋讲故事了。
⭐3.4 Method—方法
(不同方向的Method写法不同,这里仅对深度学习的论文写作介绍)
Method这一部分是记录你的研究基础和研究方法,就是非常详细的介绍你的创新点。一般采用总—分形式:先画出你搭建的模型,然后总体介绍,接下来再逐一介绍创新点。
**总:**单独一段介绍你的搭建模型,用到了哪些方法,概括地介绍就行。然后画出模型的总体网络结构图(我导是建议再加上方法流程图)。
分:接下来就是分小节逐一、详细地介绍每个方法(创新点)。首先介绍前置的知识、算法结构、流程(可以用伪代码表示)、公式、网络结构图、为什么这么设计等等,没有绝对的格式,最终的目的是为了说清楚算法的设计思路,让别人能够看懂。
⚡️At:
- 方法介绍大家可以先去读原论文(了解前置知识),然后扒源代码(了解网络结构和算法流程),最后自己就很清楚了。
- 不知道该怎么总结可以看看同样使用这个方法的论文(搜关键字就能找到,只看这一块就行),学学大佬是如何介绍的。
- 写法上可以去网上找现成的英文模板,表达更为高级。
还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!
王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。
对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!
【完整版领取方式在文末!!】
93道网络安全面试题
内容实在太多,不一一截图了
黑客学习资源推荐
最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
1️⃣零基础入门
① 学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
② 路线对应学习视频
同时每个成长路线对应的板块都有配套的视频提供:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!