目标检测算法

图像识别三大任务

  • 目标识别:或者说分类,定性目标,确定目标是什么
  • 目标检测:定位目标,确定目标是什么以及位置
  • 目标分割:像素级的对前景与背景进行分类,将背景剔除

目标检测定义

识别图片中有哪些物体以及物体的位置

目标检测中能检测出来的物体取决于当前任务(数据集)需要检测的物体有哪些。

目标检测的位置信息一般由两种格式:

  • 极坐标表示:(xmin, ymin, xmax, ymax)
    • xmin,ymin:x,y坐标的最小值
    • xmin,ymin:x,y坐标的最大值
  • 中心点坐标:(x_center, y_center, w, h)
    • x_center, y_center:目标检测框的中心点坐标
    • w,h:目标检测框的宽、高

 应用:

  • 道路检测
  • 动物检测

  • 商品检测

  • 车牌检测

  • 菜品检测

  • 车型检测

 虚拟环境安装 

pip3 install virtualenv

配置参数

export WORKON_HOME=$HOME/virtualenv
source /usr/local/bin/virtualenvwrapper.sh

 新建虚拟环境

mkvirtualenv + -p  /user/bin/python(python版本所在位置) + test(虚拟环境名称)

 进入虚拟环境

workon test

 安装环境包

pip install -r requirements.txt

目标检测算法分类:

  • 两步走的目标检测:先进行区域推荐,而后进行目标分类

    • 代表:R-CNN、SPP-net、Fast R-CNN、Faster R-CNN
  • 端到端的目标检测:采用一个网络一步到位

    • 代表:YOLO、SSD

输入一张图片,经过其中卷积、激活、池化相关层,最后加入全连接层达到分类概率的效果

目标检测算法_第1张图片

  • 分类的损失与优化

在训练的时候需要计算每个样本的损失,那么CNN做分类的时候使用softmax函数计算结果,损失为交叉熵损失

 目标检测算法_第2张图片

  • 常见CNN模型

 目标检测算法_第3张图片

 检测的任务:

  • 分类:
    • N个类别
    • 输入:图片
    • 输出:类别标签
    • 评估指标:Accuracy

目标检测算法_第4张图片 

  • 定位:
    • N个类别
    • 输入:图片
    • 输出:物体的位置坐标
    • 主要评估指标:IOU

目标检测算法_第5张图片 

 (x,y,w,h)有一个专业的名词,叫做bounding box。

在目标检测当中,对bbox主要由两种类别。

  • Ground-truth bounding box:图片当中真实标记的框
  • Predicted bounding box:预测的时候标记的框

 

 检测的评价指标

任务 description 输入 输出 评价标准
检测和定位 在输入图片中找出存在的物体类别和位置 图片 类别标签(categories)和 位置(bbox(x,y,w,h)) IoU (Intersection over Union) mAP 

定位的简单实现 

增加一个全连接层,即为FC1、FC2

  • FC1:作为类别的输出

  • FC2:作为这个物体位置数值的输出

目标检测算法_第6张图片 

 假设有10个类别,输出[p1,p2,p3,...,p10],然后输出这一个对象的四个位置信息[x,y,w,h]。

  • 对于分类的概率,还是使用交叉熵损失
  • 位置信息具体的数值,可使用MSE均方误差损失(L2损失)

对于输出的位置信息是四个比较大的像素大小值,在回归的时候不适合。目前统一的做法是,每个位置除以图片本身像素大小。 

你可能感兴趣的:(目标检测,人工智能,计算机视觉)