Jetson嵌入式系列模型部署-2
目錄
- 前言
- 1. 源碼下載
- 2. 環境配置
- 2.1 Jtop(option)
- 2.1.1 配置pip
- 2.1.2 安裝jtop
- 2.1.3 使用jtop
- 2.2 源碼配置說明
- 3. 運行
- 3.1 .pt轉.wts
- 3.2 build
- 3.3 run
- 4. 結語
- 5. 下載鏈接
- 6. 參考
前言
給大家安利的第一個倉庫是tensorrtx。該倉庫通過TensorRT的Layer API完成模型的構建工作,自定義權重加載并通過TensorRT序列化生成engine文件,完成高性能推理工作。對模型部署有疑問的可參考上篇文章Jetson嵌入式系列模型部署-1。本文主要是針對tensorrtx項目中的yolov5完成嵌入式模型部署,本文參考自tensorrtx的README.md,具體操作流程作者描述非常詳細,這里再簡單過一遍,本次訓練的模型使用的是yolov5s-6.0,類別數為2,為口罩識別😷。
1. 源碼下載
使用如下指令
$ git clone https://github.com/wang-xinyu/tensorrtx.git注:不同版本的yolov5使用不同版本的tensorrtx,具體參考here
刪除多余的文件,只保留yolov5文件夾
2. 環境配置
需要使用的軟件環境有TensorRT、CUDA、CUDNN、OpenCV。所有軟件環境在JetPack鏡像中已經安裝完成。博主使用的jetpack版本為JetPack4.6.1(PS:關于jetson nano刷機就不再贅述了,需要各位看官自行配置好相關環境😄,外網訪問較慢,這里提供JetPack鏡像下載鏈接Baidu Drive[password:nano]【更新完畢!!!】(PS:提供4.6和4.6.1兩個版本,注意4GB和2GB的區別,不要刷錯了),關于Jetson Nano 2GB和4GB的區別可參考Jetson NANO是什么?如何選?。(吐槽下這玩意上傳忒慢了,超級會員不頂用呀,終于上傳完了,折磨!!!)
2.1 Jtop(option)
可使用如下指令查看自己的JetPack版本簡單信息
$ cat /etc/nv_tegra_release使用Jtop可查看JetPack詳細信息。Jtop是一個由第三方開發,用于顯示Jetson開發板信息的包,可以查詢當前板子CPU,GPU使用率,實時功耗,Jetpack軟件包信息等,參考自Jetson nano安裝jtop,Jetson nano安裝pip并換源
2.1.1 配置pip
$ sudo apt install python-pip python3-pip $ pip3 install --upgrade pip $ pip install --upgrade pippip換源,指令如下
$ sudo mkdir .pip && cd .pip $ sudo touch pip.conf $ sudo vim pip.conf添加如下內容
[global] timeout = 6000 index-url = https://pypi.tuna.tsinghua.edu.cn/simple trusted-host = pypi.tuna.tsinghua.edu.cn2.1.2 安裝jtop
$ sudo pip3 install -U jetson-stats2.1.3 使用jtop
$ sudo jtop The jetson_stats.service is not active. Please run: sudo systemctl restart jetson_stats.service需要啟動相關服務,指令如下
$ sudo systemctl restart jetson_stats.service $ jtop博主Jtop顯示的jetson nano軟件包信息頁面如下
2.2 源碼配置說明
-
在命令行參數選擇模型 n/s/m/l/x/n6/ns/s6/m6/l6/x6
-
輸入尺寸的定義在yololayer.h
-
類別數的定義在yololayer.h中,如果是自定義模型,不要忘記修改
-
INT8/FP16/FP32可以通過yolov5.cpp中的宏進行選擇
-
GPU ID可以通過yolov5.cpp中的宏指定
-
NMS閾值的設置在yolov5.cpp中
-
BBox置信度閾值的設置在yolov5.cpp中
-
Batch size的設置在yolov5.cpp中
3. 運行
3.1 .pt轉.wts
tensorrtx項目通過tensorRT的Layer API一層層搭建模型,模型權重的加載則通過自定義方式實現,通過get_wts.py文件將yolov5模型的權重即yolov5.pt保存成yolov5.wts,生成的yolov5.wts文件即作者自定義的權重文件方便后續加載使用。給出相關權重文件的下載鏈接地址Baidu Drive[password:yolo]
權重的生成在本地完成即可,將轉換生成的yolov5.wts文件拷貝回到yolov5文件夾下
yolov5s.wts文件生成指令如下:
$ python gen_wts.py -w weights/yolov5s.pt yolov5s.wts錯誤如下:
Traceback (most recent call last):File "gen_wts.py", line 6, in <module>from utils.torch_utils import select_device ModuleNotFoundError: No module named 'utils.torch_utils'解決方案如下:
get_wts.py文件依賴于yolov5官方源碼,需要下載yolov5官方源碼并進行如下操作
$ git clone -b v6.0 https://github.com/ultralytics/yolov5.git // 下載yolov5-6.0源碼 $ cp tensorrtx/yolov5/gen_wts.py yolov5-6.0 // 將get_wts.py文件和權重文件拷貝到yolov5源碼中 $ python gen_wts.py -w yolov5s.pt -o yolov5s.wts // 生成wts文件生成的wts權重文件部分內容如下圖所示
- .wts文件為純文本文件
- 350為模型所有鍵對應的數目即表示它有多少行(不包括自身)
- 每一行形式是 [權重名稱] [value count = N] [value1] [value2] … [valueN]
- model.0.conv.weight為模型權重保存的第一個鍵的名稱
- 3456為模型權重保存的第一個鍵對應值的總長度
- 后面的數字為模型權重保存的第一個鍵對應的值,以十六進制的形式進行保存
3.2 build
加載yolov5s.wts權重文件,并通過tensorRT序列化生成engine引擎文件。注意先修改下yololayer.h中的CLASS_NUM,修改為自訓練模型的類別數。如下圖所示,本次訓練的模型類別數為1,故將CLASS_NUM修改為1。
修改完成后便可進行編譯生成引擎文件,指令如下
$ cd tensorrtx/yolov5 $ mkdir build && cd build $ cp ../yolov5s.wts ./ $ cmake .. && make $ sudo ./yolov5 -s yolov5s.wts yolov5s.engine s圖解如下所示,執行完成之后會在build目錄下生成yolov5s.engine引擎文件
3.3 run
通過tensorRT生成的engine文件進行模型推理,指令如下
$ sudo ./yolov5 -d yolov5s.engine ../images/執行完成后會在build目錄下生成推理完成后的圖片,圖解如下
檢測的圖片效果如下圖所示
注:關于調用相關攝像頭檢測可以參考here自行修改
4. 結語
本篇博客只是一個引子,帶大家認識到這個項目,并做了最基礎的演示,其他模型的部署工作需要各位看官自己去挖掘啦😃。如果想簡單了解下tensorRT部署知識可參考上篇文章Jetson嵌入式系列模型部署-1,下篇文章將會介紹另一個項目即tensorRT_Pro,該項目通過TensorRT的ONNX parser解析ONNX文件完成模型的構建工作,可參考下篇文章Jetson嵌入式系列模型部署-3。敬請期待!!!
5. 下載鏈接
- 源碼下載鏈接Baidu Drive[password:yolo],若有改動請參考最新
- 只保留了yolov5文件夾
- yolov5/yololayer.h中的CLASS_NUM已經修改為2(PS:本次模型為口罩識別😷,僅兩個類別)
- yolov5/images存放著需要推理的圖片
- 權重文件下載鏈接Baidu Drive[password:yolo]
- weights文件夾下共包含yolov5s.pt yolov5s.wts兩個文件
- yolov5s.pt是使用yolov5s-6.0訓練的口罩識別模型😷,共兩個個類別
- yolov5s.wts是通過get_wts.py生成的作者自定義的權重文件,具體生成過程請參考上面
- JetPack鏡像下載鏈接Baidu Drive[password:nano]【更新完畢!!!】,上傳忒慢
6. 參考
- tensorrtx
- tensorrtx/yolov5的README.md
- Jetson嵌入式系列模型部署-1
- Jetson嵌入式系列模型部署-3
- Jetson NANO是什么?如何選?
- Jetson nano安裝jtop
- Jetson nano安裝pip并換源
- Jetson nano+yolov5+TensorRT加速+調用usb攝像頭
感謝各位看到最后,若有幫助請幫忙點個👍
總結
以上是生活随笔為你收集整理的Jetson嵌入式系列模型部署-2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 香港第一金:5.29今日黄金 原油行情走
- 下一篇: W7建WIFI基站-笔记本手机共享上网