目标识别算法设计指引
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了目标识别算法设计指引相关的知识,希望对你有一定的参考价值。
简述
简述目标识别算法中常用的图像算法,便于以后算法的设计应用
内容
目标检测(Object recognition)是在一幅图像中精确地找到各种目标所在的位置,标注出每个目标的类别,在此基础上识别目标。目标识别任务归结为两个问题:目标定位(localization)和目标分类(classification) ;
目标识别阵营
识别算法分为两大类,一类是基于图像处理的机器学习算法(传统算法),另一类是基于深度学习的识别算法;
传统算法的检测精度和识别实时性差于深度学习算法,但深度学习算法依赖于GPU硬件,需要一定时间的学习训练过程,使用成本大于传统算法。
以下是各种识别算法
机器学习算法
模板识别
模板识别是将待识别图像中提取若干特征向量与模板对应的特征向量进行比较,计算图像与模板之间的距离,用最小距离法判定所属类别。模板匹配通常事先建立好标准数据模板,常应用于工业图像上
特征点识别
特征点识别是局部特征识别方法,在图像维度空间上寻找特征点,提取特征点的大小、方向、梯度、尺度等信息,利用这些信息组成特征向量对图像进行描述的方法。
HOG(方向梯度直方图)是通过计算和统计图像局部位置的梯度方向直方图来构成特征,常常应用图像识别中的人脸识别;
LBP(局部二值模式)是一种用来描述图像局部纹理特征的算子,具有旋转不变性和灰度不变性等显著的优点;
SIFT(尺度不变特征变换)提取图像的局部特征,在尺度空间寻找极值点,并提取出其位置,尺度,方向信息。图像的局部特征,对旋转,尺度缩放,亮度变化保持不变,对视角变化,仿射变换,噪声也保持一定程度的稳定性;
SURF是对SIFT算法的改进,提升了算法的执行效率;
ORB是一种快速特征点提取和描述的算法,利用oFAST算法提取特征点,确定特征点方向;然后利用rBRIEF算法生成特征描述子,最后进行特征点匹配;
计算速度: ORB>>SURF>>SIFT(各差一个量级)
尺度变换鲁棒性: SURF>SIFT>ORB(ORB并不具备尺度变换性)
霍夫变换
霍夫变换是检测间断点边界形状方法,可以用来拟合直线、曲线、圆
轮廓分析
轮廓分析可以通过图像颜色来获取特征点信息,色彩域变换->阈值->轮廓分割;
Blob检测
Blob检测是通过存在颜色差异和灰度差异的特征区域,针对这些特征区域中获取共同属性(灰度值)的连接像素信息,如斑点检测
深度学习算法
RCNN系列
RCNN是将高容量卷积神经网络应用于自下而上的候选区域,以便对物体进行局部化和分割,并监督辅助任务的预训练,它是将候选区域与卷积神经网络相结合的方式;
SSD系列
SSD是一种使用单个深度神经网络预测图像中物体的模型。网络使用特征图的小卷积滤波器为每个对象类别生成分数;
YOLO系列
YOLO是一种单一的神经网络,可以在单次评估中预测图像中的边界框和类概率。它将图像检测视为回归问题,每个边界框都是通过整个图像的特征来预测的,每个边界框有5个预测,x,y,w,h和置信度,(x,y)表示相对于网格单元边界的边界框中心, w和h是整个图像的预测宽度和高度(相对于整个图像来说的比例);
速度:YOLO>SSD>RCNN
精度:SSD>RCNN~YOLO (原理上) (目前YOLO系列精度都很高,深度学习算法常常用于目标识别与检测)
基于二轴云台目标跟踪系统设计
文章目录
- 前言
- 机器学习之前的目标检测研究
- 一、系统总览
-
上位机及其功能
-
下位机及其功能
-
- 二、基本方案设计
- 云台结构设计
- 机器视觉运算需求分析
- 三、目标识别算法与跟踪算法
-
运用HOG特征结合SVM的目标识别和跟踪算法
-
改进的HOG+CamShift跟踪算法
-
YOLOv3目标检测
-
-
四、云台跟踪控制
-
PID算法及改进
-
串口通讯协议
-
前言
文本简述一个基于二轴云台的目标跟踪系统的设计思路,并在之后会实践记录。
机器学习之前的目标检测研究:
-
模板匹配:计算目标图像部分区域与模板图像的相似度,存在检测阈值。
-
全局特征:通过颜色、轮廓形状等方式识别
-
局部特征:图像ROI(兴趣区域)的部分特诊
-
图像帧差:对图像相邻帧做差分运算,来获得目标轮廓,适用于背景变化小的环境。
基于云台的目标识别算法的要求:
-
准确性
-
实时性
-
正确性
一、系统总览
整个系统分为硬件层、驱动层、操作系统层。
·上位机及其功能:
STM32F427控制电路作为移动平台的主要硬件控制电路,主要功能:
-
集成电压模块为系统提供电源
-
与底盘电机电调通信控制电机
-
与二轴云台通信控制云台
-
位姿解算和位姿信息显示
-
与上位机Jetson nano或PC串口通信
·下位机及其功能:
Jetson nano主控板或PC负责上层算法并进行信息传输,主要功能有:
-
将接受的平台控制信息串口传输到STM32控制电路。
-
驱动工业相机获取图像。
-
解算跟踪目标所需的控制信息,串口发送给STM32控制电路,控制云台的目标跟踪运动。
二、基本方案设计
云台结构设计:
采用二轴云台,控制偏航角(Yaw)和俯仰角(Pitch)两个自由度。同时还需要姿态控制,IMU采用MPU6050,云台电机采用RM6020,CAN通信。
机器视觉运算需求分析:
摄像头要满足像素高、色彩还原度高、帧率高。嵌入式系统由于需要大量的系统资源,需要GPU加速,可以采用Nvidia的Jetson TX2,拥有256颗CUDA核心(Jetson nano只有128颗CUDA核心)。但总体来说需要对工业相机的选择,算法的优化,GPU加速均有关系。
三、目标识别算法与跟踪算法
-
运用HOG特征结合SVM的目标识别和跟踪算法
HOG(Histogram of Oriented Gradient,方向梯度直方图)特征,算法思想是通过提取图像中局部目标及轮廓的梯度方向来区分目标和背景。过程如下:
-
灰度化,三通道转化为一通道
-
高斯滤波,平滑图片
-
γ矫正处理,图片过暗,可以拉高图像整体亮度,调整图像亮度平均
-
梯度运算,分别得到纵向和横向梯度,统计每个cell单元的梯度直方图。
-
将图像划分为多个Block,提取到的目标HOG特征数据统计,具有易于向量分类的特征。
SVM分类器(Support Vector Machine,支持向量机),属于有监督学习算法。
-
-
改进的HOG+CamShift跟踪算法
CamShift算法是一种视频图像序列算法,以颜色直方图为特征进行,对图像序列做MeanShift运算,选出初始目标的预测框尺寸和位置信息,作为后一帧图像搜索窗口的初始值,实现跟踪。
CamShift算法流程
-
颜色空间转换,RGB到HSV,只需要H分量。
-
计算反向投影,算出对应概率
-
计算搜索框质心
-
-
YOLOv3目标检测
优势:准确率高,帧率高,性能好。
-
推荐采用yolov3,在darknet框架下。
-
自制数据集
-
移植到linux系统或者ros系统
-
此方法详情可查看:
Darknet——yolo3训练自己的数据集+在ros环境下实现目标检测实战教程(二)——训练自己的权重文件
四、云台控制跟踪
-
PID算法及改进
-
比例控制:考虑当前误差
-
积分控制:消除稳态误差
-
微分控制:考虑将来的误差,预测变化
-
添加死区控制,即电机实际转速与目标转速在设定的死区范围,就无需PID控制,避免震荡情况。
-
增量式PID算法由于积分项的截断效应大,容易产生静态误差,同时避免超调现象,偏差对积分项进行分段处理。
-
-
-
串口通讯协议
-
包含:
帧头 8bit 模块 8bit 数据识别位 8bit 数据字节数 8bit 数据段 0-255bit 丢包检测 8bit 校验位 crc16 -
发包:上层将目标检测之后的预测框,以图像中心为原点,将X,Y坐标,宽度,高度封装成数据包发送给下位机,以发出的包数与收到的包数计算丢包率。
-
解包:先判断帧头,数据识别位, 数据字节数,然后取出高低位进行CRC校验,帧结尾的CRC校验是对一帧数据进行冗余校验的结果,检测数据传输的正确性。
-
以上是关于目标识别算法设计指引的主要内容,如果未能解决你的问题,请参考以下文章