YOLO系列
- 本文概述
* - 一些软件依赖
- 官方网站和官方英文教程
- 下载YOLOV3并直接make编译
- 编译GPU实现YOLO
* - 要求N卡和cuda
- 编译GPU版YOLOV3
- gpu运行YOLOV3 detector
- 耗时小结
You only look once (YOLO)
本文概述
本文讲述如何在ubuntu20.04(其他版本系统也适用)下编译官方darknet框架下YOLOV3并使用提供的coco数据集的预训练权重检测识别图片。
一些软件依赖
Opencv4 这里会和官方教程有一些出入,2021-2022年的时候ubuntu里安装的多是opecv4,编译darknet YOLO的时候可能因为opencv和opencv4会报错 No package ‘opencv’ found。
CUDA
官方网站和官方英文教程
https://pjreddie.com/darknet/yolo/
下载YOLOV3并直接make编译
新建一个空文件夹,在当前路径下打开命令行,输入下面命令git clone下载,cd进下载的文件夹,编译。
git clone https://github.com/pjreddie/darknet
cd darknet
make
在darknet/makefile 里可以看到默认的make是不用gpu和opencv cudnn的。
GPU=0
CUDNN=0
OPENCV=0
OPENMP=0
DEBUG=0
下载权重文件,这里我是在/darknet/cfg文件夹路径下下载的,也可以放在不同的路径下,之后指明对应路径就行。权重248MB大小。
wget https://pjreddie.com/media/files/yolov3.weights
运行检测,检测对象是自带的darknet/dog.jpg. cfg/yolv3.cfg 是自带的,weights是刚刚下载的248MB。
./darknet detect cfg/yolov3.cfg cfg/yolov3.weights data/dog.jpg
如果weights下载在darknet路径下,可以
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
命令行会输出:
同时darknet文件夹内生成一张图片名叫predictions.jpg
至此,CPU运行YOLOV3成功跑通,识别效果也不错。
但是命令行结果里可以看出,在10700fcpu上花了17s多,比较长,下面开始gpu实现。
编译GPU实现YOLO
要求N卡和cuda
需要cuda和驱动已经安装好。Cudnn可以不需要。
nvidia-smi
编译GPU版YOLOV3
如果之前make过,先在darknet路径下打开命令行,make clean, 很快,几秒完成。
make clean
然后打开 dakenet/makefile,可以用im或者记事本打开,将最前面的几行改为
GPU=1
CUDNN=0
OPENCV=1
OPENMP=0
DEBUG=0
保存后直接make会报错 No package ‘opencv’ found。需要改为opencv4.
No package 'opencv' found
./src/image_opencv.cpp:12:1: error: ‘IplImage’ does not name a type
12 | IplImage *image_to_ipl(image im)
| ^~~~~~~~
compilation terminated due to -Wfatal-errors.
make: *** [Makefile:86: obj/image_opencv.o] Error 1
whereis opencv,找不到但是可以找到 whereis opencv4.
(base) xxxx:~/xxxxt/darknet$ whereis opencv
opencv:
(base) xxxx:~/xxxx/darknet$ whereis opencv4
opencv4: /usr/include/opencv4 /usr/share/opencv4
将makefile里的45 46行原本的opencv改为opencv4
ifeq ($(OPENCV), 1)
COMMON+= -DOPENCV
CFLAGS+= -DOPENCV
LDFLAGS+= pkg-config --libs opencv4
-lstdc++
COMMON+= pkg-config --cflags opencv4
endif
然饿仍然会有报错:
‵./src/image_opencv.cpp:12:1: error: ‘IplImage’ does not name a type
12 | IplImage *image_to_ipl(image im)
| ^~~~~~~~
compilation terminated due to -Wfatal-errors.
make: *** [Makefile:86: obj/image_opencv.o] Error 1
这时候新建一个文本文档叫做patch.diff,将以下内容复制进新建的文档并且git apply diff
ref:https://stackoverflow.com/questions/64885148/error-iplimage-does-not-name-a-type-when-trying-to-build-darknet-with-opencv
`
diff –git a/src/image_opencv.cpp b/src/image_opencv.cpp
index 7511280..c11805a 100644
Original: https://blog.csdn.net/qq_34898487/article/details/123904094
Author: yz_弘毅道远
Title: Ubuntu安装运行YOLOV3 解决opencv报错 No package ‘opencv‘ found
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/703153/
转载文章受原作者版权保护。转载请注明原作者出处!