DjiTello + YoloV5的无人机的抽烟检测

news2024/11/18 3:27:15

一、效果展示

        注:此项目纯作者自己原创,创作不易,不经同意不给予搬运权限,转发前请联系我,源码较大需要者评论获取,谢谢配合!

1、未启动飞行模型无人机的目标检测。

DjiTello + YOLOV5抽烟检测

2、启动飞行模型的无人机目标检测。

DjiTello + YOLOV5抽烟检测

二、实现方法和技术

        本次抽烟检测采用yolov5s为基础模型进行训练,训练集采用了标注的抽烟人群数据集大约3000-5000张图片(图片均为爬虫获取),尺寸640*640,训练Epoch为300,损失函数采用Adaw,batch_size为64,至此训练完成。然后,最酷的部分来了!我们把训练完成的模型和 PyQT5 结合起来,成功地部署到了 DJITello 无人机上。这就意味着我们的无人机现在可以实时地进行抽烟检测了!想象一下,一个无人机飞过,能够检测到周围是否有人在抽烟。这就是我们这次项目的技术亮点啦!

        所采用技术:目标检测、深度学习、QT、Pytorch、djitello无人机编程基础、python爬虫等等。

三、项目涉及难点和优化

1、数据标注较为繁琐

2、各项技术结合起来较为困难,如yolo+tello+qt

3、电脑控制无人机不太方便

4、训练时间较长

5、优化了小目标检测层的细节

6、优化了损失函数

四、基础知识介绍

1、目标检测:

目标检测是一种计算机视觉技术,专注于识别和定位图像或视频中的特定对象。它不仅能够识别图像中的物体,还能够指示这些物体在图像中的位置。

有几种常见的目标检测技术,其中包括:

  1. 传统方法: 传统的目标检测方法通常使用特征工程和手动设计的算法来识别对象。这些方法包括 Haar 级联、HOG 特征和基于图像分割的技术。

  2. 深度学习方法: 近年来,深度学习技术,特别是卷积神经网络(CNN),已经成为目标检测领域的主流。著名的深度学习模型如 R-CNN、Fast R-CNN、Faster R-CNN、YOLO(You Only Look Once)和SSD(Single Shot Multibox Detector)等,大大提升了目标检测的准确性和速度。

这些技术在目标检测中的应用非常广泛,涵盖了许多领域,例如自动驾驶、安防监控、医学图像分析、工业质检和无人机等。目标检测技术的不断进步和优化,使得它在实际应用中变得更加可靠和高效。

2、Djitello:

DJITello是一款小型的无人机,可以通过编程语言控制和操控,通常使用Python进行编程。它的主要特点是易于上手和编程,适合初学者和教育用途。

Python与DJITello结合使用可以通过Tello SDK实现。Tello SDK提供了一组命令和API,允许开发者使用Python编写脚本来控制无人机的动作、飞行和获取无人机状态等操作。

使用Python与DJITello结合可以完成许多任务,例如:

  • 控制无人机的起飞、降落、悬停和移动。
  • 获取无人机的电池状态、飞行高度和速度等信息。
  • 实现无人机的图像识别、跟踪或其他计算机视觉任务。
  • 将无人机与其他传感器或设备集成,实现更复杂的应用。

整合Python和DJITello为开发者提供了一种快速而灵活的方式,可以通过编程控制无人机,开发各种类型的应用和项目。

3、PYQT5

PyQt5是一个用于创建图形用户界面(GUI)的Python库,它基于Qt框架,提供了丰富的工具和组件,用于构建跨平台的应用程序。它允许开发者利用Python语言的简洁性和强大性,创建出具有各种功能和外观的用户界面。

一些PyQt5的主要特点包括:

  1. 跨平台性: PyQt5能够在不同的操作系统上运行,包括Windows、MacOS和Linux等。

  2. 丰富的组件: PyQt5提供了各种丰富的UI组件,例如按钮、文本框、滑块、菜单等,以及更高级的组件,如图表和表格视图。

  3. 支持多种编程风格: 可以使用Qt Designer(图形化界面设计工具)创建UI并将其与Python代码相结合,也可以直接使用Python代码编写UI。

  4. 事件驱动编程: PyQt5是基于事件驱动的,允许通过信号(signal)和槽(slot)的机制来处理用户交互和其他事件。

  5. 与Qt生态系统集成: PyQt5充分利用了Qt框架的功能,能够与其他Qt工具和库进行良好的集成,扩展了其功能和灵活性。

使用PyQt5,开发者可以创建出具有良好交互性和用户友好界面的应用程序,涵盖了各种领域,包括桌面应用、科学计算、游戏开发等。它提供了丰富的工具和灵活性,让开发者能够根据需求创建出多样化的应用。

4、Python爬虫

Python爬虫技术是利用Python编程语言从互联网上获取信息的一种技术。它可以用来自动化地访问网页、抓取数据、分析网页内容并进行处理。Python拥有许多强大的库和工具,使得编写爬虫变得相对简单。

一些常用的Python库和框架用于爬虫技术包括:

  1. Requests: 一个简单易用的HTTP库,用于发送HTTP请求和获取响应,非常适合用于爬取网页内容。

  2. Beautiful Soup: 一个HTML和XML解析库,能够方便地提取页面中的数据,支持快速的数据提取和处理。

  3. Scrapy: 一个强大的Web爬虫框架,提供了更高级的功能和工具,如异步处理、数据存储、页面分析等,适用于大规模数据采集。

  4. Selenium: 用于Web应用程序测试的工具,但也可以用于爬虫,支持模拟浏览器行为,例如点击、填写表单等。

Python爬虫技术的流程一般包括以下步骤:

  • 发送HTTP请求:使用Requests库或类似工具向目标网站发送请求,获取页面内容。
  • 解析页面:使用Beautiful Soup等工具解析HTML或XML页面,提取需要的数据。
  • 数据处理:对提取的数据进行处理、清洗或存储,可以存储到数据库、文件或进行进一步的分析。
  • 循环迭代:根据需求,可以设置循环迭代,自动访问多个页面或执行多次爬取过程。

Python爬虫技术在许多领域有广泛的应用,包括数据采集、搜索引擎优化、舆情分析、价格监控等。需要注意的是,合法合规是使用爬虫的重要考虑因素,遵守网站的Robots协议和避免对服务器造成负担是保持良好爬虫行为的重要原则。

五、部分代码和图片展示

1、训练参数展示

def parse_opt():
    parser = argparse.ArgumentParser()
    parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'yolov5s.pt', help='model path or triton URL')
    parser.add_argument('--source', type=str, default=ROOT / 'data/images', help='file/dir/URL/glob/screen/0(webcam)')
    parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='(optional) dataset.yaml path')
    parser.add_argument('--imgsz', '--img', '--img-size', nargs='+', type=int, default=[640], help='inference size h,w')
    parser.add_argument('--conf-thres', type=float, default=0.25, help='confidence threshold')
    parser.add_argument('--iou-thres', type=float, default=0.45, help='NMS IoU threshold')
    parser.add_argument('--max-det', type=int, default=1000, help='maximum detections per image')
    parser.add_argument('--device', default='0', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
    parser.add_argument('--view-img', action='store_true', help='show results')
    parser.add_argument('--save-txt', action='store_true', help='save results to *.txt')
    parser.add_argument('--save-csv', action='store_true', help='save results in CSV format')
    parser.add_argument('--save-conf', action='store_true', help='save confidences in --save-txt labels')
    parser.add_argument('--save-crop', action='store_true', help='save cropped prediction boxes')
    parser.add_argument('--nosave', action='store_true', help='do not save images/videos')
    parser.add_argument('--classes', nargs='+', type=int, help='filter by class: --classes 0, or --classes 0 2 3')
    parser.add_argument('--agnostic-nms', action='store_true', help='class-agnostic NMS')
    parser.add_argument('--augment', action='store_true', help='augmented inference')
    parser.add_argument('--visualize', action='store_true', help='visualize features')
    parser.add_argument('--update', action='store_true', help='update all models')
    parser.add_argument('--project', default=ROOT / 'runs/detect', help='save results to project/name')
    parser.add_argument('--name', default='exp', help='save results to project/name')
    parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')
    parser.add_argument('--line-thickness', default=3, type=int, help='bounding box thickness (pixels)')
    parser.add_argument('--hide-labels', default=False, action='store_true', help='hide labels')
    parser.add_argument('--hide-conf', default=False, action='store_true', help='hide confidences')
    parser.add_argument('--half', action='store_true', help='use FP16 half-precision inference')
    parser.add_argument('--dnn', action='store_true', help='use OpenCV DNN for ONNX inference')
    parser.add_argument('--vid-stride', type=int, default=1, help='video frame-rate stride')
    opt = parser.parse_args()
    opt.imgsz *= 2 if len(opt.imgsz) == 1 else 1  # expand
    print_args(vars(opt))
    return opt

2、无人机展示

3、QT界面展示

4、检测结果展示

六、总结

        深度学习在图像处理和机器视觉等领域广泛应用,其中基于AI的技术如YOLOv5抽烟检测方法,提高了处理效率和准确性。

        YOLOv5是一种实时目标检测技术,可识别物体的尺寸、形状、位置和类别。本文改进了YOLOv5网络结构,增加了小目标检测层,采用CIOU损失函数提升模型准确性。结果显示,改进后的模型准确率提高了约6.6%。

        然而,传统方法仍然面临挑战。特别是对于大型目标,模型可能出现漏报或误报。抽烟者的移动和不同姿势也增加了检测难度。未来可考虑采用自适应技术和更多数据集,改进损失函数和参数,提高模型的鲁棒性和精确性。

        总体而言,该模型能有效检测抽烟者的位置和类型,但仍需进一步改进以提高性能和可靠性。

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

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

相关文章

“职场中的‘特色人物’:与‘个性’领导和同事的碰撞与成长“

文章目录 每日一句正能量前言程序员是怎么和产品经理battle的?科班程序员非科班程序员 程序员的团队合作密码:协作与领导的艺术职场人际关系的技巧后记 每日一句正能量 乌云的背后是阳光,阳光的背后是彩虹。 前言 在职场中,我们都…

护眼灯什么价位的好?好用又实惠的护眼台灯推荐

我国8~12岁的小学生中,约有47个儿童就有一个近视眼,近视发病率约为23%,中学生约为55%,大学生约为76%,全国近视眼约为3亿人,其中青少年约为2亿人。全国近视眼发病人数位居世界首位,发…

PostgreSQL 数据脱敏方式盘点

数据脱敏是一种广泛采用的保护敏感数据(如信用卡,社保卡,地址等信息)的方法。脱敏数据不仅仅是为了保护你和客户的数据安全,在一些情况下,法律也有相应要求,最著名的例子就是 GDPR。 市面上也有…

docker-compose部署zabbix+grafana

1.引言 1.1目的 zabbixgrafana实现图形化监控 2.部署环境 服务器ip服务版本192.168.5.137zabbix-server6.0.21192.168.5.137grafana10.2.2192.168.5.152zabbix-client6.0.21 3.部署zabbix-server 3.1 创建zabbix目录 mkdir zabbix3.2 编写docker-compose文件 cd zabbix…

医学影像PACS源码:PACS系统的基础知识(DICOM、HL7、SWF)

1、PACS PACS是Picture Archiving and Communication Systems首字母缩写,全称为影像储存和传输系统,涉及放射医学、计算机技术、通讯技术及数字图像技术等,是医院信息系统的重要组成部分,是将数字医疗设备(如X线、CT、MRI、超声、…

P8A110-A120经典赛题

Web应用程序SQL Inject安全攻防 任务环境说明: 服务器场景:WebServ2003(用户名:administrator;密码:空)服务器场景操作系统:Microsoft Windows2003 Server 服务器场景安装服务/工…

matlab配置

matlab配置 windowslinux windows 按照这里一步步配置就行( 移动硬盘中软件备份中自取) linux linux配置步骤

【C/PTA —— 12.指针1(课外实践)】

C/PTA —— 12.指针1(课外实践) 一.函数题6-1 删除字符串中数字字符6-2 找最大值及其下标6-3 求两数平方根之和6-4 求一组数中的最大值、最小值和平均值6-5 两个4位正整数的后两位互换6-6 判断回文字符串 二.程序题7-1 求矩阵每行元素的和 一.函数题 6-…

在 C# 中复制 Word、Excel、PDF 和 PPT 文档

在 C# 中复制文档可能是各种软件应用程序中的一项基本任务。无论您是构建文件管理系统、创建备份实用程序,还是出于任何原因仅需要复制文档,都需要高效的文件处理和复制机制。在这篇博文中,我们将引导您逐步完成在 C# 中复制文档的过程。在代…

IDEA懒人必备插件:自动生成单元测试!

IDEA懒人必备插件:自动生成单元测试! 前言1、打开设置 File-->settings-->Plugins, 搜索 Squaretest2、安装完成后重启idea ,你会发现,导航栏位置已经多了一个选项3、接着就在你想要测试的类中 用快捷键 altInse…

值得收藏的 6 个顶级 Mac 数据恢复软件榜单

对于 Mac 用户来说,丢失重要数据可能是一场真正的噩梦。无论是意外删除、系统崩溃还是狡猾的恶意软件,后果都可能是毁灭性的。幸运的是,Mac 数据恢复软件带来了一线希望。这些工具旨在帮助您轻松恢复珍贵的文件,无论是什么原因导致…

使用Moment.js中获取上周的开始日期和结束日期(可自定义)

前言 有时候需求是这样的,想要获取上周的开始日期和结束日期,或者前几周的时间范围 比如今天是2023.11.28号,我想获取上周的周一到周日,也就是,上周的开始日期: 2023-11-20,上周的结束日期: 2023-11-26 1.…

Digicert OV 代码签名介绍

Digicert OV 代码签名证书是一种数字证书,用于对软件代码进行数字签名。数字签名是一种验证软件来源和完整性的技术,通过使用私有密钥对代码进行签名,并在签名后使用公共密钥验证签名。 可基于更多平台,最大限度地提高分发量和收…

Proto3语法详解02

目录 1.默认值 2.更新消息 2.1更新规则 2.2保留字段reserved 2.2.1创建通讯录3.0版本---验证错误删除字段造成的数据损坏 2.3未知字段 2.3.1未知字段从哪获取 3.3.2升级通讯录3.1版本--验证未知字段 2.4前后兼容性 3.选项option 3.1选项分类 3.2常用选项列举 1.默认值…

Valentina Studio Pro:引领数据库管理软件新潮流

你是否正在寻找一款强大且易用的数据库管理软件?Valentina Studio Pro可能就是你的不二之选。这款软件是由Valentina Team开发的一款综合性数据库管理和编辑工具,它支持多种数据库系统,包括MySQL、PostgreSQL、SQLite等。 Valentina Studio …

前端页面带值跳转

前端页面带值跳转 querry>url searchParamers,url后附加参数,传递的值长度与有限vuex(全局状态管理),搜索页面将关键词塞到状态中,所搜结果页从状态取值。 使用axios整合前后端 axios官网:axios 在前…

零基础在ubuntu上搭建rtmp服务器-srs

搭建服务器 搭建 SRS(Simple-RTMP-Server)服务器需要一些步骤,以下是一个简单的步骤指南。请注意,SRS 的配置可能会有所不同,具体取决于你的需求和环境。在开始之前,请确保你的 Ubuntu 系统已经连接到互联…

vue3+vite搭建cesium项目

1.创建项目 cnpm create vite 2.安装依赖 npm i cesium vite-plugin-cesium vite -D 3.在vite.config.js里进行配置 import { defineConfig } from vite import vue from vitejs/plugin-vue import cesium from vite-plugin-cesium; export default defineConfig({plugins…

hello vtk 圆柱

VTK 可视化的流程及步骤 标题引入VTK库和初始化: 引入 VTK 库和 AutoInit 模块,以便使用 VTK 的渲染和交互功能 设置背景颜色和颜色对象: 使用 vtkNamedColors 设置背景颜色和演员颜色。 创建圆柱体源: 使用 vtkCylinderSou…

企业精益生产管理十大工具的介绍及应用

追求零库存、快速响应、企业内外部环境的和谐统一,是精益生产的核心理念。简而言之,就是消除企业一切非增值活动,以达到降本增效的目的。 企业精益生产管理十大工具包括: 价值流分析。精益生产管理以价值为核心,它有两…