基于DarkNet和 OpenCV的 YOLOv3 训练雪人检测模型

下载样例 opencv- yolo3代码雪人检测处理。

GitHub

git clone https://github.com/BillyLearn/opecv-yolo3-snowman.git

下载数据集, 并拆分

  1. 安装 awscli

    pip3 iinstall awscli

  2. 获取csv 文件

    wget https://storage.googleapis.com/openimages/2018_04/class-descriptions-boxable.csv

    wget https://storage.googleapis.com/openimages/2018_04/train/train-annotations-bbox.csv

  3. 移动上面的样例代码与这两个csv文件,使它们在同一个文件夹之下。

  4. 下载图片数据集

python3 getDataFromOpenImages_snowman.py

图像被下载到 JPEGImages 文件夹中,并且相应的标签文件被写入 labels 文件夹中。 该下载将在539张图像上获得770个雪人实例。 下载可能需要一个小时左右,具体时间取决于互联网速度。

  1. 拆分数据集,训练和测试数据。

python3 splitTrainAndTest.py JPEGImages

将数据拆分为训练(90%)和测试集(10%),并生成两个文件 snowman_train.txt 和 snowman_test.txt

配置DarkNet

参考 Yolo官网

先安装依赖环境(可选)

openCV: 参考教程

cuda: 参考教程

  1. 下载darkNet 源码:

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

  2. 修改代码以定期保存模型文件

    vim examples/detector.c

    if(i%10000==0 || (i < 1000 && i%100 == 0)){
    to
    if(i%1000==0 || (i < 2000 && i%200 == 0)){

  3. 更改Makefile 文件

    vim Makefile

    如果用GPU运行:

    GPU = 1

    如果安装了cudnn:

    CUDNN=1

    如果安装了opencv:

    OPENCV =1

    如果怎么都没安装,只是用CPU运行,则不用修改Makefile文件

  4. 编译

    make

  5. 如果还想再修改Makefile

    make clean

    vim Makefile

    make

  6. 下载预训练 模型, 就放在当前 darknet 文件夹下

    wget https://pjreddie.com/media/files/darknet53.conv.74

开始训练模型

  1. 在雪人样例代码中,修改 darknet.data文件

    classes = 1
    train  = snowman_train.txt
    valid  = snowman_test.txt
    names =  classes.names
    backup = weights/
    

    对应的文件路径配置,找到对应的位置存放。

  2. 可以修改超参数配置 darknet-yolov3.cfg

    [net]
    # Testing
    # batch=1
    # subdivisions=1
    # Training
    batch=64
    subdivisions=32
    

    这里我把subdivisions 修改为32

  3. 开始训练

    ./darknet detector train ./darknet.data ./darknet-yolov3.cfg ./darknet53.conv.74 > ./train.log

    对应的文件夹对应的位置

  4. 可以查看训练日志

    grep “avg” train.log

    下面是我的训练过程. 可以看到会越来越收敛。

1
在这里插入图片描述

  1. 如果想观察loss趋势图

    python3 plotTrainLoss.py train.log
    loss

测试模型

  1. 修改样例代码 object_detection_yolo.py 的配置路径

    modelConfiguration = “/data-ssd/sunita/snowman/darknet-yolov3.cfg”;
    modelWeights = “/data-ssd/sunita/snowman/darknet-yolov3_final.weights”;

    to

    modelConfiguration = “darknet-yolov3.cfg”;
    modelWeights = “./weights/darknet-yolov3_600.weights”;

  2. 修改注释darknet-yolov3.cfg, 以便测试

	# Testing
	batch=1
	subdivisions=1
	# Training
	# batch=64
	# subdivisions=32
	width=416
	height=416
  1. 测试图片, 可从网上随意找一张雪人的照片拿来测试

    python object_detection_yolo.py --image=snowmanImage.png

snowmanImage.jpg
在这里插入图片描述
snowmanImage_yolo_out_py.jpg
在这里插入图片描述

参考资料
https://pjreddie.com/darknet/yolo/
https://www.learnopencv.com/training-yolov3-deep-learning-based-custom-object-detector/
https://blog.csdn.net/new_delete_/article/details/84797041
https://zhuanlan.zhihu.com/p/35490655

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值