object detection学习

现在有google的Inception V、ImageNet等基于深度学习的物体检测网络,并且效果非常好。

但很多思想都来源于2014年的一片文章:Rich feature hierarchies for accurate object detection and semantic segmentation

这篇文章是第一次CNN用在图像检测上并给出大量的实验结果。

文章地址:http://xueshu.baidu.com/s?wd=paperuri%3A%28f818e23d213da893fc890f5d96ef4cb3%29&filter=sc_long_sign&tn=SE_xueshusource_2kduw22v&sc_vurl=http%3A%2F%2Fwww.arxiv.org%2Fpdf%2F1311.2524.pdf&ie=utf-8&sc_us=7755102487057457737

这篇文章解决的是在有较少量的训练数据集的时候的物体检测。

两个博客:http://blog.csdn.net/u011534057/article/details/51240387

与http://blog.csdn.net/u011534057/article/details/51218218

论文中模型的理解:

1、首先根据数据集ImageNet ILSVC 2012训练一个CNN的分类模型,模型的output为1000维。

(这个数据集是一个类别数据库,即一张图片对应一个类别,共1000个类别,这个数据集是当作迁移学习用的)

网络的最后两层为4096*1000维。

2、采用数据集PASCAL VOC 2007,这个数据集不是一一对应的类别关系,这个数据集是为物体检测服务的。

数据集中每张图片中人为用框框出来某一类别的图片,并进行标注,如一个图片中可能有狗,自行车,人等。

这个数据集中目前总共包括20个类别,共10000张图片(相对来讲数据量挺大的了,平均每一个类别500张)。

训练过程:

(1)把第一步中训练得到的网络的最后一层换成4096*21维(20类+1背景);

(2)对pascal vol 2007数据集中的每张图片p1,采用selective search算法生成2000张左右可能包括物体的图,

这些图片进行一些变换后变成固定的维度;

(3)针对这2000张的每一张,如果与p1中标注过的框(如框住狗的框)的重合度超过0.5,

那么把它当作正样本(即维度为21的output结果的y对应类别位置设为1),否则当作负样本(第21维背景位置设为1);

(4)利用上面生成的这些样本进行训练(或者说调优fine-tunning)。由于负样本很多,影响训练速度,

因此采用较为苛刻的做法选择负样本,如果这个负样本与所有标注过的框框交叉少于0.3才作为负样本;

测试过程:

(1)对于这20个类别,针对每个类别构造二分类的SVM分类器,分类器的输出为是否这个类,

这个SVM分类器的训练数据不是单纯的为上述的正样本与负样本对应的CNN特征,

而是把整个物体都包括进来的框才能作为正样本对应的特征。为什么CNN采用简单的0.5正样本而SVM采用严格正样本呢?

这是因为CNN需要大量的数据训练,在数据量较少时容易发生过拟合,因此要求比较松,对CNN鲁棒性也好,

而SVM适用于小量样本,因此SVM使用严格正样本。

至于负样本,则采用交叉少于0.3(IOU为0.3)的样本作为负样本。

(2)针对一个新图片,由selective search得到2000个左右的框图后,将其输入到每一个SVM中判断此图为某一物体

还是背景。2000个框图对应的特征矩阵为2000*4096,而N个分类器的参数为4096*N(每个分类器对应4096个参数),

将2000*4094的矩阵乘以4096*N的矩阵,得到的矩阵为2000*N的矩阵,最后的结果需要分析这个矩阵。

(3)2000*N的矩阵的每一行可以表示为:这2000个框图类别Ni的概率。针对这些概率,

采用非极大值抑制(NMS)算法去掉没用的矩阵,保留最可能的矩阵。

(4)在得到了最可能的矩阵后,我们并不能说框中的图像就是我们所要的图形,因为这些图形只是用selective search得到的,

因此我们需要一个精修的过程。

框图精修的过程可以理解为一个线性变换,即一个框在经过平移、缩放后与目标图形的框相符合。

因此,这里对于一个框,需要找到一组线性变换的四个参数,来对框进行线性变换。

这四个参数我们通过回归模型来得到,同样需要用到上面提到的正样本。

对于上面的正样本,由我们能计算得到他们与真正的框的线性变换参数,因此我们可以用属于同一类别的这些正样本,

进行梯度下降算法或者最小二乘法,得到框与线性变换参数的对应关系,即输入一个框,得到一组参数。

如果用梯度下降算法来回归的话,那么输入为正样本框的位置参数,输出为线性变换参数。

因此,对(3)得到的最可能的矩阵,输入上面的回归模型,得到线性变换参数,即可得到真正的物体框。


关于Bounding-Box regression的一个博客:http://blog.csdn.net/u011534057/article/details/51235964

关于整个过程一个非常详细的博客:http://blog.csdn.net/u011534057/article/details/51218250

——————————————————————————————————————————————

关于这篇文章的一个博客:https://zhuanlan.zhihu.com/p/22287237?refer=startdl

针对第一步的候选区域提取,作者采用的是这篇文章的思想:Selective Search for Object Recognition

这篇文章地址:https://www.koen.me/research/pub/uijlings-ijcv2013-draft.pdf

这篇文章内容太多了。。。

关于这篇文章的一个博客:http://blog.csdn.net/mao_kun/article/details/50576003

这篇文章的思想主要是:

首先利用文章Efficient Graph-Based Image Segmentation的算法将图片分成不相交的多个部分,

然后根据这些不相交的部分的相似度,构造类似于霍夫曼树的结构,在构建完成后,

树中的每一个节点都将作为一个生成的结果图片用于判别。

tips:这里在构建树的过程中,需要计算节点之间的相似性,节点相似性的计算包括了多个方面:

如颜色直方图、纹理相似性、大小相似性等。

其中纹理相似性的计算用到了SIFT算法,关于SIFT算法的一个很好的博客:

http://blog.csdn.net/zddblog/article/details/7521424

——————————————————————————————————————————————

关于文章Efficient Graph-Based Image Segmentation。

这篇文章是将图片中的像素与像素之间的关系作为一个Graph来处理。采用迭代算法,

依次将距离接近的像素归类到一个图像块中。

关于这篇文章一个很好的博客:http://blog.csdn.net/surgewong/article/details/39008861

——————————————————————————————————————————————

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值