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 的版本为问题导致的,IplImagemat 类型的转换需要改成:

IplImage ipl = cvIplImage(m);

在进行 make

如果 dartnet 文件中出现了 名为dartnet的执行文件,就算编译完成了。

下面就是下载权重:

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

下两个的原因是,其中一个权重可能会在运行时出现自动 killed 的情况出现,比如我就是在使用yolov3.weights 时出现了自动 killed 退出的状态(一般是内存问题),但是在使用 yolov3-ting.weights 时就是运行成功了。还有就是在使用 wegt 时会出现问题(无法解析主机地址),解决方法是:

sudo gedit /etc/resolv.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_第1张图片

你可能感兴趣的:(jetson,TX2,opencv,深度学习)