TX2+darknet

mac2026-06-07  6

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/dhaduce/article/details/80379792   本人准备使用YOLO进行人脸检测,硬件设备为Jetson TX2。查阅YOLO官网,要部署YOLO,首先要安装CUDA、CUDNN、OPENCV,然后部署Darknet,最后部署YOLO。

本文参考: https://pjreddie.com/darknet/yolo/

https://pjreddie.com/darknet/install/

https://zhuanlan.zhihu.com/p/35630431

 

准备工作:

1. 安装CUDA、CUDNN和OPENCV,由于笔者使用的设备TX2在刷机之后,自带CUDA9.0和OPENCV3.3.1,并且已经装过CUDNN,可直接开始安装Darknet;若没有CUDNN,可参看:https://blog.csdn.net/dhaduce/article/details/80155121

2. 了解YOLO。YOLO将物体检测作为回归问题求解。基于一个单独的end-to-end网络,完成从原始图像的输入到物体位置和类别的输出。简单的说,就是一个字快。详细说明可参看官网:https://pjreddie.com/darknet/yolo/;还有论文:https://arxiv.org/abs/1506.02640

 

部署过程:

1. 部署darknet

git clone https://github.com/pjreddie/darknet.git   cd darknet   sudo gedit Makefile 修改Makefile:

GPU=1 CUDNN=1 OPENCV=1 OPENMP=0 DEBUG=0   ARCH= -gencode arch=compute_53,code=[sm_53,compute_53] \       -gencode arch=compute_62,code=[sm_62,compute_62] #      -gencode arch=compute_20,code=[sm_20,sm_21] \ This one is deprecated? # This is what I use, uncomment if you know your arch and want to specify # ARCH= -gencode arch=compute_52,code=compute_52 make -j4 部署成功会出现如下信息:

mkdir -p obj gcc -I/usr/local/cuda/include/  -Wall -Wfatal-errors  -Ofast.... gcc -I/usr/local/cuda/include/  -Wall -Wfatal-errors  -Ofast.... gcc -I/usr/local/cuda/include/  -Wall -Wfatal-errors  -Ofast.... ..... gcc -I/usr/local/cuda/include/  -Wall -Wfatal-errors  -Ofast -lm.... 2. 部署YOLOv3

wget https://pjreddie.com/media/files/yolov3.weights //下载已经训练好的YOLO文件 3. 测试yolov3

./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg 测试完成会出现如下信息: 

layer     filters    size              input                output     0 conv     32  3 x 3 / 1   416 x 416 x   3   ->   416 x 416 x  32  0.299 BFLOPs     1 conv     64  3 x 3 / 2   416 x 416 x  32   ->   208 x 208 x  64  1.595 BFLOPs     .......   105 conv    255  1 x 1 / 1    52 x  52 x 256   ->    52 x  52 x 255  0.353 BFLOPs   106 detection truth_thresh: Using default '1.000000' Loading weights from yolov3.weights...Done! data/dog.jpg: Predicted in 0.029329 seconds. dog: 99% truck: 93% bicycle: 99% 如安装了opencv会弹出图像:

 

在data文件里有好多测试图片

4. 在data文件里有一些测试图片,可以替换测试命令中的data/dog.jpg为data/eagle.jpg

data/person.jpg data/horses.jpg data/scream.jpg data/giraffe.jpg data/kite.jpg 也可以下载jpg格式的图片进行测试

5. 调整阈值

YOLO默认的阈值为.25 可以在测试语句最后面添加 -thresh <阈值> 从而修改阈值 

./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg -thresh .1 使用摄像头进行实时检测

./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights 笔者在进行测试时,出现如下错误:

libv4l2: error setting pixformat: Invalid argument libv4l2: error setting pixformat: Invalid argument libv4l2: error setting pixformat: Invalid argument libv4l2: error setting pixformat: Invalid argument VIDEOIO ERROR: V4L2: Pixel format of incoming image is unsupported by OpenCV Couldn't connect to webcam. OPENCV默认采用0号摄像头,TX2的0号摄像头是板子上自带的板上摄像头,而我们的usb摄像头是1号,故笔者使用如下代码,解决了问题:

./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights -c 1//使用1号摄像头 如果上述方法不能解决问题,可以尝试如下操作:

首先检查是否安装了v4l1compat.so

dpkg -S v4l1compat.so 若没有安装,则安装;若找到该文件,则跳过安装,进行下一步

apt-cache search libv4l sudo apt-get install libv4l-ruby1.8 然后添加环境变量

export LD_PRELOAD=/usr/lib/aarch64-linux-gnueabihf/libv4l/v4l1compat.so export LD_PRELOAD=/usr/lib/aarch64-linux-gnueabihf/libv4l/v4l2convert.so sudo ldconfig ———————————————— 版权声明:本文为博主「dhaduce」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/dhaduce/article/details/80379792

最新回复(0)