计算机视觉的方向:图像分类、目标检测、图像分割、目标跟踪、图像去噪、图像增强、风格化、三维重建、图像检索、GAN
实际中的图像分类,如表情分类。用的是人脸和嘴部的location,这就是目标检测的先验在。同时HOG行人检测也是用来HOG+SVM的detect,即目标检测在前,图像分类在后的。
图像分类:多类别图像分类、细粒度图像分类、多标签图像分类、实例级图像分类、无监督图像分类。
分类方法:
- 传统机器学习:经典的特征算子+经典分类器组合学习,HOG+SVM
- 深度学习:Alexnet, VGG,GoogleNet,ResNet,DenseNet,SENet
目标检测:
- 目标的类别+概率:这是一个分类任务
- 目标的具体位置:location的任务
目标检测算法的三个模块:检测窗口的选择,图像特征的提取,分类器的设计
区域选择、提取特征、分类回归
- 传统方法:Haar+Adaboost, HOG+SVM
- 深度学习:RCNN系列在工业界的应用非常广泛,YOLO,SSD
图像分割:
目标跟踪:
2.目标检测
CV问题分为三类:图像分类、目标检测、神经风格迁移
目标检测:location定位问题。
总结:滑动窗口卷积——精确的检测框YOLO的原理、NMS非极大值抑制等等
没有很多数据时,就要自己手工设计特征。但是手工工程,如精心设计特征或者设计网络,非常需要技巧、洞察力和经验。
2.1 目标检测——吴恩达机器学习
object location目标定位,location问题就是在图片中用bounding box标记处位置。
2.1.1 目标检测的方法:滑动窗口法——车辆检测
- 先训练一个车辆分类的网络——CNN图像分类网络
- 对整张图像预测——输入整张图像,然后选择红色小框进入预测网络,判断红色框内有没有汽车
2.1.2 滑动窗口的卷积实现
滑动窗口算法可以用卷积方式实现,以提高运行速度,节约重复运算成本。
这里的关键就是将全连接层改为卷积层。改之前的滑动窗口需要反复进行CNN正向计算,改之后用卷积代替滑动窗口,不管原始图片多大,只需要进行一次CNN正向计算,就可以得到所有滑动窗口的预测结果,因为这里面共享了很多重复计算部分。
- 在卷积层上应用滑动窗口提高了整个算法的效率
- 但是缺点是:边界框的位置可能不够准确
2.1.3 滑动窗无法完全覆盖目标的问题
滑动框由于size和step的原因,无法正好覆盖目标,这时该怎么办?这些边界框没有一个能完美匹配汽车的位置。
且有些时候最完美的边界框甚至不是一个正方形,而是长方形。有没有办法让这个算法的输出更加精准呢?YOLO
you only look once。
第一个格子里面什么都没有,其标签的第一个Pc=0。然后这张图有两个对象,YOLO的做法是取两个对象的中点,然后中点在哪个格子里,这个对象就属于哪个格子。
网格划分的越小,一个网格内可能就只有一个目标的中心,就不会把多个目标都划在一个网格内,这样便于区分开多个目标。
3.数据增强 data augmentation
垂直镜像对称
随机裁剪:不是一个完美的数据增强方法,但在实践中还是很有用的,随机裁剪构成了很大一部分的真实图片。
彩色转换:在RGB三个通道上加上不同的失真值。在实践汇总,RGB的值是根据某种概率分布来决定的。使得算法对照片的颜色变化更鲁棒。