使用yolo3模型训练自己的数据集

本项目地址:https://github.com/Cw-zero/Retrain-yolo3

一、运行环境

1. Ubuntu16.04、

2. TensorFlow-gpu 1.4.0 或更高版本、

3. Keras 2.2.4 、

4. numpy 1.15.2(实测1.16.1会报错)。

二、创建数据集

1. 使用VOC2007数据集的文件结构:

  文件结构如下图,可以自己创建,也可以下载VOC2007数据集后删除文件内容。

  注:数据集中没有 test.py,你需要将其拷贝到VOC2007文件夹下。

2. 标注图片:

  使用LabelImg(https://github.com/tzutalin/labelImg)对训练图片进行标注生成标签,然后将所有图片放在 JPEGImages 文件夹下,将所有标签(.xml)放在 Annotations 文件夹下。

3. 划分数据集:

  python test.py  90%为训练集(train.txt), 9%为测试集(test.txt), 1%为评估数据集(val.txt)。txt文件保存在 ImageSets/Main 下。

4. 转换标签格式:

  python voc_annotation.py, 在执行之前,需要根据数据集的实际类别,修改voc_annotation.py中的classes(与标注时的class名字一样)。执行之后,将会得到train.txt、test.txt、val.txt,文本内容是:

  img_path、box位置(top left bottom right)、类别索引(0 1 2 ...)

三、准备训练

1.修改yolo3的网络结构:打开yolo3.cfg,搜索"yolo",如下图所示,需要修改filters、classes、random,一共可搜索到三处yolo,每处都需要修改。

  filters = 3x(5+len(classes))

  classes = len(classes)

  random:默认是1,显存小改为0

2. 确认相关依赖文件:

  a. model_data/voc_classes.txt:与你的class一致,一般需要手动修改;

  b. model_data/yolo_anchors.txt:确认存在即可;

  c. model_data/yolo_weights.h5:由 yolov3.weights 转换得到,需要先下载yolov3.weights,然后 python convert.py yolov3.cfg yolov3.weights model_data/yolo_weights.h5

  d. 存在logs文件夹

3. 开始训练:python train.py

参考:

https://github.com/qqwweee/keras-yolo3

  



最新文章

  1. BZOJ 1061: [Noi2008]志愿者招募
  2. NOIP 考前 并查集复习
  3. itext 落雨 out of membery Memory Optimization
  4. 用anaconda的pip安装第三方python包的日志
  5. No matching provisioning profiles found for "Applications/MyApp.app”问题解决
  6. 学习makefile的一个工程示例
  7. DB 注意事项 优化数据库查询
  8. 图文浅析Binder机制
  9. [math] 什么是双曲函数(转发)
  10. Java基础学习-类型转换之隐式转换
  11. JavaSE基础知识(5)—面向对象(5.6 static关键字)
  12. SQL 给视图赋权限
  13. Mysql(Mariadb)数据库主从复制
  14. B - Assignment
  15. 搭建 Guacamole 并解决各种坑和创建不了虚拟驱动器导致无法实现文件传输的方法
  16. 记录:js删除数组中某一项或几项的几种方法(转)
  17. 机器学习 MLIA学习笔记(二)之 KNN算法(一)原理入门实例
  18. Maps.newHashMapWithExpectedSize(2)
  19. 磁盘 -> 硬盘 -> c盘 && 内存
  20. 两个Integer比较大小需要注意的误区

热门文章

  1. oracle游标的定义使用
  2. ios下使用overflow scroll情况下,到达最极端的情况时会拖动整个页面的解决办法
  3. 使用spring的DefaultResourceLoader自定义properties文件加载工具类
  4. Vsftpd软件包的获取与安装
  5. 为什么JavaWeb项目要分层
  6. bzoj1880: [Sdoi2009]Elaxia的路线(spfa,拓扑排序最长路)
  7. 《编写可维护的Javascript》学习总结
  8. SqlServer知识点-操作xml
  9. input checkbox 选择内容输出多少个
  10. html5前端杂记