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.hqwc.cn/news/224933.html

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

相关文章

【深入剖析K8s】容器技术基础(三):深入理解容器镜像 文件角度

容器里的进程‘看到’’的文件系统 可能你立刻就能想到,这应该是一个关于MountNamespace的问题:容器里的应用进程理应‘看到”一套完全独立的文件系统这样它就可以在自己的容器目录(比如 /tmp)下进行操作’而完全不会受宿主机以及其他容器的影响。 容器…

94.STM32外部中断

目录 1.什么是 NVIC? 2.NVIC寄存器 3.中断优先级 4.NVIC的配置 设置中断分组​编辑 配置某一个中断的优先级 5.什么是EXTI 6.EXTI和NVIC之间的关系 7.SYSCFG 的介绍 1.什么是 NVIC? NVIC是一种中断控制器,主要用于处理 ARM Cort…

美国高防云服务器的优劣势分析(相比普通云服务器)

在当前数字化时代,云服务器已经成为企业和个人进行在线业务的重要基础设施。而在选择云服务器时,很多人会面临一个问题:是选择普通云服务器还是高防云服务器?本文将从多个方面来分析美国高防云服务器相比普通云服务器的优势和劣势。 我们来看…

【APUE】进程间通信

目录 一、管道 1.1 匿名管道 1.2 命名管道 二、XSI IPC 2.1 概述 2.2 消息队列 2.2.1 msgget 2.2.2 msgsnd 2.2.3 msgrcv 2.2.4 msgctl 2.2.5 代码示例 2.3 信号量数组 2.3.1 semget 2.3.2 semop 2.3.3 semctl 2.3.4 代码示例 2.3 共享内存 2.3.1 shmget…

【1】AR Tag 在ros中的使用

1.定义 AR Tag 是一种用于增强现实(AR)应用中的视觉标记,用于跟踪和定位虚拟物体在现实世界中的位置。 AR Tag由黑白正方形图像表示,图像内部有黑色边框中的某些图案。它与我们经常用到的二维码长得类似,原理其实也一…

【序列推荐】MAN:跨领域顺序推荐的混合注意网络

#论文题目:MAN:Mixed Attention Network for Cross-domain Sequential Recommendation(跨领域顺序推荐的混合注意网络) #论文地址:https://dl.acm.org/doi/10.1145/3543507.3583278 #论文源码开源地址:http…

Java核心知识点整理大全19-笔记

目录 14.1.5.2. MemStore 刷盘 全局内存控制 MemStore 达到上限 RegionServer 的 Hlog 数量达到上限 手工触发 关闭 RegionServer 触发 Region 使用 HLOG 恢复完数据后触发 14.1.6.HBase vs Cassandra 15. MongoDB 15.1.1. 概念 15.1.2. 特点 16. Cassandra 16.1.1…

爬虫必学:Java创建代理ip池详细教程

目录 一、引言 二、代理IP池的基本概念 三、Java创建代理IP池的步骤 1、引入相关依赖 2、创建代理IP池类 3、代理IP的获取与释放 四、代理IP的获取方式 五、总结 一、引言 网络爬虫是自动从网站抓取信息的程序。在爬虫运行过程中,经常遇到的问题之一是目标…

应用密码学期末复习(1)

学习资料 应用密码学总结_应用密码学知识点总结-CSDN博客 应用密码学期末复习知识点总结_5的36次方mod97__PriDe的博客-CSDN博客 【密码学】密码学期末考试速成课,不挂科!!#高数帮_哔哩哔哩_bilibili 目录 学习资料 第一章 概述 1.1信息…

Linux基本指令汇总

本专栏内容为:Linux学习专栏,分为系统和网络两部分。 通过本专栏的深入学习,你可以了解并掌握Linux。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:Linux从入门到精通 🚚代码仓库:小…

每日一练2023.11.28——A-B【PTA】

题目链接:L1-011 A-B 题目要求: 本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。 输入格式: 输入在2行中先后给出字符串A和B…

redis集群模式

集群模式 1.主从模式 一主多从模式。主节点可以负责:读操作,写操作。 从节点只能负责读操作,不能负责写操作。把读的压力从主节点分摊到从节点,以减少主节点的压力。 复制流程如下图, 从节点挂了? 从节点挂了在恢复…