当前时代,人工智能正处于风口浪尖的阶段,而人工智能领域里的目标检测正是发展人工智能的关键一环。近些年来目标检测算法取得了显著的成就,yolo就是其中最典型的代表,它打破了常规目标检测算法的枷锁,使检测速度更加迅速,检测范围更加广泛。
You Only Look Once:Unified, Real-Time Object Detection
你只需看一次“--统一实时的的目标检测框架
YOLO算法使用深度神经网络进行对象的位置检测以及分类,主要的特点是速度够快,而且准确率也很高,采用直接预测目标对象的边界框的方法,将候选区和对象识别这两个阶段合二为一。
之前的目标检测方法例如,DPM、R-CNN、Faster R-CNN等都是需要提取候选框,然后进行一次次的推断,需要进行复杂的上下游处理工作。
yolov1是将目标检测方法当作回归问题来解决,不再需要提取候选框,能够快速单方向的实现端到端的操作,捕捉全图上下文的信息。yolov1对大物体的识别效果更好,能够达到45帧每秒的速率,迁移泛化性高。但是对小物体的检测检测效果较差。
a.将一幅图像分成s×s个网格,(如图就是7×7个网格),如果某个目标的中心落在这个网格内,那么这个网格就负责预测这个目标。
b.每个网格要预测B个bounding box,每个bounding box除了要预测位置外,还要附带预测一个confidence值。每个网格还要预测C个类别的分数。 (如图中,就是一个grid cell预测两个bounding box值,而且每个bounding box要预测4个位置参数,以及一个confidence值。)
2.得到两个全连接层回归得到7×7×30的特征矩阵。
PS:将7×7×1024的数据拉平,然后位移到一个有4096个神经元的全连接层中 再把4096维的向量位移到有1470个神经元的全连接层中。最后reshape
如图所示,一个grid cell预测两个bounding box值,而且每个bounding box要预测4个位置参数,以及一个confidence值。 其中还有20位是判断物体的条件概率。
1.每个grid cell预测两个bounding box,每个bounding box含有两个confidence值(置信度)然后由一个grid cell的置信度乘上20个grid cell类别的条件概率,就成为了全概率
2.置信度过滤: 将置信度为0的bounding box自动排列到最后,并过滤掉。
3.非极大值抑制: 将是某一类别的最大概率的bounding box拿出来,然后将所有的bounding box是该类别的概率与其比较。 如果两个bounding box的IOU大于某个阈值,认为两个bounding box重复识别了一个物体,将低置信度的bounding box滤除掉。
1.标签ground truth框中心点落在哪个grid cell中,就应由哪个grid cell预测这个物体
2.每个grid cell预测B个bounding box
3.与ground truth框IOU最大的bounding box负责预测这个物体
4.每个grid cell只能检测一个物体
5.包含(不包含)ground truth的grid cell/bounding box按照损失函数分别处理。
参照网上的知识,以及视频,大概了解了yolo的基本概念,以及网络结构。对目标检测有了一个大概的了解 ,通过对yolov1的学习,知道了目标检测在我们日常生活中的的应用是如此的广泛。接下来的任务就是争取将yolov1投入到实践中,争取跑通yolov1.