YOLO了解
yolo检测原理
- yolo是目标检测模型,目标检测包含物体分类、位置预测两个内容。目前yolo的开发公司官网为:https://docs.ultralytics.com/zh
- 截止到目前2024年10月,最新的是yolo11。
- 关于YOLO的介绍可以参考这篇文章:https://zhuanlan.zhihu.com/p/94986199
- 总结一下文章内容:
- YOLO是region-free的方法,在此之前的R-CNN是region-based方法,yolo优点是更快,不需要分两步。
- yolo在检测时,将一个图片分为多个grid,然后每个grid预测B个边界框,要求边界框中心点位于改grid内,同时预测边界框的长和宽。对于一个物体位于多个grid的情况,通过计算置信度,由于实际物体位于中心的grid交并比肯定最大,因此可以删除其余包含
- 关于yolo不同版本的综区别述介绍可以参考:https://blog.csdn.net/daydayup858/article/details/130018935
- YOLO原本是在论文中提出的一个网络模型,由论文作者开发出了YOLO V1/2/3,而后由其他人和公司开发出了后来的YOLO V5、V10等版本。目前主流的是由 ultralytics 公司维护的YOLO,官网为:https://docs.ultralytics.com/zh
yolo环境搭建
- 我们根据官网指导,搭建最新版的yolo v11开发环境。
- 由于我们之前使用Conda安装了Pytorch和CUDA,因此我们这里依然选用Conda进行YOLO的安装。当然也可以通过docker进行安装。
- 首先,我们按照我们之前的文章1、Pytorch框架搭建安装好Pytorch开发环境。
我们将原本安装Pytorch的环境克隆一份,创建YOLO11新环境。注意:克隆环境并不会克隆pytorch,Conda采用的是硬链接的方式。(假的,被骗了。发现整整复制了5个G)- 我们在原本Pytorch的环境中,执行以下命令安装YOLO 11:
pip install ultralytics
- 安装好后,测试安装成功。
测试目标检测模型
-
YOLO支持CLI操作,不需要写python代码,就可以直接使用命令行指挥YOLO进行识别。图片如下:810*1080
-
首先,我们新建一个空白文件夹,将我们要识别的图片放进去。如下:
-
然后在conda中用命令行切换到该文件夹。将图片路径传给YOLO,执行命令
yolo predict model=yolo11n.pt source='bus.jpg' device=0
-
可以看到,这里使用的模型yolov11n.pt是预训练好的模型,YOLO会去github仓库上下载该模型。
-
对于YOLO 的每个版本,都会有官方版的几个预训练模型,这些模型是在COCO数据集上训练的,包含了33万张图片,涵盖了常见的80个常见物体类别。不同模型的大小参数如下:
-
在这些参数中,size表示图像像素点大小。mAP表示模型检测交并比精度,Speed CPU ONNX表示在CPU上运行时的速度,Speed T4表示在T4 GPU上运算时的速度,该GPU参数如下:FLOPs(B)表示模型执行时需要计算的次数,其中B表示十亿次,10^9,6.5 BFLOPs相当于 6.5GFLOPs。
-
可以看到执行后的文件夹内容如下:
- 其中yolov11n.pt是我们下载下来的网络模型。这里我测试运行了多个模型,因此有多个模型文件。
- 而runs/detect/predict文件夹下面保存的是模型识别的结果:
-
最终识别结果如下,说明我们成功配置好了YOLO环境。
-
在实际项目中,我们不会通过CLI调用YOLO,而是会通过python脚本调用YOLO,原理相同。
参考
Conda安装YOLO
COCO数据集介绍