object detection

来源:互联网 发布:led电子屏幕软件 编辑:程序博客网 时间:2024/05/29 15:47

什么是object detection

 

object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别。object detection要解决的问题就是在哪里,是什么,具体在哪里这整个流程的问题。然而,这个问题可不是那么容易解决的,物体的尺寸变化范围很大,摆放物体的角度,姿态不定,而且可以出现在图片的任何地方,更何况物体还可以是多个类别。故用一般的方法是比较难处理的,这也是为什么在深度学习兴起之前,ILSVRC检测比赛检测那么沉寂的原因,大家都做的太差了嘛~~不过随着Hinton在2012年的比赛用CNN虐杀其他团队之后,深度学习以及深度卷积网络再一次进入人们视线,这种比较困难的问题也渐渐有思路了。在开始接触物体检测和深度学习时,我想凭借深度学习强大的拟合能力,给它啥它都能学,最开始的想法是,先训练出一个网络能分出是否是物体,即先不管是什么物体,只要bounding box 与ground truth 的IOU大于某个阈值,就认为是正样本,小于某个阈值为负样本,然后直接训练,然后直接给它ground truth,然后用当前框位置与ground truth的欧式距离作为loss,让它自己去学习什么是object以及object在哪里呢,也就是说把这个任务当成分类问题+回归问题来做??通过这个网络在一张大图sliding windows,就能确定存在物体的区域,再根据回归,来使得bounding box框得更准。不过实际上,想想就能知道,这种方法是开始没有任何限制地去学习,这样会导致任务复杂度非常高,网络会不收敛,而且在测试的时候会非常慢,因为不知道在哪里有什么东西,需要sliding windows并且需要不同尺度的缩放,另外并且在RCNN的论文中提到了不加限制直接当回归来做实际效果并不是特别好。我觉得不好的原因可能是学习的复杂度太高,这相当于在一开始就没有给任何限制,让网络自己去根据自己预测的和真实的框的距离差去学习,这样子的话,同一种物品在不同位置以不同的大小都可以认为是全新的一个训练样本,完全去拟合这样的任务显然是不太可能的。所以说,这种问题一定要先降低任务复杂度,然后再去学习降低复杂度的等价任务。当然这是我看了这么多优秀论文得出的马后炮式的结论,不过这也恰好说明了Ross Girshick大神科研出RCNN这种跨时代的东东时,思路到底有多么地超前。他为了降低检测任务的复杂度,把检测任务最直观的在哪里(回归问题),转化成先用传统方法先定候选框(通过边缘特征啊,轮廓特征啊什么的使得整个问题的复杂度降低,我不是全图搜索object,而是只在符合proposals算法的区域来搜索),然后在确定是什么(是背景还是是某种物体),然后根据这些已经判断是物体的区域(object score分数高于阈值)来进行回归(精确位置所在)通过我以上的分析,我觉得检测最难做的是网络判断物体大致在哪里这个过程,而具体是什么,精确位置,当知道大致的位置后也就变得异常简单了。这个思路下来,也就是RCNN,Fast RCNN,Faster RCNN这一条线了。

原创粉丝点击