作者:Azure

出处:https://www.cnblogs.com/azureology/p/14103685.html

前言#

距离Nvidia推出Jetson Nano开发板已经有一段时间
在GTC2020上NV再次推出了定价$59的2GB版Nano成为树莓派有利竞争对手

同样的价格下自带128个cuda和免费DLI课程让新版Jetson Nano非常适合部署边缘AI项目
在拿到开发板的第一时间我决定做一个小项目对Nano进行体验
本文将结合机器视觉与AI实现实时火焰检测,输出real-time bounding box与概率

网络选择#

动态目标检测有很多成熟的网络可供选择,如YOLO、SSD、RCNN等
这些网络效果很好但算力开销大,不适合在Jetson Nano 2GB上实时运行
通过搜索我发现了一个最近开源的快速目标检测网络NanoDet
详见作者的Github
对于320 x 320的输入FLOPS仅为0.72B非常适合嵌入式部署

环境搭建#

参考NanoDet作者给出的依赖,需要的环境为

Cython
termcolor
numpy
torch>=1.3
torchvision
tensorboard
pycocotools
matplotlib
pyaml
opencv-python
tqdm

在Jetson Nano部署主要难点是pytorch安装,使用Nvidia官方预编译whl文件,详见
Nvidia Developer Forums
注意torch和vison版本匹配,我的环境是 PyTorch v1.6 + torchvision v0.7.0

数据标注#

火焰检测不属于voc标准分类,因此需要自己进行标注训练
使用图片搜索引擎爬取火焰图片,清洗筛选后留下397张构建数据集
数据标注使用开源工具labelImg进行标注,保存为voc格式

按照8:2构建训练集与测试集,结构如下

fire
├── train
│   ├── ann
│   │   ├── 1.xml
│   │   └── 2.xml
│   └── img
│       ├── 1.jpg
│       └── 2.jpg
└── val├── ann│   └── 1.xml└── img└── 1.jpg

修改配置#

修改网络的yml配置文件
默认配置为80类目标检测,
自定义保存位置、识别种类、图像宽高、训练集、测试集,修改以下部分:

save_dir: ./fire
num_classes: 1
class_names: &class_names ['fire']
train:name: xml_datasetimg_path: ./fire/train/imgann_path: ./fire/train/anninput_szie: [320,320]
val:name: xml_datasetimg_path: ./fire/val/imgann_path: ./fire/val/anninput_szie: [320,320]

注意:默认数据集为coco格式,需要改为xml_dataset

训练网络#

这里使用PC端RTX2080进行训练

python3 train.py fire/nanodet_fire.yml

配置batch_size = 80 total_epochs = 160 耗时2.5小时

结果权重文件保存在./fire/model_last.pth

部署推理#

得到权重文件即可在Jetson Nano上进行实时推理

pyhton3 livecam.py

使用ShuffleNetV2作为backbone首次运行需要下载一个预训练模型
首次部署时确保Jetson Nano连接到网络,后续可离线使用

实测Jetson Nano 2GB输入640x480图像实时检测可以跑到16FPS

视频代码#

演示视频已上传至B站:https://www.bilibili.com/video/BV1np4y1z7kF/
项目代码Github地址:https://github.com/azureology/jetson-nano-fire-detection

部署NanoDet实现火焰检测相关推荐

  1. 用 nanodet 训练口罩检测模型,并在 jetson nano 下部署测试

    一  nanodet 介绍 最近比较火的 one stage 物体定位 和检测模型, 作者不光是取得了比较高的 学术 score ( 精度和性能), 并且把工程部署的细节也落地了, 在 android ...

  2. 用ESP32与Python实现物联网(IoT)火焰检测报警系统

     下图是本案例除硬件连线外的3步导学开发过程,每个步骤中实现的功能请参考图中的说明.在硬件连线完成之后我们建议您先使用"一分钟上云体验"功能预先体验本案例的实际运行效果. 1.简介 ...

  3. 树莓派练习程序(火焰检测)

    火焰检测模块如下: 树莓派的引脚如下图: 我们将Vcc引脚连接物理接口2,GND引脚连接物理接口39,DO引脚连接物理接口40. 实物连接如下图: 编程使用WiringPi库,使用wpi引脚编码方式控 ...

  4. 基于视觉的烟雾/火焰检测数据集整理(检测、识别、分割)

    基于传感器的火灾预警系统,比较适用于较小空间. 随着视觉技术的发展,基于视觉的火灾预警系统,更适用于对森林等大范围场景进行 远距离监控1. 当前的烟雾火焰检测系统中,采用机器学习的视觉技术暂未广泛替代 ...

  5. 基于OpenCV的火焰检测(二)——RGB颜色判据

    上文跟大家分享了在做火焰检测中常用到的图像预处理方法,从这一篇博文开始,我将向大家介绍如何一步一步地检测出火焰区域.火焰提取要用 到很多判据,今天我要向大家介绍的是最简单的但是很有效的判据--RGB判 ...

  6. 火焰检测网络(October, 2018,ICIP)

    论文名 Experimentally Defined Convolutional Neural Network Architecture Variants for Non-temporal Real- ...

  7. Arduino案例实操 -- 智能巡防小车(四)火焰检测功能扩展

    当小车可以自行完成巡线功能后,在有剩余空闲I/O口的情况下,还可以为巡线小车添加火焰检测功能,让它成为名副其实的 "巡防小车" ! 添加火焰检测功能 4.1 添加器件 4.2 火焰 ...

  8. pytorch版本下的yolov3训练实现火焰检测

    时隔好多好多日子了,一直没写博客(小声bb,最近忙着接私活儿).马上就要开学了,害,回去就要加油干了!!! 本次教程写个pytorch版本的yolov3检测,用的火焰检测数据集,效果如下: 这就可以做 ...

  9. 【MATLAB项目实战】基于RGB特征的火焰检测

    首先数据转换为帧图像 clc; clear all;obj = VideoReader('1.mp4');%输入视频位置 numFrames = obj.NumberOfFrames;% 帧的总数 f ...

最新文章

  1. 行人被遮挡问题怎么破?百度提出PGFA新方法,发布Occluded-DukeMTMC大型数据集 | ICCV 2019...
  2. topcoder srm 635 div1
  3. 大数据与智能算法(二-应用级技术)-SMU在线学习笔记
  4. Bluetooth profile: ATT/GATT(襄坤在线)
  5. Linux vim替换操作
  6. node.js require 自动执行脚本 并生成html,从HTML页面执行Nodejs脚本?
  7. iOS Appstore 版本更新
  8. react typescript 子组件调用父组件
  9. 提问:访问服务器时提示system.componentmodel.win32exception: 拒绝访问
  10. 谷歌公布4个0day详情,其中3个被滥用于攻击亚美尼亚
  11. MySQL删除命令_DELETE
  12. PHP简约聚合ZB盒子程序源码
  13. 【转】推荐系统算法总结(一)
  14. html文件下载时的header设置
  15. 如何计算 R 中 F 统计量的 P 值
  16. 谷歌GDELT数据说明
  17. 在线XML转TSV工具
  18. java 基础运算_Java 基础 运算符
  19. 梦幻风图片?我用Python分分钟做出来!!
  20. 嵌入式Linux使用TFT屏幕:使用树莓派4B的MIPI-DSI接口点亮ST7701S屏幕

热门文章

  1. 芯片解密STM32F100VB 芯片基本特性
  2. Java学习简单画椭圆
  3. 播放res/raw文件(MP4)
  4. 计算机怎么知道乘法优先,计算器算个明白.doc
  5. mac电脑usb连接android手机,Android安卓设备连接Mac的方法
  6. IDEA部署项目到tomcat运行成功但是页面404的两种原因
  7. python corpora.Dictionary corpus dictionary.doc2bow 词袋模型转为稀疏矩阵 词向量 不要词袋模型
  8. 年已过,新的一年如何过?
  9. archlinux自定义安装教程(一)
  10. [laravel]laravel8自动生成api文档