继续我们的目标检测算法的分享,前期我们介绍了SSD目标检测算法的python实现以及Faster-RCNN目标检测算法的python实现以及yolo目标检测算法的darknet的window环境安装,本期我们简单介绍一下如何使用python来进行YOLOV3的对象检测算法
![324f926837eb1953654b05a791e00e91.png](https://img-blog.csdnimg.cn/img_convert/324f926837eb1953654b05a791e00e91.png)
YOLOV3对象检测
YOLOV3的基础知识大家可以参考往期文章,本期重点介绍如何使用python来实现
图片识别
1、初始化模型
14-16 行:
模型的初始化依然使用cv下的DNN模型来加载模型,需要注意的是CV的版本需要大于3.4.2
5-8行:
初始化模型在coco上的label以便后期图片识别使用
10-12行:
初始化图片显示方框的颜色
![f99fb29511ef19d73ec2829ca7356b3e.png](https://img-blog.csdnimg.cn/img_convert/f99fb29511ef19d73ec2829ca7356b3e.png)
初始化模型
2、加载图片,进行图片识别
输入识别的图片进行图片识别,这部分代码跟往期的SSD 以及RCNN目标检测算法类似
19-20行:输入图片,获取图片的长度与宽度
25-29行:计算图片的blob值,输入神经网络,进行前向反馈预测图片
只不过net.forward里面是ln, 神经网络的所有out层
![a178e0a6f84349746e1c1318a543bd38.png](https://img-blog.csdnimg.cn/img_convert/a178e0a6f84349746e1c1318a543bd38.png)
图片识别
3、遍历所有的out层,获取检测图片的label与置信度
遍历out层,获取检测到的label值以及置信度,检测到这里YOLOV3以及把所有的检测计算完成,但是由于yolov3对重叠图片或者靠的比较近的图片检测存在一定的问题,使用YOLOV3使用非最大值抑制来抑制弱的重叠边界
![a47dbf31800acebba7fdd026549d4e9b.png](https://img-blog.csdnimg.cn/img_convert/a47dbf31800acebba7fdd026549d4e9b.png)
遍历图片
竟然把墨镜识别了手机,体现了YOLOV3在重叠图片识别的缺点
![d47fdf0e7219a41f2844629ef4a6287a.png](https://img-blog.csdnimg.cn/img_convert/d47fdf0e7219a41f2844629ef4a6287a.png)
4、应用非最大值抑制来抑制弱的重叠边界,显示图片
56: 使用非最大值抑制来抑制弱的重叠边界
58-59行:遍历所有图片
61-62行:提取检测图片的BOX
64-68行:显示图片信息
70-71行:显示图片
![e5cd3447d2306b452afbf37d3a7556c0.png](https://img-blog.csdnimg.cn/img_convert/e5cd3447d2306b452afbf37d3a7556c0.png)
显示图片
利用python来实现YOLOV3,与SSD 以及RCNN代码有很多类似的地方,大家可以参考往期的文章进行对比学习,把代码执行一遍
![18f47a78a5e69d33b9478d096a3f23ca.png](https://img-blog.csdnimg.cn/img_convert/18f47a78a5e69d33b9478d096a3f23ca.png)
图片识别
视频识别
进行视频识别的思路:从视频中提取图片,进行图片识别,识别完成后,再把识别的结果实时体现在视频中,这部分代码结合前期的视频识别,大家可以参考多进程视频实时识别篇,因为没有多进程,检测速度很慢,视频看着比较卡
1、初始化模型以及视频流
![345bc2506327c960705fe139850cef91.png](https://img-blog.csdnimg.cn/img_convert/345bc2506327c960705fe139850cef91.png)
初始化
2、从视频中提取图片,进行图片的blob值计算,进行神经网络的预测
![dc837e0784fe57396ab1788cea7b68b9.png](https://img-blog.csdnimg.cn/img_convert/dc837e0784fe57396ab1788cea7b68b9.png)
提取图片进行识别
3、提取检测到图片的置信度以及ID值
![ce348e8c1686bc800da0239d5dbca320.png](https://img-blog.csdnimg.cn/img_convert/ce348e8c1686bc800da0239d5dbca320.png)
提取图片信息
4、应用非最大值抑制来抑制弱的重叠边界,显示图片
![b6ec9f0b93ab4f4b9e19a612cbe7c333.png](https://img-blog.csdnimg.cn/img_convert/b6ec9f0b93ab4f4b9e19a612cbe7c333.png)
检测图片
5、关闭资源,显示图片处理信息
![e6a52946bbf99032781bfda1887e631f.png](https://img-blog.csdnimg.cn/img_convert/e6a52946bbf99032781bfda1887e631f.png)
每个目标检测算法都有自己的优缺点,个人感觉,在精度要求不是太高的情况下SSD检测算法可以实现较快的速度实现,毕竟精度差不多的情况下,我们希望速度越快越好
![5b12b17c2eed533aa62b2469ce407683.png](https://img-blog.csdnimg.cn/img_convert/5b12b17c2eed533aa62b2469ce407683.png)
截图视频图片