【模式识别目标检测】——基于机器视觉的无人机避障RP-YOLOv3实例

news2024/11/16 19:34:07

目录

引入

一、YOLOv3模型

1、实时目标检测YOLOv3简介

2、改进的实时目标检测模型

二、数据集建立&结果分析

1、数据集建立

2、模型结果分析

 三、无人机避障实现

参考文献:


引入

目前对于障碍物的检测整体分为:激光、红外线、超声波、雷达、GPS、机器视觉六种避障技术,其中基于机器视觉的设备廉价获取信息方便,应用广泛。

超声波测距避障的距离一般在5m左右,障碍物表面的材质对于精度有很大干扰!

激光雷达避障主要用光脉冲进行测距,时间测量法和三角测量法是目前经常采用的两种测距方法。相比超声波,雷达测距更远,精度相对较高。在测距过程易导致光污染,影响测距精度,导致避障失败。

超声波和类带避障是被动接受信息,而机器视觉是主动接受光源信息,获取的信息量更大,硬件处理器要求较高。

下面介绍YOLO(You only Look Once)SIFT(尺度不变特征变换)和两种视觉算法,用于目标检测和图像识别。SIFI在下次!

一、YOLOv3模型

传统方法:如基于Haar小波提取障碍物候选区域,对生成的候选区域进行HOG特征提取,最终采用支持向量机(SVM)实现障碍物判断等方法,特征提取过程繁杂且不可有效提取,甚至出现无效特征。

近年基于深度学习的不断发展,卷积神经网络可实现障碍物特征自动提取,典型的基于区域建议的R-CNN系列的R-CNN、Fast R-CNN和Faster R-CNN的目标检测模型不断提出。无需区域建议(one stage)的目标检测模型只需要一次前向传播运算即可完成目标检测,典型one stage系列的YOLO(You only look once)模型在检测速率上体现出其优越性。

下面的所要介绍的就是基于YOLOv3改进目标检测模型的检测识别!

1、实时目标检测YOLOv3简介

YOLOv31x1的卷积层和3x3的卷积层交替连接构成基础网络darknet-53。在每个卷积层之后均连接一个BN层(Batch Normalization)和一个激励函数Leaky Relu——BN层可加速网络收敛、避免训练模型过拟合。

YOLOv3检测模型没有池化层全连接层,网络通过调整卷积核的步长进行降维。将输入数据通过回归分析得到目标位置和目标所属类别。

YOLOv3沿用YOLO思想,将输入图像分成若干网格,每个网格负责预测目标中心落在该网格内的相应目标,且每个网格有3个相应的滑动窗口,通过训练选择得分值最高的滑动窗口作为最终的目标预测框其中每个网格对滑动窗口的得分:

        

YOLOv3将目标分类和定位都转化为回归问题,其损失函数坐标误差、IOU误差和分类误差3部分组成:

loss=loss_{coord}+loss_{IOU}+loss_{class}

2、改进的实时目标检测模型

YOLO作为one stge系列,检测实时性强,但相比two stage系列准确率较低。原因在于one stage系列将图片输入后经过卷积运算直接输出目标类型滑动窗口而two stage在检测之前先生成一些候选区域再进行目标分类和滑动窗口预测。借鉴产生候选区域的思想,改论文采用区域候选网络RPN(Region Proposal Network)生成候选区域对YOLOv3改进——RP-YOLOv3

RP-YOLOv3将输入图像大小统一归化为416x416采用基本网络darknet-53进行特征提取,图中虚线部分即为darknet-53基本结构,通过卷积层步长的调整进行降维(分别以stride=2^3,stride=2^4和stride=2^5对输入的图片进行特征提取)获得大小分别为52x5226x26,和13x13三种尺度的特征图。

然后采用RPN网络通过3x3的卷积核在相应的特征图上进行窗口滑动判断anchor与ground truth的重叠率IOU阈值θ的关系小于阈值则为背景将其舍弃,大于或等于阈值则为前景将其保留,并通过非极大值抑制筛选出相应的proposal(候选区域),将proposal与提取的特征图结合最终获得ROI(感兴趣区域),并将该ROI作为YOLO层的输入。

接着YOLO层通过上采样进行多尺度融合对输入图片中的障碍物的bounding box(滑动窗口)和种类做回归运算,最终输出预测结果。


二、数据集建立&结果分析

1、数据集建立

①原始数据收集:拍照、网上搜索、COCO数据库选取方式获得图片,每种类别1000张左右。

②数据标注:可在python环境下采用labeling对每张图片的障碍物所在区域画框,进行人工数据标注形成障碍物的ground truth。

③数据增强:为了进一步增强数据集的数量和多样性,可采用一些方法如增加噪声、改变亮度或cuntout三种方式对标注后的数据进行增强。(形象理解为是copy了一份加了”滤镜“的数据集,可使数据翻倍和多样性变多)。可拿出总数据集的80%作为训练集,20%作为测试集。

2、模型结果分析

模型结果可通过准确率 P(Precision)、召回率R(Recall)、 平均精度AP (Average Precision)、mAP(mean Average Precision)和检测速率,将该模型与传统模型进行比对进行比较。
①准确率P P=\frac{TP}{TP+FP}
②召回率RR=\frac{TP}{TP+FN}
其中TP为真正例(被检测物A被正确检测为A的数量);FP为伪正例(不是A但被五检测为A的数量);FN是伪反例(是实际检测物A但是未被检测为A的数量)。
下图左侧 矩形为正确目标物体圆圈为检测结果框。可发现 准确率P以检测框区域为分母,召回率R以实际物体区域为分母。

③平均精度APAP=\int_{0}^{1}P(R)dR

检测系统中,精确率P与召回率R不会同时高,两者常呈现相反变化关系,只看R或P缺乏科学性,AP可起到兼顾精度和召回率的作用,且可以衡量比较单类型数据集训练效果的优劣。

④mAPmAP=\frac{1}{n}\sum_{i=1}^{n}AP_i

对各个检测算法进行综合比较采用衡量指标mAP,mAP是各个类别AP之和的平均值。n为障碍物类别总数。


 三、无人机避障实现

使用GPU可保证检测的实时性,但是由于GPU的重量和供电等原因放在无人机上不太现实,可采用将摄像头采集的图像无线传输到地面障碍物检测系统的方式。然后通过改进的RP-YOLOv3模型惊醒检测识别,检测结果通过串口传输给后台程序后台程序通过对无人机各个电机不同的控制方案实现无人机的动作控制。(无人机的上升、下降和偏航运动可以通过控制四个电机各自的转速和转向控制)


SIFT算法及与YOLO的关系和区别见下次!

参考文献:

[1]杨娟娟,高晓阳,李红岭等.基于机器视觉的无人机避障系统研究[J].中国农机化学报,2020,41(02):155-160.DOI:10.13733/j.jcam.issn.2095-5553.2020.02.24.

[2]杨磊,陈海华,娄鹏彥.基于机器视觉的无人机避障技术研究[J].内蒙古科技与经济,2019(17):73-75+78.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/730666.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用FAST方法检测特征点,然后计算这些特征点的ORB描述子,并使用暴力匹配方法找到匹配的特征点

这段代码主要做了以下几件事情: 读取两幅图像使用FAST方法找出图像中的特征点手写ORB方法计算特征点的描述子使用汉明距离(Hamming distance)进行描述子的匹配显示匹配的结果下面我们会逐行解释每一句代码: 包含头文件:这一部分包含了所有需要的库。 ComputeORB 函数:该函…

【验证码逆向专栏】某度滑块、点选、旋转验证码 v1、v2 逆向分析

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未…

SSL密钥算法检测工具-sslciphercheck-SSL/TLS Suffers ‘Bar Mitzvah Attack’漏洞

SSL密钥算法检测工具-sslciphercheck-SSL/TLS Suffers ‘Bar Mitzvah Attack’漏洞 文章目录 sslciphercheck漏洞:SSL/TLS Suffers ‘Bar Mitzvah Attack’漏洞漏洞描述漏洞检测修复建议 sslciphercheck 下载:https://github.com/woanware/woanware.git…

Ubuntu vim 以十六进制的形式显示文件内容

Vim的介绍 Vim(Vi IMproved)是一款开源的文本编辑器,是 Unix 系统中经典的 vi 编辑器的改进版本。它具有强大的功能和高度可定制性,被广泛应用于程序开发、系统管理和文本编辑等领域。 以下是 Vim 的一些主要特点和功能&#xf…

CRC Principle and Implementation Method(Java C)

CRC原理和程序实现方法1_哔哩哔哩_bilibili 其实原理很简单 但是我想了两个小时。。 收获的是原来一些复杂的运算都可以通过位运算来实现。 实现思路 public class CRC16Calculator {public static String CRC16(byte[] bytes) {int CRC 0x0000ffff;int POLYNOMIAL 0x0000a…

【复习3-5天的内容】【我们一起60天准备考研算法面试(大全)-第七天 7/60】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…

Ubuntu Linux系统下创建Git项目并push到远程Github

首先在本地创建git仓库 jasminelhl:~/prj$ mkdir Github-test jasminelhl:~/prj$ cd Github-test jasminelhl:~/prj/Github-test$ git init 提示:使用 master 作为初始分支的名称。这个默认分支名称可能会更改。要在新仓库中 提示:配置使用初始分支名&a…

RabbitMQ的可视化管理页面简介

模块 描述 Overview 概览 Connections 查看连接情况 Channels 信道(通过)情况 Exchanges 交换机(路由)情况,默认四类七个 Queues 消息队列情况 Admin …

高并发架构实战:从需求分析到系统设计

很多软件工程师的职业规划是成为架构师,但是要成为架构师很多时候要求先有架构设计经验,而不做架构师又怎么会有架构设计经验呢?那么要如何获得架构设计经验呢? 一方面可以通过工作来学习,观察所在团队的架构师是如何…

网络安全工程师工作内容具体是什么?

在知乎看到一个帖子:网络安全工程师或者网络安全研究员的工作内容具体是什么?或者说他们的一天具体是怎么度过的,是否和程序员一样编码做项目? Neeao的回复: 只在甲方互联网公司呆过,简单说下甲方的情况。…

“千模千测”——针对大语言模型认知能力的高效测试方法

©PaperWeekly 原创 作者 | 庄严、宁雨亭 单位 | 中国科学技术大学BASE课题组 论文标题: Efficiently Measuring the Cognitive Ability of LLMs: An Adaptive Testing Perspective 作者: Yan Zhuang, Qi Liu, Yuting Ning, Weizhe Huang, Rui Lv, …

Docker 安装Nginx

查看Nginx镜像并拉取镜像: [rootlocalhost nginx]# docker search nginx NAME DESCRIPTION STARS OFFICIAL AUTOMATED nginx …

使用Mybatis添加记录错误

使用Mybatis添加记录错误:Error updating database. Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Out of range value for column ‘id’ at row 1 分析:添加记录的id值超出范围,查看JavaBean中的ID&#…

00-C++-ccache使用

ccache使用 前言ccache是什么ccache使用 前言 在编译大型C项目代码时编译时间比较长,那么可以使用ccache来加速代码的编译,一起来学习吧。 ccache是什么 ccache是一个编译器缓存。它通过缓存以前编译的结果并检测何时再次进行相同的编译来加快重新编译…

201天,太平洋保险核心系统迁至国产数据库OceanBase稳定运行

7月7日,2023全球数字经济大会上,国内首个全险种核心迁移至国产数据库的系统正式亮相。 因支撑未来海量并发、海量数据业务发展需求,太平洋保险(集团)股份有限公司(以下称“太平洋保险”)与Ocea…

使用OpenCV的viz模块创建和控制一个3D可视化窗口

#include <opencv2/viz.hpp> #include <iostream>using namespace cv; using namespace std;int main() {

神经网络解决预测问题(以共享单车预测为例)

背景:大约从2015年起,共享单车席卷了大部分城市。共享单车在给人们带来便利的同时,也存在一些问题:单车的分布很不均匀。比如在早高峰的时候,一些地铁口往往聚集着大量的单车,而到了晚高峰却很难找到一辆单车了。那么如何解决共享单车分布不均匀的问题呢?目前,共享单车…

DevOps系列文章 之 SnakeYAML解析与序列化YAML

1、简述 如何使用SnakeYAML库将YAML文档转换为Java对象&#xff0c;以及JAVA对象如何序列化为YAML文档。 在DevOps平台系统中是基础的能力支持&#xff0c;不管是spring boot 的配置还是K8S 资源清单yaml 2、项目设置 要在项目中使用SnakeYAML&#xff0c;需要添加Maven依赖…

基于go-zero的api服务刨析并对比与gin的区别

zero路由与gin的区别 官网go-zero go-zero是一个集成了各种工程实践的微服务框架&#xff0c;集多种功能于一体&#xff0c;如服务主要的API服务&#xff0c;RPC服务等。除了构建微服务工程外&#xff0c;zero也是一款性能优良的web框架&#xff0c;也可以构建单体web应用。 …

并行计算框架Polars、Dask的数据处理性能对比

在Pandas 2.0发布以后&#xff0c;我们发布过一些评测的文章&#xff0c;这次我们看看&#xff0c;除了Pandas以外&#xff0c;常用的两个都是为了大数据处理的并行数据框架的对比测试。 本文我们使用两个类似的脚本来执行提取、转换和加载(ETL)过程。 测试内容 这两个脚本主…