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

一、效果展示

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

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  # expandprint_args(vars(opt))return opt

2、无人机展示

3、QT界面展示

4、检测结果展示

六、总结

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Exchange意外登录日志

最近在审计Exchange邮件系统的时候,发现大量用户半夜登录的日志。而且都是成功的,几乎没有失败的情况。其中Logon Type 8表示用户从网络登录。 Logon type 8: NetworkCleartext. A user logged on to this computer from the network. The user’s pas…

c语言-数据结构-链式二叉树

目录 1、二叉树的概念及结构 2、二叉树的遍历概念 2.1 二叉树的前序遍历 2.2 二叉树的中序遍历 2.3 二叉树的后序遍历 2.4 二叉树的层序遍历 3、创建一颗二叉树 4、递归方法实现二叉树前、中、后遍历 4.1 实现前序遍历 4.2 实现中序遍历 4.3 实现后序遍历 5、…

【服务器能干什么】二十分钟搭建一个属于自己的 RSS 服务

如果大家不想自己捣鼓,只是想尝尝鲜,可以在下面留言,我后台帮大家开几个账号玩一玩。 哔哩哔哩【高清版本可以点击去吐槽到 B 站观看】:【VPS服务器到底能干啥】信息爆炸的年代,如何甄别出优质的内容?你可能需要自建一个RSS服务!_哔哩哔哩_bilibili 前言 RSS 服务 市…

STM32F103C8T6第7天:

1. 智能小车:让小车动起来(360.64) 硬件接线 B-2A – PB0B-1A – PB1A-1B – PB2A-1A – PB10其余接线参考上官一号小车项目。 cubemx配置 代码(28.smartCar_project1/MDK-ARM) 2. 智能小车:串口控制小…

Vue弹窗的使用与传值

使用element-UI中的Dialog 对话框 vue组件结合实现~~~~ 定义html <div click"MyAnalyze()">我的区划</div><el-dialog title"" :visible.sync"dialogBiomeVisible"><NationalBiome :closeValue"TypeBiome" cl…

ruoyi-plus-vue docker 部署

本文以 ruoyi-vue-plus 5.x docker 部署为基础 安装虚拟机 部署文档 安装docker 安装docker 安装docker-compose 配置idea环境 上传 /doicker 文件夹 到服务器&#xff1b;赋值 777权限 chmod -R 777 /docker idea构建 jar 包 利用 idea 构建镜像; 创建基础服务 docker…

Oracle(2-5)Usage and Configuration of the Oracle Shared Server

文章目录 一、基础知识1、 Server Configurations服务器配置2、Dedicated server process专用服务器进程3、Oracle Shared ServerOracle共享服务器4、Benefits of Shared Server 共享服务器的优点5、Processing a Request 处理请求6、Configuring Shared Server 配置共享服务器…

设计模式-创建型模式-工厂方法模式

一、什么是工厂方法模式 工厂模式又称工厂方法模式&#xff0c;是一种创建型设计模式&#xff0c;其在父类中提供一个创建对象的方法&#xff0c; 允许子类决定实例化对象的类型。工厂方法模式是目标是定义一个创建产品对象的工厂接口&#xff0c;将实际创建工作推迟到子类中。…

Redis报错:JedisConnectionException: Could not get a resource from the pool

1、问题描述&#xff1a; redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool 2、简要分析&#xff1a; redis.clients.util.Pool.getResource会从JedisPool实例池中返回一个可用的redis连接。分析源码可知JedisPool 继承了 r…

PyQt6把QTDesigner生成的UI文件转成python源码,并运行

锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计18条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话版…

NSGA-II求解微电网多目标优化调度(MATLAB)

一、NSGA-II简介 NSGA-Ⅱ算法是Kalyanmoy Deb等人于 2002年在 NSGA 的基础上提出的&#xff0c;它比 NSGA算法更加优越&#xff1a;它采用了快速非支配排序算法&#xff0c;计算复杂度比 NSGA 大大的降低&#xff1b;采用了拥挤度和拥挤度比较算子&#xff0c;代替了需要指定的…

python实现自动刷平台学时

背景 前一阵子有个朋友让我帮给小忙&#xff0c;因为他每学期都要看视频刷学时&#xff0c;一门平均需要刷500分钟&#xff0c;一学期有3-4门需要刷的。 如果是手动刷的话&#xff0c;比较麻烦&#xff0c;能否帮他做成自动化的。搞成功的话请我吃饭。为了这顿饭&#xff0c;咱…

Python语言学习笔记之三(字符编码)

本课程对于有其它语言基础的开发人员可以参考和学习&#xff0c;同时也是记录下来&#xff0c;为个人学习使用&#xff0c;文档中有此不当之处&#xff0c;请谅解。 什么是字符编码 计算机从本质上来说只认识二进制中的0和1&#xff0c;字符编码(Character Encoding) 是一种将…

Android Bitmap 模糊效果实现 (二)

文章目录 Android Bitmap 模糊效果实现 (二)使用 Vukan 模糊使用 RenderEffect 模糊使用 GLSL 模糊RS、Vukan、RenderEffect、GLSL 效率对比 Android Bitmap 模糊效果实现 (二) 本文首发地址 https://blog.csdn.net/CSqingchen/article/details/134656140 最新更新地址 https:/…

便利高效双赢:无人机油气管道巡检全面升级

我国庞大的油气管道网络&#xff0c;包括原油、成品和天然气管道&#xff0c;因为地理区域广泛、建设年代久远、安全事故频发等现实因素&#xff0c;对管道的安全巡护与管理提出了更高的需求。在这一背景下&#xff0c;传统的人工巡护方式显然已经难以满足对高、精、准的要求。…

antd vue a-select 下拉框位置偏移

问题 下拉框未固定 原因 select下拉框的定位是根据body定位 解决方法 在select 标签中添加&#xff1a; :getPopupContainer"(triggerNode) > (triggerNode.parentElement)" :getPopupContainer"(triggerNode) > (triggerNode.parentElement)"…

Linux 面试题(一)

目录 1、绝对路径用什么符号表示&#xff1f;当前目录、上层目录用什么表示&#xff1f;主目录用什么表示? 切换目录用什么命令&#xff1f; 2、怎么查看当前进程&#xff1f;怎么执行退出&#xff1f;怎么查看当前路径&#xff1f; 3、怎么清屏&#xff1f;怎么退出当前命…

【Spring Boot】如何在Linux系统中快速启动Spring Boot的jar包

在Linux系统中先安装java的JDK 然后编写下列service.sh脚本&#xff0c;并根据自己的需求只需要修改export的log_path、exec_cmd参数即可 # 配置运行日志输出的路径 export log_path/usr/local/project/study-pro/logs # 当前服务运行的脚本命令 export exec_cmd"nohup /u…

redis-cluster集群

redis3.0引入的分布式存储方案 集群由多个node节点组成&#xff0c;redis数据分布在这些节点之中&#xff0c;在集群之中分为主节点和从节点 数据流程图 redis-cluster集群的工作模式 集群模式当中&#xff0c;主从一一对应&#xff0c;数据写入和读取与主从模式一样&#x…

<Linux> 文件理解与操作

目录 前言&#xff1a; 一、关于文件的预备知识 二、C语言文件操作 1. fope 2. fclose 3. 文件写入 3.1 fprintf 3.2 snprintf 三、系统文件操作 1. open 2. close 3. write 4. read 四、C文件接口与系统文件IO的关系 五、文件描述符 1. 理解文件描述符 2. 文…