天天看點

jetson TX2 跑yolov3

最近導師讓跑一下yolo算法,給了我一個jetson TX2 的闆子。

内部環境: ubuntu16 + cuda-9.0 ,然後其他的都是原來學長留下來的,是以因為不懂,走了很多坑。

下面說一下 進行 YOLO 算法從 測試的過程:

1、dartnet 的架構配置(GPU)

為了好管理,我是自己在主目錄下建立了一個名字為 yolo 的檔案。然後在yolo 檔案裡打開終端:

git clone https://github.com/pjreddie/darknet.git
           

用于下載下傳dartnet 的架構,完成後會在 yolo 檔案夾中生成一個 dartnet 檔案夾,然後 cd 進去:

然後在 dartnet 檔案夾中找到 Makefile 檔案,使用 gedit 打開 修改如下:

GPU=1
CUDNN=1
OPENCV=1
OPENMP=0
DEBUG=1
           
NVCC=/usr/local/cuda-9.0/bin/nvcc
           
ifeq ($(GPU), 1) 
COMMON+= -DGPU -I/usr/local/cuda-9.0/include/
CFLAGS+= -DGPU
LDFLAGS+= -L/usr/local/cuda-9.0/lib64 -lcuda -lcudart -lcublas -lcurand
           

一定要主要檔案路徑,特别是 NVCC 那裡,我就是因為這裡路徑搞錯了,走了好多歪路。

完成後,在dartnet 為終端中進行

make

編譯

如果出現 image_opencv.cpp 的 檔案出的一個函數 image mat_to_image(Mat m) 中的

IplImage ipl = m

; 出現問題。這是由于 opencv 的版本為問題導緻的,

IplImage

mat

類型的轉換需要改成:

在進行

make

如果 dartnet 檔案中出現了 名為dartnet的執行檔案,就算編譯完成了。

下面就是下載下傳權重:

wegt https://pjreddie.com/media/file/yolov3-ting.weights
wegt https://pjreddie.com/media/file/yolov3.weights
           

下兩個的原因是,其中一個權重可能會在運作時出現自動 killed 的情況出現,比如我就是在使用yolov3.weights 時出現了自動 killed 退出的狀态(一般是記憶體問題),但是在使用 yolov3-ting.weights 時就是運作成功了。還有就是在使用 wegt 時會出現問題(無法解析主機位址),解決方法是:

sudo gedit /etc/reslove.conf
           

添加:

nameserver 8.8.8.8
nameserver 8.8.4.4

           

儲存退出,在繼續使用wget。

完成後,将 yolov3-ting.weights 與 yolov3.weights 都放到 dartnet 的檔案目錄下,然後執行:

./dartnet detect cfg/yolov3-ting.cfg yolov3-ting.weights data/dog.jpg
           

如果前面 opencv = 1 則會有圖像出來,如下:

jetson TX2 跑yolov3

繼續閱讀