下载样例 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. 如果想观察loss趋势图

    python3 plotTrainLoss.py train.log

测试模型

  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, 以便测试

 # Testingbatch=1subdivisions=1# Training# batch=64# subdivisions=32width=416height=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

基于DarkNet和 OpenCV的 YOLOv3 训练雪人检测模型相关推荐

  1. 笔记记录--基于ccpd数据集利用Paddle OCR训练车牌检测模型

    目录 1-- 环境搭建 2-- 数据集划分 3-- 训练模型 4-- 推理测试 1-- 环境搭建 安装Paddle OCR参考 ① 创建环境 conda create -n paddle_env py ...

  2. 使用opencv训练目标检测模型基于cascade模型

    使用opencv训练目标检测模型基于cascade模型 基于Haar特征的cascade分类器(classifiers) 是Paul Viola和 Michael Jone在2001年,论文" ...

  3. OpenCV DNN支持的对象检测模型

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:opencv学堂 引言 OpenCV DNN不光支持图像 ...

  4. OpenCV推断onnx格式目标检测模型(SSD)(附完整代码)

    OpenCV推断onnx格式目标检测模型的实例 OpenCV推断onnx格式目标检测模型的实例 OpenCV推断onnx格式目标检测模型的实例 #include <algorithm> # ...

  5. MSCOCO数据集转VOC数据集训练目标检测模型

    MSCOCO数据集转VOC数据集训练目标检测模型 Images 2014 Train images [83K/13GB] 2014 Val images [41K/6GB] 2014 Test ima ...

  6. opencv调用自己训练的yolo3模型

    一 实现流程 1.准备好自己的数据集,通过yolo3结构框架训练好自己的模型文件(loss值一般训练到10就OK)yolov3源码:https://github.com/qqwweee/keras-y ...

  7. python 活体检测_基于Python+Keras+OpenCV实现实时人脸活体检测 | 文末送书

    你在互联网上找到的大多数人脸识别算法和研究论文都会遭受照片***.这些方法在检测和识别来自网络摄像头的图像.视频和视频流中的人脸方面是很是有效,可是他们没法区分现实生活中的面孔和照片上的面孔.这种没法 ...

  8. 基于Python+Keras+OpenCV实现实时人脸活体检测 | 文末送书

    你在互联网上找到的大多数人脸识别算法和研究论文都会遭受照片攻击.这些方法在检测和识别来自网络摄像头的图像.视频和视频流中的人脸方面是非常有效,但是他们无法区分现实生活中的面孔和照片上的面孔.这种无法区 ...

  9. 使用OpenCV调用Caffe-SSD训练好的模型

    前言 1.OpenCV3之后的dnn模型可以可以调用好多用深度学习框架的训练好的模型. 2.这里我演示是我自己训练的一个围棋棋盘识别模型,使用的神经网络是VGG16,OpenCV3.3,IDE是VS2 ...

最新文章

  1. TensorFlow数据统计
  2. deb和rpm文件安装
  3. k5b型计算机联锁知识,DS6-K5B计算机联锁系统日常维护注意事项
  4. mongodb启动时报错ERROR: child process failed, exited with error number 1
  5. 吊打Navicat?这款神器牛逼了~~ [ 必看 ]
  6. 优盘中发现计算机病毒怎么办,u盘中毒了文件夹被病毒隐藏怎么办?
  7. 为语音社交平台加一个防护罩,即构上线实时语音安全方案
  8. Java异常泄露敏感信息_浅谈“异常信息泄露(应用程序错误)”
  9. c 语言fabs函数的作用,c语言fabs是什么意思
  10. Eolink 征文活动- -后端研发需要的API文档工具
  11. Tableau Desktop连接MongoDB
  12. C++对象构建与使用,error: taking address of temporary [-fpermissive]
  13. 小白学 Python(23):Excel 基础操作(上)
  14. ACE-NODE: Attentive Co-Evolving Neural Ordinary DifferentialEquations(KDD 2021)
  15. 前端面试题库 面试题 JS难题,做对一半就是高手
  16. xmms mp3 wma插件
  17. c语言数星星结构体,1469: 数星星(结构体专题)
  18. bldc不同载波频率_有刷CD电机好用还是无刷BLDC电机好用?该选那个?
  19. 中国海洋大学c语言题库,2014级中国海洋大学C语言上机题库与答案.docx
  20. html之简单表格网站制作

热门文章

  1. 聚簇索引与非聚簇索引详解
  2. 前端阿里云OSS直传,微信小程序版本
  3. Nginx实战(二) Rewrite + 图片的压缩过滤
  4. 面试被问了三次的http状态码到底有什么
  5. elasticsearh中查询类型,term、match、match_all、multi_match、range、bool、boosting等
  6. HTML学生个人网站作业设计:电影网站设计——迪士尼影视电影(6页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
  7. 狼羊白菜过河问题C++
  8. 互联网新时代拓客方法,你知道几个?
  9. SPI (串行外围设备接口) 协议简介
  10. C++的封装、继承、多态