目标检测数据集

Data Set

背景介绍

  目标检测:是计算机视觉的基础任务,近几年来,目标检测算法取得了很大的突破,主流趋势是两种,一种是one-stage算法,以SSD,YOLO为代表,另一类是two-stage算法,以Faster R-CNN为代表。广泛应用于生活之中,包括人脸检测自动驾驶等等方面,在近期的疫情之中也发挥了巨大的作用,在火车站,地铁口都应用到了人脸检测方法,检测到人脸后利用红外对体温进行测量,因此能手动搭建一些目标检测网络,对今后的学习工作都是非常有帮助的。

Dataset

一步法和两步法的区别

一步法:在原图像上面铺设大量锚点框(anchor),然后在特征提取的时候对锚点框进行一次回归和分类,得到最终的检测结果
两步法:在原图像上面铺设大量锚点框(anchor),然后先利用一个网络对锚点框进行一次分类和回归(粗筛选),得到建议框,然后再对建议框进行一次回归和分类得到最终的检测结果。
优缺点:经过上面的描述,容易看出,一步法的优点是效率高,只需要一步即可完成最终检测,没有耗时的第二步,但是缺点也很明显,因为没有粗筛选,导致正负样本极端不平衡,因此检测精度略低于两步法。两步法虽然检测速度慢,但是检测精度略高于一步法。随着网络的发展,硬件水平的提高,两类算法都在不断的进步之中,速度和精度都可以取得较好的结果。

数据集以及IOU,NMS介绍

数据集:为了方便模型调试的方便,我的博客中介绍的数据集是一种简单的Shape数据集,只有1000个训练样本,为了加快训练速度,数据集的大小我也调整为128x128,这个数据集只有三类物体,分别是圆形,三角形和正方形,图像数据为jpg文件,标签数据为xml文件,其中记录了物体出现的左上角和右下角坐标。
IOU(Intersection Over Union,交并比):用于评估语义分割算法性能的指标是平均IOU,交并比也非常好理解,算法的结果与真实物体进行交运算的结果除以进行并运算的结果。通过下图可以直观的看出IOU的计算方法。
IOU
NMS(Non-Maximum Suppression,非极大值抑制):简单地说,不是最大的我不要,在目标检测中,往往图像上存在大量先验框,会导致很多附近的框都会预测出同一个物体,但是我们只保留最大的一个预测结果,这就是非极大值抑制。
步骤:
(1)从最大概率矩形框F开始,分别判断A~E与F的IOU是否大于某个设定的阈值,假设B、D与F的重叠度超过阈值,那么就扔掉B、D;并标记第一个矩形框F,是我们保留下来的。
(2)从剩下的矩形框A、C、E中,选择概率最大的E,然后判断E与A、C的重叠度,重叠度大于一定的阈值,那么就扔掉;并标记E是我们保留下来的第二个矩形框
(3)重复步骤(2),直到所有的框都被抛弃或者保留
NMS

一些说明

  1. 在学习的时候,小伙伴可能会遇到一些代码上的困难,如tensorflownumpyopencv的用法,可以查看我的深度学习框架和Python常用库相关文章,里面会有一些简单的介绍,小伙伴们可以进行学习,最好是手动敲一敲,看一看。
  2. 因为这个博客是对学习的一些总结和记录,意在和学习者探讨和交流,并且给准备入门的同学一些手把手的教学,因此关于目标检测的算法参数设计,我都是自己尝试的,不是针对于这个数据集最优的参数,大家可以根据自己的实际需要修改网络结构。
  3. 实际的工程应用中,常常还需要对数据集进行大小调整和增强,在这里为了简单起见,没有进行复杂的操作,小伙伴们应用中要记得根据自己的需要,对图像进行resize或者padding,然后旋转对比度增强仿射运算等等操作,增加模型的鲁棒性,并且实际中的图像不一定按照顺序命名的,因此应用中也要注意图像读取的文件名。
  4. 为了让学习者看的方便和清晰,我没有使用多个文件对程序进行封装,因为我在刚开始学习模型的时候,查看GitHub代码,一个模型可能需要好几个文件夹,每个文件夹里面又有很多的代码文件,其中很多文件互相调用。虽然这样的工程项目是非常好管理和运行的,但是给初学者一种丈二和尚摸不着头脑的感觉,对此我深有体会。所以我就使用一个.py文件来封装,因此代码可能会有几百行,但是其中的各个函数和类都有自己的名字,可以保证学习者不会被纸老虎吓住。
  5. 在目标检测学习中,我会列举出一些经典的目标检测模型,因为模型太多,并且仍在不断的更新进步之中,所以大家可以联系我,和我进行沟通和交流,或者推荐给我一些优秀的模型。
  6. 关于问题的交流,图像的数据,需要的同学可以到主页查看我的QQ或者邮箱,我会非常荣幸的提供力所能及的帮助,小伙伴加好友的时候一定要记得备注,不然我可能会忽视一些粗心的小伙伴。

小结

  目标检测是计算机视觉的基础任务,也是非常重要的任务之一,自从深度学习的时代到来,各种神经网络结构百花齐放,很难说出最好的目标检测方法,可能一个方法适用于很多数据,但也不能说明某一个算法一定优于另一个算法,我们要做的就是尽可能多的学习各种各样的深度学习模型,然后吸取这些模型成功的原因,投入到自己的工程应用之中。

-------------本文结束感谢您的阅读-------------
0%