cs231n_2018_lecture11_notes_rnn视觉应用
这章节主要讲解RNN能在计算机视觉领域完成什么任务。
目前为止好像都是以线性分类器作基础讲解神经网络的,具体实现比如网络最后一层有4096神经元而我们要做个10分类,那么需要添加10个神经元与前面的4096个神经元全连接,这样输出的10个数值看作是类别得分,分类的概念在之前讲过。但应用绝非局限于图像分类任务。这里就要介绍另外两个常见任务:检测detection和分割segmentation。展开可以分为1.单目标检测(Classification + Localizatio);2.多目标检测object detection;3.语义分割semantic segmentation;4.实例分割instance segmentation。
应用1.语义分割semantic segmentation
该任务即从给定的一幅图中按像素点分类,但不同于普通图像分类输出一维标量,它输出的是二维的分割图。
解决方案一:滑动窗口Sliding Window
解决方案二:全卷积Fully Convolutional
解决方案三:全卷积Fully Convolutional+downsampling+upsampling
可参考论文:Long, Shelhamer, and Darrell, “Fully Convolutional Networks for Semantic Segmentation”, CVPR 2015
Noh et al, “Learning Deconvolution Network for Semantic Segmentation”, ICCV 2015
其中上采样upsampling的方法思路基本为刚开始怎样下采样的,然后就采取逆过程完成上采样。
pooling对应逆过程unpooling:
strided convolution对应逆过程transpose convolution/deconvolution:
应用2.三维重建Multi-view 3D Reconstruction
由应用1发展而来?该任务即给出一个对象的几种视角的二维图像从而绘制出立体视图。可参考论文有:Choy, C. B., Xu, D., Gwak, J., Chen, K., & Savarese, S. (2016, October). 3d-r2n2: A unified approach for single and multi-view ; 3d object reconstruction. In European Conference on Computer Vision (pp. 628-644). Springer, Cham.
实现手段:
实现效果:
应用3.单目标检测(Classification + Localization)
该任务的目的是实现单个目标的识别、定位,一条神经网络实现图像分类,一条神经网络实现目标定位:
分类问题一直有说,输入图片输出物体的类别;对定位问题的解决思路看下面应用4的解决方案一和二,输入图片输出方框在图片中的位置。
应用4.多目标检测
解决方案一:回归思想
解决方案二:滑动窗口
仍然将定位问题看作回归,不同的是不再输入整幅图像,而是取大小不同的框,让框出现在不同地方截取图像,在每个框上判断类别,记录得分,并记录框的顶点位置信息。
针对滑动窗口带来的数量灾难问题,有提出“Region Proposals ”,具体实现方法有比如“Selective Search”、“EdgeBoxes”,可以参考论文:Alexe et al, “Measuring the objectness of image windows”, TPAMI 2012 ;Uijlings et al, “Selective Search for Object Recognition”, IJCV 2013 ;Cheng et al, “BING: Binarized normed gradients for objectness estimation at 300fps”, CVPR 2014 ;Zitnick and Dollar, “Edge boxes: Locating object proposals from edges”, ECCV 2014 .
解决方案三:R-CNN
使用了Region Proposals,利用图像中的纹理、边缘、颜色等信息,可以保证在选取较少窗口(几千甚至几百)的情况下保持较高的召回率(Recall)。
Selective Search + CNN + SVM+Bbox reg
1.在图像中确定约1000-2000个候选框 (使用选择性搜索Selective Search)
2.每个候选框内图像块缩放至相同大小,并输入到CNN内进行特征提取
3.对候选框中提取出的特征,使用分类器判别是否属于一个特定类
4.对于属于某一类别的候选框,用回归器进一步调整其位置
(该四点总结摘自原文:https://blog.****.net/v_JULY_v/article/details/80170182)
解决方案四:Fast R-CNN
Selective Search + CNN + ROI+(softmax+Box reg)
1.在图像中确定约1000-2000个候选框 (使用选择性搜索Selective Search)
2.对整张图片输进CNN,得到feature map
3.找到每个候选框在feature map上的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层
4.对候选框中提取出的特征,使用分类器判别是否属于一个特定类
5.对于属于某一类别的候选框,用回归器进一步调整其位置
(该5点总结摘自原文:https://blog.****.net/v_JULY_v/article/details/80170182)
解决方案五:Faster R-CNN
CNN+RPN + CNN + ROI+(RPN loss)+(NN loss)
1.对整张图片输进CNN,得到feature map
2.卷积特征输入到RPN,得到候选框的特征信息
3.对候选框中提取出的特征,使用分类器判别是否属于一个特定类
4.对于属于某一类别的候选框,用回归器进一步调整其位置
(该4点总结摘自原文:https://blog.****.net/v_JULY_v/article/details/80170182)
解决方案六:Mask R-CNN(目前表现最好?)
解决方案七:YOLO / SSD
不使用proposals的加速。(那么怎么优化的?待学习理解)(YOLO->将图像划分成7*7的网格,使用了回归思想,精度没有faster r-cnn高但速度很快;SSD->YOLO的回归思想+Faster R-CNN的Anchor机制)
对目标检测的网络结构总结:
可以看看这篇博客对目标检测的总结!
应用5.密集字幕Dense Captioning
该任务集成了目标检测object detection和图像字幕image caption。
应用6.VisualGenome
由应用5发展而来。
应用7.Scene Graph Generation
由应用5发展而来。
应用8.立体目标检测
跟应用4的差别在一此处不是用矩形框标出目标位置,而是用立体框标出整个目标空间。
解决方案一:Monocular Camera
解决方案二:Camera + LiDAR
解决方案三:RGB-Depth Camera