一、知识梳理
二、重点讲解
1、RCNN
1)知识补充:
(1)IoU通过面积表示图像区域的的重合程度,训练网络的时候,我们常依据侯选区域和标定区域的IoU值来确定正负样本。
(2)非极大值抑制(Non-Maximum Suppression又称NMS) 实例参考
本质就是抑制不是极大值的元素,可以理解为局部最大搜索。这个局部代表的是一个邻域,邻域有两个参数可变,一是邻域的维数,二是邻域的大小。其目的是要去除冗余的检测框,保留最好的一个。步骤为:(score为区域的置信度,即分类得分)
2)思想
选出图片的候选框,放入CNN中,使用SVM分类。因此,R-CNN实际上是对候选框进行分类识别。
2)步骤与框架
(1)获取输入图像
(2)提取约2000个候选区域
(3)将候选区域分别输入CNN网络(这里需要将候选图片进行缩放)
(4)将CNN的输出输入SVM中进行类别的判定(SVM也会矫正候选区)
3)计算细节(损失函数)
(1)损失函数(分类的损失函数还是交叉熵,边框的损失函数)
(2)在判定图块中需要加入背景,作为一个类别。
4)缺点
每个候选框中都有CNN需要训练,需要耗费大量算力。R-CNN中的CNN在训练时只训练一图片吗?在训练其他图片时候选框出现变化,是不是就需要加入2000个新的CNN并训练。
多个候选区域对应的图像需要预先提取,占用较大的磁盘空间(产生候选区,操作耗时比较长);针对传统CNN需要固定尺寸的输入图像,crop/warp(归一化)产生物体截断或拉伸,会导致输入CNN的信息丢失,即特征产生损失;每一个ProposalRegion都需要进入CNN网络计算,上千个Region存在大量的范围重叠,重复的特征提取带来巨大的计算浪费。(每一个proposal均需要单独进行特征提取,重复计算量大)
三、问题讲解
问题1:为什么反卷积称为转置卷积?
问题2:针对目标检测和定位问题,为什么使用网络同时对两个任务进行训练而不是分别训练两个任务,再固定参数训练下个任务(类似迁移学习)?
在一般情况下,对整个系统进行联合调试会有较好的效果,因为有可能会出现特征的误匹配,从而更好的进行梯度的更新。在实际应用中更常见的做法是先对每个任务进行训练直至收敛,再进行联合调试。
问题3:姿态估计架构?
问题4:神经网络在完成回归任务时,与分类任务有何不同?
1)损失函数变为均方误差,softmax计算得到的是每个类别的出现概率与任务要求明显不符
2)最后一层往往不采用激活函数,直接用线性函数得到最后结果,因为激活函数会将线性加权的结果映到固定范围(不满足回归要求)
问题5:图像分割、目标定位、目标检测的标签?
图像分割标签:
目标定位标签:(标签为图像框或重要节点的坐标)
目标检测 标签:(含有两个部分一个是定位标签,类别标签。注:在判定类别时是对图像框进行判断,类别标签是对整个候选框的。与图像分割不同,其标签不是每个像素点的标签。)
四、作业
1.语义分割的概念,训练数据及label是什么
语义分割是指输入图像,并对图像中的每个像素进行分类.语义分割并不区分同类目标。训练数据集是图片,对于的标签是每个像素点所对应的类别。
2.转置卷积如何实现的
输入乘以卷积核在累加,是卷积操作的反操作。具体见下面例子:只是shape被还原,value是不同的。
公式化:证明其为什么叫转置卷积?
3.分类和定位的概念和目标检测有什么区别,它的损失函数是什么
分类:图像分类,根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来。
定位:对图片中与目标检测不同的是,对于定位,你会提前知道在图像中要寻找的物体的数量。
假设输入图像和分类类标,以及图像分类的真值对应:
- softmax损失,计算分类损失;
- L2损失,来衡量预测坐标和实际值的不同。
1.faster rcnn思想(大致流程及损失函数)rcnn系列如何一步步进行改进 参考链接1 参考链接2 参考链接3
流程:
损失函数:要分为RPN的损失和Fast RCNN的损失,计算公式如下,并且两部分损失都包括分类损失(cls loss)和回归损失(bbox regression loss)。
RPN分类损失:RPN网络的产生的anchor只分为前景和背景,前景的标签为1,背景的标签为0。在训练RPN的过程中,会选择256个anchor,256就是公式中的Ncls。由下式知此损失为交叉熵损失。
Fast RCNN分类损失:Fast RCNN是多分类的交叉熵损失(当你训练的类别数>2时,这里假定类别数为5)。在Fast RCNN的训练过程中会选出128个rois,即Ncls = 128,标签的值就是0到4。
回归损失:也可以看成是交叉熵,只不过并没有直接将概率差作为概率,而是引用了R(.)其公式如下:
由下式可知,对于每一个anchor 计算完L部分后还要乘以P*。因此,P*有物体时(positive)为1,没有物体(negative)时为0,意味着只有前景才计算损失,背景不计算损失。
改进过程:
R-CNN至Fast R-CNN:1.使用ROI Pooling可接受任意尺寸的输入,不需要归一化操作,解决了RCNN的输入大小必须统一的问题。2.不需要对每个候选框都提取特征,采用的映射方式从整张图片的feature map 上获取ROI feature区域,降低计算成本。
Fast R-CNN至Faster R-CNN:利用RPN生成候选区,减少耗时。
三者比较:
2.Yolo/ssd的主要思想 参考链接1 参考链接2 参考链接3(ssd)
它们将物体检测任务当做一个regression问题来处理,使用一个神经网络,直接从一整张图像来预测出bounding box的坐标、box中包含物体的置信度和类别probabilities,由于YOLO的物体检测流程是在一个神经网络里完成的,所以可以end to end来优化物体检测性能。流程如下:1.将图像resize到448 * 448作为神经网络的输入 。2.运行神经网络,得到一些bounding box坐标、box中包含物体的置信度和class probabilities 。3.进行非极大值抑制,筛选Boxes。
注:ssd采用多尺度的特征图。
3.Selective search(参考链接)方法主要作用 及rpn作用 参考链接
Selective search方法主要作用:根据图像的纹理信息,筛选出含有目标的候选框。
rpn作用:RPN,专门用来提取候选框,减少耗时,另一方面RPN可以很容易结合到Fast RCNN中,构成为一个整体。
五、面试总结
1.r-cnn、fast-rcnn、faster-rcnn原理及系列改进过程? 参考链接
2.yolov1、yolov2、yolov3原理及系列改进过程?
3.r-cnn、ssd、yolo对比?(思想,网络结构,损失函数三个方面)