如何学习yolo?

泛旅传媒 2023-08-24 23:56 编辑:admin 300阅读

学习yolo的话,不妨考虑一下在我的相关专栏里去学习,链接如下:

YOLO-从零开始入门目标检测

简单说一下本专栏的脉络:

第一部分:YOLOv1

YOLOv1原理讲解->YOLOv1模型搭建->VOC数据集准备->数据预处理->数据增强->训练模型->制作训练正样本->损失函数->测试模型与检测结果的可视化->计算mAP->COCO数据集准备->COCO-val验证集和AP计算方法。

这一部分可以让我们能够对目标检测有个基本而初步的认识,对于YOLO系列的思想有了基本了解和认识,并且能够在当下的主流数据集COCO上完成测试,最重要的,是我们能够掌握数据预处理的基本方法,这对于开展今后的学术工作是很重要的。

很多时候,每当我们进入一个新的领域,首先最需要解决的问题包括三点:

1.确定常用的数据预处理方法;

2.确定该领域的benchmark;

3.确定评价指标及其计算方法。

完成这一部分后,相信读者能够对以上三点有个基本的掌握,并且能够搭建出来一个我们自己的YOLOv1检测模型。倘若实际需求较为简单,那么这样的一个模型足以满足。

本部分的核心项目代码:

https://github.com/yjh0410/PyTorch_YOLOv1

这一部分的最后,我们会介绍一个增强版的YOLOv1检测器,性能很强大。

https://github.com/yjh0410/PyTorch_YOLO-Family

第二部分:YOLOv2

YOLOv2原理讲解->anchor box讲解->kmeans获取anchor box->YOLOv2模型搭建->训练模型->基于anchor box的正样本匹配->损失函数->测试模型与检测结果的可视化->计算mAP。

这一部分可以让我们对anchor box、anchor box based方法的原理有一个初步的认识,以及基于anchor box的正样本匹配的基本原理有一个初步的了解和认识。

本部分的核心项目代码:

GitHub - yjh0410/PyTorch_YOLOv2

这一部分的最后,我们会介绍一个增强版的YOLOv2检测器,性能很强大呦。

https://github.com/yjh0410/PyTorch_YOLO-Family

第三部分:YOLOv3

FPN解读->YOLOv3原理讲解->YOLOv3中的正样本匹配方法->测试模型与检测结果的可视化->计算mAP。

YOLOv3这一部分内容最少,主要也是因为YOLOv3本身就没有太多改进的地方,主要是增添了FPN模块,换了更大的backbone。完成这一部分,读者基本就是入门了,如果代码全程都手敲下来和调试,相信读者会收获不少。

本部分的核心项目代码:

GitHub - yjh0410/PyTorch_YOLOv3


主要是以上三部分,后续会根据更新内容不断做调整。

最后说明一下,为了配合这个专栏,以前的项目代码我会重新做调整,将v1、v2、v3都单独分开,不再合成一个项目发布了。所有模型我都会重新训练一遍,也许会和之前的结果有些出入,但无关紧要。

这一部分的最后,我们会介绍一个更好的YOLOv3检测器。

https://github.com/yjh0410/PyTorch_YOLO-Family

第四部分:YOLOv4

笔者近来也尝试实现了一版YOLOv4,就性能而言,接近官方YOLOv4的水准,不过在一些细节上的实现还是有着些许差别,不过,作为一个入门的素材还是十分足够的,读者可以从这个项目里学习到有关马赛克增强的数据预处理知识,进一步入门目标检测领域。后续,我们也将会在此基础上实现更好的anchor based YOLO检测器以及一个anchor free的YOLO检测器。

https://github.com/yjh0410/PyTorch_YOLO-Family

第五部分:YOLOF

YOLOF算是本专栏的一个小插曲吧,毕竟虽然名字里带了个“YOLO”,但是和YOLO家族并没什么关系。之所以笔者要实现YOLOF,算作是笔者的一点小小的私心吧,着实很喜欢这个简洁的单极检测器。

GitHub - yjh0410/PyTorch_YOLOF: A PyTorch version of You Only Look at One-level Feature object detector

尾声:FreeYOLO

在专栏的最后,笔者最后整理先前的YOLO项目,在由笔者实现的YOLOv4基础上,将项目代码重构了一遍,搭建名为AnchorYOLO的新模型。不论是项目代码的风格还是一些技术细节,都尽可能贴合当前主流的写法和实现。之所以是命名为“AnchorYOLO”,是因为笔者也不知道该如何命名为好。

AnchorYOLO算得上是本专栏的一个集大成的工作,而更重要的,是我们以AnchorYOLO为baseline,去掉anchor box,构建anchor-free范式的YOLO检测器。在笔者写下这段文字的时间点(2022年),YOLO家族目前只有YOLOX这一个是anchor free范式的,所以,笔者将要实现的FreeYOLO算是对YOLOX的一次小小致敬~

FreeYOLO的核心是去掉了anchor box,并借鉴了FCOS检测框架,完全可以说,FreeYOLO是YOLO和FCOS的一个结合体,保留YOLO检测方式的前提下,引入FCOS的anchor-free机制来消除anchor box的麻烦。

届时,笔者将会开源包含AnchorYOLO和FreeYOLO两个检测器的项目,以供读者学习和使用。

这个最后的FreeYOLO将是笔者献给各位读者最后的礼物,本专栏也将在此收尾。受种种客观因素的限制,从今往后,笔者也不会再做目标检测的科普,希望大家能从这个专栏中学会“YOLO”。

FreeYOLO源码

https://github.com/yjh0410/FreeYOLO

最后,对此专栏感兴趣的可以私聊我加入微信群,针对本教程有任何问题,都可以在群里提问,笔者会及时做出解答的。


另外,笔者闲暇时间还小小地复现了RetinaNet和FCOS,感兴趣的读者可以点击下方的GitHub链接:

https://github.com/yjh0410/DetLAB

希望这个专栏可以让你更好地学习YOLO,更好地入门目标检测。

顶一下
(0)
0%
踩一下
(0)
0%