(附链接)YoloALL: 解决不同版本YOLO的选择进行目标检测推理

共 3519字,需浏览 8分钟

 ·

2021-09-25 08:49

点击左上方蓝字关注我们



一个专注于目标检测与深度学习知识分享的公众号

编者荐语
目标检测是现在最热门的研究课题,也一直是工业界重点研究的对象,最近几年内,也出现了各种各样的检测框架,所属于YOLO系列是最经典也是目前被大家认可使用的检测框架。但是,我们又该怎样抉择呢?

链接:https://github.com/DL-Practise/YoloAll
不得不说,yolo(“You Only Look Once”是一个对象检测算法的名字,这是Redmon等人在2016年的一篇研究论文中命名的)真的是一个神奇的存在。
人们看到图像以后,可以立即识别其中的对象、它们的位置和相对位置。这使得我们能够在几乎无意识的情况下完成复杂的任务,比如开车。因此,对汽车进行自动驾驶训练需要类似水平的反应能力和准确性。在其最基本的形式中,这样的系统必须能够分析实时视频中的道路,并能够在继续确定路径之前检测各种类型的对象及其在现实世界中的位置,所有这些都必须是实时的。
先前的检测系统使用分类器对测试图像的不同切片进行评估,涉及到在图像中均匀间隔的位置上滑动窗口并在这些部件上运行分类器。但是,速度慢、优化困难一直困扰着这种YOLO之前的系统。
YOLO将对象检测重新定义为一个回归问题,它将单个卷积神经网络(CNN)应用于整个图像,将图像分成网格,并预测每个网格的类概率和边界框,很好的解决了这些问题。那么问题来了,基于yolo发展出了众多的版本,我们又该如何解决不同版本YOLO的选择并进行目标检测推理呢?


最近我们创办了通过视频来详解前研技术,有兴趣的同学可以通过观看视屏了解最新检测框架,如目前发布的视频链接:

  • https://www.bilibili.com/video/BV17b4y1m7xy/

  • https://www.bilibili.com/video/BV1vU4y1j7Ms/


1

前言&背景


在通用目标检测中,从yolov1,v2,v3,v4,v5到最近的yolox,都充分说明了yolo在学术界以及工业界的受欢迎程度。


YOLOR论文地址:https://arxiv.org/pdf/2105.04206.pdf

YOLObile论文地址:https://arxiv.org/pdf/2009.05697.pdf

Yolov5代码地址:https://github.com/ultralytics/yolov5

Yolov4论文地址:https://arxiv.org/pdf/2004.10934.pdf

Tiny YOLOv3代码地址:https://github.com/yjh0410/yolov2-yolov3_PyTorch

Yolov3论文地址:https://arxiv.org/pdf/1804.02767.pdf

YoloV2(Yolo9000)论文地址:https://arxiv.org/pdf/1612.08242.pdf

YoloV1论文地址:https://arxiv.org/pdf/1506.02640.pdf


除了基线的频繁迭代更新之外,还有很多针对yolo的优化精简版本,如下表所示:

在如此众多的yolo版本中,除了官方的评测数据之外,有没有更加直观的方式来对比各种不同版本的yolo性能呢?

很早之前郑老师就幻想着能有一个集成各种yolo的版本,能够对图片,视频,实时码流进行对比,于是就有了这个YoloAll的想法。希望能在一个software里面对同一张图片,同一段视频,或者同一个camera的码流进行对比分析。

 


2

YoloAll演示



下面是一段YoloAll的演示视频。目前支持yolo_v3, yolo_v5, yolox, yolo_fastest四个版本;并且支持从图片,视频(mp4)以及camera进行推理分析。



02:27

3

结构介绍



YoloAll使用pyqt设计,整体工程结构如下图所示,其中model_zoo下面放置了所有支持的yolo版本,包括里面的各种小版本。

目前支持4个版本的yolo,并且提供了简单的扩展方法,可以把你喜欢的yolo扩展进去。详情见下章节的“扩展模型”。

  • Yolov3:https://github.com/eriklindernoren/PyTorch-YOLOv3

  • Yolov5:https://github.com/ultralytics/yolov5

  • Yolox:https://github.com/Megvii-BaseDetection/YOLOX

  • Yolo-fastest:https://github.com/dog-qiuqiu/Yolo-FastestV2

感谢以上开源项目以及作者,感谢带来了这么好的yolo项目。




4

使用教程



  • 下载源码


git clone https://github.com/DL-Practise/YoloAll


  • 安装依赖

下载的yolo版本全部放在model_zoo目录下面,进入到model_zoo中的各个yolo版本中,执行:


pip install -r requirements.txt


  • 下载预训练模型

当前的YoloAll对于每个yolo版本已经内置了一个最小模型,如下图所示。

如果还想测试其他较大模型,如yolov5_l、yolox_l等,可以从如下链接下载预训练模型,并放置在对应的目录下面:

Yolov3:

  • https://pjreddie.com/media/files/yolov3.weights

下载完毕之后,将模型放在model_zoo/yolov3下面即可

Yolov5:

  • https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5s.pt

  • https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5m.pt

  • https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5l.pt

  • https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5x.pt

下载完毕之后,将模型放在model_zoo/yolov5下面即可

Yolox:

  • https://github.com/Megvii-BaseDetection/YOLOX/releases/download/0.1.1rc0/yolox_s.pth

  • https://github.com/Megvii-BaseDetection/YOLOX/releases/download/0.1.1rc0/yolox_m.pth

  • https://github.com/Megvii-BaseDetection/YOLOX/releases/download/0.1.1rc0/yolox_l.pth

  • https://github.com/Megvii-BaseDetection/YOLOX/releases/download/0.1.1rc0/yolox_x.pth

下载完毕之后,将模型放在model_zoo/yolox下面即可

此时,重新打开界面,能够显示出所有的yolo版本:

  • 扩展模型

YoloAll提供了非常方便的接口来集成自己的yolo版本。将自己的yolo版本放置在model_zoo中。并提供一个api.py的模块,里面实现如下方法:


#获取支持的子类型接口。例如yolov5中支持yolov5_s;yolov5_m; yolov5_l等def get_support_models()
#创建模型。根据模型的子类型名称,以及设备类型创建模型def create_model(model_name='yolov5_s', dev='cpu')
#进行一次推理,传入的img_array为opencv读取的图片def inference(img_array)


具体可以参考model_zoo下面的YoloV5/api.py, YoloX/api.py等。


END



双一流大学研究生团队创建,专注于目标检测与深度学习,希望可以将分享变成一种习惯!

整理不易,点赞鼓励一下吧↓

浏览 133
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐