Windows+CPU+Cygwin编译darknet运行yolo3

    xiaoxiao2024-12-23  4

    一、下载darknet

    (1)https://github.com/pjreddie/darknet  中clone&download

    (2)https://pjreddie.com/darknet/install/   在命令行下:

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

    二、安装Cygwin

    https://cygwin.com/install.html  根据系统位数下载;

    安装的时候镜像随便选一个能用的就行,比如默认的第一个:

    一定要记得选择安装一些额外的包,gcc-core、gcc-g++、make、gdb、binutils

    在View的Category下的Devel下可以找到:

    添加“安装目录\cygwin64\bin”系统路径Path,例如:

    E:\cygwin64\bin

    三、编译darknet

    (1)检查gcc,在cmd中输入:

    which gcc

    检查gcc是否安装设置为cygwin,而不是MinGW的gcc:

    (2)修改examples\Go.c 文件,开头加上“#include <sys/select.h>”,否则编译出错。

    (3)运行cygwin64,打开当前darknet的目录,例如:

    cd F:keras-yolo3-master/darknet

    (4)编译,输入:

    make

    观察到:

    make过程中无报错,且在..\darknet\obj文件夹下生成若干.o文件,即视为编译成功。

    四、训练yolo

    1. Generate your own annotation file and class names file.  

    python voc_annotation.py

    2. 运行:

    python convert.py -w yolov3.cfg yolov3.weights model_data/yolo_weights.h5

    The file model_data/yolo_weights.h5 is used to load pretrained weights.

    或者:

    wget https://pjreddie.com/media/files/yolov3.weights

    得到预训练好的权重,就不用自己再训练了

    3. 训练:

    python train.py

    用CPU的话训练时间非常长 ,50轮迭代,每次5个半小时。     Use your trained weights or checkpoint weights with command line option `--model model_file` when using yolo_video.py     Remember to modify class path or anchor path, with `--classes class_file` and `--anchors anchor_file`.

    If you want to use original pretrained weights for YOLOv3:       1. `wget https://pjreddie.com/media/files/darknet53.conv.74`       2. rename it as darknet53.weights       3. `python convert.py -w darknet53.cfg darknet53.weights model_data/darknet53_weights.h5`       4. use model_data/darknet53_weights.h5 in train.py

    五、预测

    输入:

    ./darknet

    得到:

    usage: ./darknet <function>

    说明darknet编译成功可以使用。

    ./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

    预测当前data文件夹下的dog图片:

    置信度如图,在当前文件夹下得到predictions.jpg:

    六、踩坑

    如果之前没有注意到要使用cygwin的gcc,误使用MinGW的gcc来make的话,会报错

    [Makefile:89:obj/deconvolutional_layer.o] 错误 1

    这个时候不仅要修改为cygwin的gcc,还要在obj目录下删除干净使用MinGW的gcc编译出的.o文件。

    七、参考引用

    https://www.cnblogs.com/jackkwok/p/9045890.html

    https://www.cnblogs.com/hchacha/p/7147603.html

    最新回复(0)