yoloV3 Tensorflow版训练自己数据集

终于有人放出了 yoloV3 Tensorflow 版本

项目地址 :https://github.com/Deep-Learning-Studyroom/yolo_v3_tensorflow.git
论文地址 :https://pjreddie.com/media/files/papers/YOLOv3.pdf

项目同时支持CPU和GPU可选用进行识别项目

项目结构

下载好的git包括以下几个主要文件

–checkpoint #存放已训练好的权重文件 注:后面自己训练的权重也会放到这个文件下。
–core #yolov3 核心文件
–data #包含了一个测试数据集和为训练用的准备文件,后面细说。
–doc #包含依赖文件描述和一些图表
–scripts #训练中要用到的一些脚本文件
convert_weight.py
nms_demo.py #图片版本测试
video_demo.py #视频/摄像头 版本测试
quick_train.py #开始训练

简单测试

这里使用项目自带的图片文件和mp4文件简单测试性能
修改并执行 nms_demo.py 或 python video_demo.py 文件
classes = utils.read_coco_names(’./data/coco.names’) #指定使用的分类种类文件
input_tensor, output_tensors = utils.read_pb_return_tensors(gpu_nms_graph, “./checkpoint/yolov3_gpu_nms.pb”,
[“Placeholder:0”, “concat_10:0”, “concat_11:0”,
“concat_12:0”]) #指定所要加载的预训练权重文件

下载地址 :https://github.com/YunYang1994/tensorflow-yolov3/releases/download/v1.0/yolov3.weights
CSDN下载:https://download.csdn.net/download/weixin_41819529/10968952

下载后只有一个weights,放到checkpoint文件夹中,在terminal执行

python convert_weight.py --convert --freeze

即可生成/checkpoint/yolov3_gpu_nms.pb /checkpoint/yolov3_cpu_nms.pb
git项目中的图

我这里简单修改了下用来批量处理图片数据

IMAGE_H, IMAGE_W = 416, 416
with tf.Session(graph=gpu_nms_graph) as sess:
    path = 'data/demo_data/testimg/'
    imgNames = os.walk(path)
    for imgname in imgNames:
        for name in imgname[2]:
            img = Image.open(path+name)
            img_resized = np.array(img.resize(size=(IMAGE_H, IMAGE_W)), dtype=np.float32)
            img_resized = img_resized / 255.
            boxes, scores, labels = sess.run(output_tensors, feed_dict={input_tensor: np.expand_dims(img_resized, axis=0)})
            image = utils.draw_boxes(name,img, boxes, scores, labels, classes, [IMAGE_H, IMAGE_W], show=True)

可以看到处理速度还是非常的快,下面进行训练

训练数据集

项目给了一个训练Demo

地址 :https://github.com/YunYang1994/raccoon_dataset.git

下载使用或者使用项目 scripts 中 make_raccoon_tfrecords.sh 脚本会自动下载

1、项目图片准备
2、项目训练需要准备3个文本文件,分别为

dataset.txt: 用来描述你准备的训练集和测试集图片信息,文件内容格式为

xxx/xxx.jpg 18.19 6.32 424.13 421.83 20 323.86 2.65 640.0 421.94 20
#image_path x_min y_min x_max y_max class_id x_min y_min … class_id

anchors.txt:先按照项目中给的值来做后面会调整

0.10,0.13, 0.16,0.30, 0.33,0.23, 0.40,0.61, 0.62,0.45, 0.69,0.59, 0.76,0.60, 0.86,0.68, 0.91,0.76

class.names:你要分几个类就写几个

person bicycle car … toothbrush

3、分出训练数据和测试数据

修改 dataset.txt 为两个文件 一个是train.txt 存放训练数据 一个是test.txt 存放测试数据
Demo中存放数据比例为 9:1 , 200个数据训练180 测试20

4、转成tensorflow专门的tfrecord格式

python core/convert_tfrecord.py --dataset_txt ./raccoon_dataset/train.txt --tfrecord_path_prefix ./raccoon_dataset/raccoon_train
python core/convert_tfrecord.py --dataset_txt ./raccoon_dataset/test.txt --tfrecord_path_prefix ./raccoon_dataset/raccoon_test

此步骤生成两个.tfrecords文件

5、python show_input_image.py

展示了10个转换的图片

6、python kmeans.py

我理解为通过kmeans算法重新优化anchors值
因为我的训练图片都是截图所以可以看到重新生成的anchors里面都是1

7、python convert_weight.py --convert

读取并转化yolo3的预训练weights文件

8、python quick_train.py

开始训练 ,200个图左右的大概3个小时,默认是2500次训练过程
在训练的过程中可以通过tensorboard --logdir ./data 来查看状态,chrome打不开的话把主机名换成localhost

9、使用

python convert_weight.py -cf ./checkpoint/yolov3.ckpt-2500 -nc 1 -ap ./data/raccoon_anchors.txt --freeze

来固化ckpt文件,使其变成一个文件
以为我后面要使用tensorflow serving所以我直接用save model来生成pb文件了

10、然后就可以愉快的使用了

11、官方讨论群

https://github.com/YunYang1994/tensorflow-yolov3/issues/39

  • 8
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 50
    评论
要使用yolov3-keras训练自己的数据集,您需要按照以下步骤进行操作: 1. 数据集准备: 首先,您需要准备您自己的数据集,并将其进行标注。您可以使用VOC2007数据集作为参考。确保您的数据集包含正确的文件夹结构,并且您的标注文件与图像文件匹配。 2. 生成训练集和验证集: 根据您的数据集,创建一个用于训练的文件夹和一个用于验证的文件夹。将您的数据集按比例划分到这两个文件夹中。 3. 修改参数文件: 根据您的数据集和需求,修改yolov3.cfg参数文件。确保您根据您的类别数量,修改参数文件中的类别数相关的选项。同时,您还可以根据需要调整其他参数,如输入图片大小等。 4. 修改类别文件: 创建一个voc_classes.txt文件,并在其中列出您的数据集中的类别名称。确保类别名称的顺序与您的标注文件中的类别顺序一致。 5. 修改训练脚本: 修改train.py文件,以便加载您的数据集和参数文件。确保您修改了相关的路径和文件名,并设置正确的训练参数,如批量大小、学习率等。 6. 开始训练: 运行train.py文件,开始训练您的模型。此时,您需要等待训练过程完成。训练时间可能会根据数据集的大小和计算资源的性能而有所不同。 请注意,您还需要安装相应的环境依赖,如tensorflow-gpu和keras,确保您的环境与yolov3-keras的要求一致。另外,您还可以参考相关的行动计划和具体实现内容,以了解更多关于训练自己数据集的细节。 总结起来,要使用yolov3-keras训练自己的数据集,您需要准备数据集、生成训练集和验证集、修改参数文件、修改类别文件、修改训练脚本并开始训练。记得根据自己的需求进行相应的调整和修改。希望这些信息对您有所帮助!
评论 50
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值