机器学习系列 (7)
目标检测之YOLO算法原理及Python实现
目标检测:
- 1.目标分类
- 2.目标定位
- 3.特征点检测
- 4.滑动窗口检测
- 5.卷积的滑动窗口实现
YOLO算法:
- 1.什么是YOLO
- 2.边界框(Bounding Box)回归
- 3.交并比(IOU)
- 4.非极大抑制(NMS)
- 5.Anchor box
- 6.候选区域(Region proposals)(optional)
- 7.YOLO算法总结
YOLO的Python实现:
- 见文章内容
申明
本文原理解释及公式推导部分均由LSayhi完成,供学习参考,可传播;代码实现部分的框架由Coursera提供,由LSayhi完成,详细数据及代码可在github查阅。
https://github.com/LSayhi/DeepLearning
优快云博客:https://blog.youkuaiyun.com/LSayhi
微信公众号:AI有点可ai(文末附有二维码,感谢您的关注)
一、目标检测
1.目标分类:
- 目标分类即对图像中的物体进行识别分类,是目标检测的第一阶,只要求分辨出对象的类别,常用卷积神经网络(CNN)实现。例如在自动驾驶应用中,目标分类的作用是识别出图片中的物体属于哪一个类别,属于是行人、汽车、自行车、红绿灯、护栏等。
2.目标定位:
- 目标定位即对图像中的物体进行位置识别,是目标检测的第二阶,要求输出对象的坐标信息,坐标常用中心点和长宽来表示。例如在自动驾驶中,目标定位的作用是确定图片中的行人、汽车等物体的具体位置。
3.特征点检测:
- 特征点检测即要对物体的某些特征进行识别,这可以通过神经网络输出相应特征点的坐标来实现,只需要把网络的输出改为特征点的坐标。例如在人脸识别应用中,识别出多组人脸特征点的信息,并根据识别出的特征点信息对此次检测的人脸进行识别。
4.滑动窗口检测:
- 滑动窗口检测即是要通过“滑动”检测窗口,对每一个窗口图像分别输入CNN进行识别,窗口大小可根据实际取值,例如图片像素为6286283,则可取正方形窗口边长为小于628的整数,然后滑动窗口到其它位置,按一定顺序遍历整张图片,输出每一次窗口里是否有物体,是什么物体,性能依赖于窗口大小的选取及滑动的步长,由于CNN需要一个个处理窗口图像,若步长和窗口较小,检测的精度提高,但需要很长的时间;如果步长和窗口较大,虽然时间减小,但可能会降低检测精度。