基于深度学习的目标检测

基于深度学习的⽬标检测
⽂章⽬录
⼀、前⾔
1. ⽬标检测是图像处理和计算机视觉学科的重要分⽀,对⼈脸识别、步态识别、⼈计数、实例分割等任务起着⾄关重要的作⽤。
计算机视觉对于⽬标运动的分析可以⼤致分为三个层次:
运动分割,⽬标检测 --> ⽬标跟踪 --> 动作识别,⾏为描述
2. 传统⽬标检测的⽅法⼀般分为三个阶段:
(1)区域选择:这⼀步是为了对⽬标的位置进⾏定位。由于⽬标可能出现在图像的任何位置,⽽且⽬标的⼤⼩、长宽⽐例也不确定,所以最初采⽤滑动窗⼝的策略对整幅图像进⾏遍历:时间复杂度太⾼,产⽣冗余窗⼝太多,这也严重影响后续特征提取和分类的速度和性能。
(2)特征提取:由于⽬标的形态多样性,光照变化多样性,背景多样性等因素使得设计⼀个鲁棒的特征
并不是那么容易。然⽽提取特征的好坏直接影响到分类的准确性。其中,这个阶段常⽤的特征有 SIFT[3]、HOG[4]等。
(3)分类:根据第⼆步提取到的特征对⽬标进⾏分类,分类器主要有 SVM,AdaBoost /GBDT等。
⼆、基于深度学习的⽬标检测算法
⽬标检测的两⼤任务
⽬标分类和⽬标定位:
⽬标分类任务负责判断输⼊图像,输出⼀系列带分数的标签表明感兴趣类别的物体出现在输⼊图像或所选择图像区域(Proposal)中的可能性。
⽬标定位任务负责确定输⼊图像或所选择图像区域(Proposal)中感兴趣类别的物体的位置和范围,输出物体的包围盒、或物体中⼼、或物体的闭合边界等,通常使⽤⽅形包围盒,即Bounding Box⽤来表⽰物体的位置信息。
由于深度学习的⼴泛运⽤,⽬标检测算法得到了较为快速的发展,本⽂⼴泛调研国内外⽬标检测⽅法,主要介绍基于深度学习的两种⽬标检测算法思路:
生产技术One-Stage⽬标检测算法:
不需要Region Proposal阶段,可以通过⼀个Stage直接产⽣物体的类别概率和位置坐标值,⽐较典型的算法有YOLO、SSD和CornerNet;
Two-Stage⽬标检测算法。
第⼀个阶段⾸先产⽣候选区域(Region Proposals),包含⽬标⼤概的位置信息,
马斯洛第⼆个阶段对候选区域进⾏分类和位置精修,这类算法的典型代表有R-CNN,Fast R-CNN,Faster R-CNN等。
2.1 One-Stage⽬标检测算法(SSD—DSSD—FSSD)结构
在⼀个stage直接产⽣物体的类别概率和位置坐标值。
CNN⽹络结构主要有两个⽅向:分别为追求精度和追求速度。
最简单的⼀种实现⽅式就是替换Backbone(VGG)⽹络结构,即使⽤不同的基础⽹络结构对图像提取特征。
举例来说,ResNet101的表征能⼒(精度)要强于MobileNet,然⽽MobileNet的计算量(计算速度)要远远低于ResNet101,两者相互替换各有取舍。
SSD检测算法的⽹络结构,其中Backbone为VGG⽹络,使⽤不同阶段不同分辨率的(下采样过程中的)feature map进⾏预测。
DSSD也是使⽤不同阶段不同分辨率的feature maps进⾏预测,在不考虑Backbone⽹络结构差别的情况下,可以发现DSSD相⽐于SSD多了⼀系列的后续上采样操作,DSSD是使⽤上采样过程中的feature maps进⾏预测。
SSD⽤于检测的feature maps位于⽹络的较低层,表征能⼒较弱,⽽DSSD⽤于检测的feature maps位于⽹络的较⾼层,表征能⼒较强,同时DSSD在反卷积的过程中通过Skip-Connection引⼊了较低层的feature maps,实现了⼀定程度的特征融合。所以DSSD的效果要优于SSD检测算法。
FSSD也是使⽤不同阶段不同分辨率的feature maps进⾏预测,相⽐于SSD,FSSD多了⼀个特征融合处理,将⽹络较低层的特征引⼊到⽹络的较⾼层,在检测的时候能够同时考虑不同尺度的信息,使得检测更加准确。
2.2 回归⽬标
构建⽹络回归⽬标:区分正负样本使其与卷积神经⽹络的输出相对应。
最简单直接的⽅法是直接回归物体的相关信息(类别和坐标),稍微复杂⼀些,在回归坐标时可以回归物体坐标相对于anchor的偏移量等等。
对于One-Stage检测⽅法主要有如下三种典型的回归⽬标构建⽅式,其中代表⽅法分别为YOLO系列算法、SSD系列算法以及CornerNet ⽬标检测算法。
三 Mobilenet-ssd caffe实现
采⽤COCO数据集(上下⽂中的公共对象)训练,然后在PASCAL VOC上进⾏微调,达到72.7%mAP(平均平均精度)。
可以检测图像中的20个对象(背景类为+1),包括飞机,⾃⾏车,鸟,船,瓶⼦,公共汽车,汽车,猫,椅⼦,⽜,餐桌,狗,马,摩托车,⼈,盆栽植物,绵⽺,沙发,⽕车和电视监视器。
import numpy as np
import argparse
import cv2
ap = argparse.ArgumentParser()
ap.add_argument("-i","--image", required=True,
help="path to input image")
ap.add_argument("-p","--prototxt", required=True,
help="path to Caffe 'deploy' prototxt file")
ap.add_argument("-m","--model", required=True,
help="path to Caffe pre-trained model")
信息产业部手机查询ap.add_argument("-c","--confidence",type=float, default=0.2,
help="minimum probability to filter weak detections")
args =vars(ap.parse_args())
# 初始化类标签和边框颜⾊
CLASSES =["background","aeroplane","bicycle","bird","boat", "bottle","bus","car","cat","chair","cow","
diningtable", "dog","horse","motorbike","person","pottedplant","sheep",
"sofa","train","tvmonitor"]
COLORS = np.random.uniform(0,255, size=(len(CLASSES),3))
# 加载模型
print("[INFO] ")
net = adNetFromCaffe(args["prototxt"], args["model"])
# 加载查询图像并准备 blob
image = cv2.imread(args["image"])
(h, w)= image.shape[:2]
blob = cv2.dnn.size(image,(300,300)),0.007843,(300,300),127.5)
板锤
# 通过神经⽹络传递该blob
print("[INFO] computing ")
net.setInput(blob)
detections = net.forward()
# 循环检测图像中的⽬标。遍历每个⽬标,并展⽰⾼于阈值的置信度(即概率)
for i in np.arange(0, detections.shape[2]):
confidence = detections[0,0, i,2]
if confidence > args["confidence"]:
idx =int(detections[0,0, i,1])
box = detections[0,0, i,3:7]* np.array([w, h, w, h])
(startX, startY, endX, endY)= box.astype("int")
# display the prediction
百元美容针卖千元
label ="{}: {:.2f}%".format(CLASSES[idx], confidence *100)
print("[INFO] {}".format(label))
COLORS[idx],2)
y = startY -15if startY -15>15else startY +15
高尔基资料cv2.putText(image, label,(startX, y),
cv2.FONT_HERSHEY_SIMPLEX,0.5, COLORS[idx],2)
cv2.imshow("Output", image)
cv2.waitKey(0)
# Usage
'''
python deep_learning_object_detection.py \
--prototxt MobileNetSSD_ \
--model MobileNetSSD_deploy.caffemodel --image example_01.jpg '''
测试了⼏张图⽚,效果不怎么好

本文发布于:2024-09-25 12:30:10,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/212462.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图像   检测   物体   特征   算法   分类   位置   类别
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议