- 前言
隨著人工智慧與機器學習技術的飛速發展,物體檢測已成為電腦視覺領域中的一個重要應用。YOLO(You Only Look Once)作為一種快速而準確的物體檢測方法,受到了廣泛關注和應用。然而,在資源有限的設備上,如樹莓派(Raspberry Pi),部署YOLOv5依然是一項挑戰。
ncnn是一個高效的神經網絡推理框架,特別適合於移動端和嵌入式設備。通過將YOLOv5與ncnn結合,我們可以在樹莓派上實現高效的物體檢測。
本篇博文將詳細介紹如何使用ncnn框架在樹莓派4B上部署YOLOv5。希望通過這篇博文,能夠幫助讀者順利地在樹莓派上實現YOLOv5的部署,並為讀者的物體檢測應用帶來啟發。
- 樹莓派上的高效物體檢測:使用ncnn框架部署YOLOv5
首先我們使用的樹梅派為樹莓派4B,這需要在上面安裝ncnn。
參照ncnn官方github,首先先確認樹莓派系統已更新到最新版本:
sudo apt update
sudo apt upgrade
接下來,我們需要安裝相關依賴:
sudo apt install build-essential git cmake libprotobuf-dev protobuf-compiler libomp-dev libvulkan-dev vulkan-tools libopencv-dev
然後下載ncnn:
git clone https://github.com/Tencent/ncnn.git
cd ncnn
git submodule update –init
接下來進行編譯:
cd ncnn
mkdir -p build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DNCNN_VULKAN=ON -DNCNN_BUILD_EXAMPLES=ON ..
make -j$(nproc)
make install
這樣ncnn的建置部分就完成了。我們使用的YOLOv5版本為6.2,先在PC上完成訓練並將YOLOv5的.pt檔轉換為.onnx格式。轉換過程也可以在PC上完成,之後將轉換好的模型放入樹莓派上。
使用以下指令進行轉換:
在這裡會生成.param與.bin檔。在進行推論之前,需要對.param文件稍作修改,將最後三個reshape層的值改為0=-1,讓它能夠動態輸入。
接著,我們使用ncnn提供的example進行編譯。使用的文件是yolov5.cpp,在這之前需要做一些修改,主要是修改載入的模型,並將模型路徑放置在/ncnn/build/examples內。
還需要根據模型修正類別。
在extract部分,可以使用netron app查看節點並進行修改。
打開netron app,讀取.param文件,根據三個permute節點中的OUTPUTS依序修改相應的值。
修改完成後,重新執行:
make -j$(nproc)
make install
最後進入/ncnn/build/examples執行:
./yolov5
效果如下,成功在樹莓派上進行推論。
- 結語
透過本文的介紹,我們成功地在樹莓派4B上部署了YOLOv5物體檢測模型,並利用ncnn框架實現了高效的推理。這一過程展示了在資源有限的嵌入式設備上,如何通過合理的軟硬體結合,達到優異的性能。從初步的環境配置和依賴安裝,到ncnn的下載和編譯,再到模型的轉換與調整,每一步都至關重要,確保了模型能夠在樹莓派上正常運行的重要環節。
我們在樹莓派上成功運行了YOLOv5模型,實現了實時的物體檢測。這不僅展示了ncnn在移動端和嵌入式設備上的強大性能,也證明了樹莓派作為一個小型且經濟實惠的設備,依然能夠在複雜的機器學習應用中大放異彩。希望通過本文的介紹,讀者能夠順利地在樹莓派上實現YOLOv5的部署。
未來,希望將類似的技術應用到更小型的設備,比如MCU利用在上TinyML等,以適應這些資源極其有限的平台。同時需要探索新的深度學習框架和技術,以實現在這些平台上的有效部署。
- Q&A
- Q: 為什麼選擇樹莓派4B來部署YOLOv5?
A: 樹莓派4B是一個小型且經濟實惠的設備,擁有較高的性能和靈活性,適合進行各類嵌入式應用。通過在樹莓派上部署YOLOv5,我們可以實現便攜的物體檢測,這對於開發者和愛好者來說都是非常有吸引力的選擇。
- Q: ncnn框架有什麼優勢?
A: ncnn是一個高效的神經網絡推理框架,特別適合於移動端和嵌入式設備。它支持多種加速技術(如Vulkan和CPU加速),能夠在資源有限的設備上提供卓越的性能。ncnn框架還具有良好的兼容性和易用性,使其成為在嵌入式環境中部署深度學習模型的理想選擇。
- Q: 在部署過程中,為什麼需要修改.param文件?
A: 在部署過程中,修改.param文件是為了確保模型能夠適應動態輸入。將最後三個reshape層的值改為0=-1,使得模型能夠接受不同大小的輸入圖像,從而提高模型的靈活性和適應性。
- Q:YOLOv5推論時間較長,是否有推論時間更短的選擇?
A: 可以參考YOLO-FastestV2。該模型相較於YOLOv5,捨去了一些精度以獲得更短的推論時間。如何結合ncnn框架進行部署,作者在GitHub上有詳細的說明,您可以參考這些資料來實現更高效的推論。
- Q: 樹莓派上部署YOLOv5後,可以應用在哪些實際場景中?
A: 樹莓派上部署YOLOv5後,可以應用於多種實際場景,如:
智能家居:進行家庭安全監控和物體識別。
自動駕駛:實現低成本的車輛和行人檢測。
農業監測:識別作物病害和害蟲。
零售業:客流量統計和商品監控。
醫療設備:實現便攜式醫療影像分析。
- 引用
評論