目录
1、yolo源码下载下载
2、修改yolo网络编译选项
2.1、配置编译选项
2.2、设置GPU架构的计算能力
3、下载配置文件、权重文件
4、运行测试
4.1、YOLOv3 (107层深度学习网络)测试方式
4.2、YOLOv3-tiny(24层深度学习网络)测试方式
5、测试结果对比
从github上clone最新代码
git clone https://github.com/pjreddie/darknet.git
cd darknet
我们只需要关注前几行:宏定义及GPU架构。
GPU=1 #是否需要用GPU
CUDNN=1 #是否需要用CUDNN,这是NVIDIA做的一些优化,就是一些库文件,优化一些常用的矩阵操作
OPENCV=1 #是否需要用OPENCV,如果不使能程序执行完毕后不会自动弹出照片,且不能使用网络摄像头
OPENMP=1 #CPU的多线程
注意:如果使能CUDA需要制定CUDA路径,不然会报错
/bin/sh: 1: nvcc: not found
make: *** [obj/convolutional_kernels.o] Error 127
解决方法:
# 修改makefile 修改为对应的CUDA 版本
NVCC = /usr/local/cuda-10.0/bin/nvcc
#Arch 就是GPU的架构版本,没有GPU或者GPU不支持CUDA的就不用配合这里
ARCH=
-gencode arch=compute_53,code=[sm_53,sm_53] # TX1计算能力是53
-gencode arch=compute_61,code=[sm_61,compute_61] # Pascal架构 GTX 1080 计算能力6.1
-gencode arch=compute_62,code=[sm_62,compute_62] # Pascal架构 TX2 计算能力6.2
-gencode arch=compute_72,code=[sm_72,compute_72] # volta 架构 Xavier 计算能力7.2
在dartnet目录:
全功能版107层网络结构权重文件:
wget https://pjreddie.com/media/files/yolov3.weights
Tiny版24层网络结构权重文件:
wget https://pjreddie.com/media/files/yolov3-tiny.weights
注意:OpenCV 默认没有使能,识别完成后不自动显示图片,需要手动在当前目录找到。
sudo clean
sudo make -j8 #8核CPU 编译
程序自带的可用于测试的图片:
图片 |
data/dog.jpg |
data/person.jpg |
data/horses.jpg |
data/scream.jpg |
data/giraffe.jpg |
data/kite.jpg |
由于默认的cfg/yolov3.cfg中的网络输入的图片大小为618*618,图片尺寸较大,导致TX2加载107层网络的时候内存不够用,特修改其参数:
cfg下的 “yolov3.cfg”,内容如下:
width=416
height=416
以下测试统一使用新的参数进行测试。
(1)图片
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
(2)摄像头实时检测:COCO数据集训练的YOLO
./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights
注意如果TX2板子上有摄像头就需要指定使用USB摄像头,不然报错
方法:./darknet detector demo cfg/coco.data yolov3_416_416.cfg yolov3.weights -c 1
(3)视频测试:COCO数据集训练的YOLO
./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights test.mp4
(1)图片
./darknet detect cfg/yolov3-tiny.cfg yolov3-tiny.weights data/dog.jpg
(2)摄像头实时检测:COCO数据集训练的YOLO
./darknet detector demo cfg/coco.data cfg/yolov3-tiny.cfg yolov3-tiny.weights
注意如果TX2板子上有摄像头就需要指定使用USB摄像头,不然报错
方法:./darknet detector demo cfg/coco.data cfg/yolov3-tiny.cfg yolov3-tiny.weights -c 1
(3)视频测试:COCO数据集训练的YOLO
./darknet detector demo cfg/coco.data cfg/yolov3-tiny.cfg yolov3-tiny.weights test.mp4
YOLOv3实时物体识别深度神经网络测试 | |||||
运算位置 | |||||
深度学习网络及层数说明 | GPU | CPU | |||
TX2 双核丹佛2处理器、 四核ARM Cortex-A57 8G内存 @2.035GHz GPU:256CUDA核 |
YOLOv3:107层 | 图片检测时间(秒) | 0.76 | 12.1 | |
摄像头实时检测帧率 FPS | 3.4 | 0.1 | CPU运算6个CPU占用率都接近85% GPU运算6个CPU占用率都在 10-20%左右,GPU利用率99% |
||
视频测试帧率FPS | 3.4 | 0.1 | CPU运算6个CPU占用率都接近85% GPU运算6个CPU占用率都在 10-30%左右,GPU利用率99% |
||
YOLOv3-Tiny:24层 | 图片检测时间(秒) | 0.46 | 1.2 | ||
摄像头实时检测帧率FPS | 14-16 | 0.9 | CPU运算6个CPU占用率都接近75% GPU运算6个CPU占用率都在 50%左右,GPU利用率40-99% |
||
视频测试帧率FPS | 14-15.6 | 0.9 | CPU运算6个CPU占用率75%-80% GPU运算6个CPU占用率都在 60%左右,GPU利用率10-99% |
||
Xavier 8核ARM64架构,代号Carmel 16G内存 @2.2656G GPU:512CUDA核 |
YOLOv3:107层 | 图片检测时间(秒) | 0.743、0.842、1.12、1.64 | 2.9 | |
摄像头实时检测帧率 FPS | 7.4 | 0.4 | CPU运算八个CPU占用率都接近65% GPU运算8个CPU占用率都在 20%左右,GPU利用率99% |
||
视频测试帧率FPS | 7.4 | 0.4 | CPU运算八个CPU占用率都接近65% GPU运算8个CPU占用率都在 35%左右,GPU利用率 99% |
||
YOLOv3-Tiny:24层 | 图片检测时间(秒) | 0.63 | 0.36 | ||
摄像头实时检测帧率FPS | 22-28 | 3.4 | CPU运算八个CPU占用率都接近60% GPU运算8个CPU占用率都在25 %左右,GPU利用率 30-70% |
||
视频测试帧率FPS | 18-26 | 3.4 | CPU运算八个CPU占用率都接近58% GPU运算8个CPU占用率都在 60%左右,GPU利用率30-70 % |