Jetson Nano 2GB部署NanoDet實現火焰檢測


前言

距離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 - RangiLyu/nanodet: ⚡Super fast and lightweight anchor-free object detection model. 🔥Only 1.8mb and run 97FPS on cellphone🔥
對於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_dataset
  img_path: ./fire/train/img
  ann_path: ./fire/train/ann
  input_szie: [320,320]
val:
  name: xml_dataset
  img_path: ./fire/val/img
  ann_path: ./fire/val/ann
  input_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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM