win10 YOLOv3-tf 训练自己的数据集

本文介绍了在Windows 10上使用YOLOv3-tf训练自定义数据集的步骤,包括获取项目、运行预训练模型的demo、制作数据集、转换数据格式、训练模型、评估模型以及使用训练权重进行预测。详细讲解了数据集的制作、权重转换和代码修改等关键环节。
摘要由CSDN通过智能技术生成

win10 YOLOv3-tf 训练自己的数据集

1.获取项目https://github.com/YunYang1994/tensorflow-yolov3

2.运行demo(查看自己配置的环境是否符合)

3.制作训练数据集
注:经过实际操作发现yolov3的darknet版本(C/C++)相比与github上的tensorflow版本实用性更强,且用起来更方便,但是在windows下配置起来可能比tf版本麻烦一些,不过还是推荐使用,详细配置及训练过程见:
https://blog.csdn.net/longlong068/article/details/105088304
:如果觉得windows下配置环境太过繁琐或者自己的电脑没有较高算力的GPU,可以采用谷歌Colab提供的免费云GPU服务来训练自己的数据集,具体操作见:谷歌Colab训练自己YOLOv3数据集

获取yolov3-tensorflow的项目

  1. 获取地址https://github.com/YunYang1994/tensorflow-yolov3

  2. 在window10 下配置对应需要的环境,采用tensorflow-gpu=1.11.0,及下载相应项目所需的包,推荐新建conda环境。(前提是安装了anaconda)

    #运行CMD 创建单独的conda环境
    conda create -n tf1.11  python=3.6.5
    #激活conda环境
    activate tf1.11
    #在环境下安装对应的包  用conda或者pip都可以
    conda install tensorflow-gpu==1.11.0 
    

    conda install除了会下载指定包外,还会下载其他附带包,如果不需要可以采用pip下载单个包,但是pip和conda下载都很慢,conda安装可以先采用conda config配置一下清华源。

    :如果要用tensoflow-gpu,要事先下载cuda和cudnn。cuda和cudnn的安装配置见之前:https://blog.csdn.net/longlong068/article/details/105087705

  3. 检查tensorflow-gpu是否正常运行

    #在配置的tf1.11环境下
    import tensorflow as tf
    print(tf.test.is_gpu_available())
    >>
    True
    

运行demo

此项目下给出了image_demo,可以使自己在整体了解一下yolov3模型和检测一下自己的环境可行性。

  1. 下载已经训练好的权重文件和权重文件格式转换

    $ cd checkpoint
    $ wget https://github.com/YunYang1994/tensorflow-yolov3/releases/download/v1.0/yolov3_coco.tar.gz
    $ tar -xvf yolov3_coco.tar.gz
    $ cd ..
    $ python convert_weight.py
    $ python freeze_graph.py
    

    以上为运行demo之前需要做的操作,因为这个demo不包括模型的训练,模型的权重文件采用事先训练好的coco数据集权重,需要下载权重文件并放到checkpoin文件下,可在项目github上下载。下载完权重后,运行convert_weight.py和freeze_graph.py后,在目录下会生成yolov3c_coco.pb文件,如下。

  2. 运行image_demo.py或video_demo.py文件

    $ python image_demo.py
    $ python video_demo.py # if use camera, set video_path = 0
    

    直接运行image_demo.py文件,其中demo的部分代码如下:

    import cv2
    import numpy as np
    import core.utils as utils
    import tensorflow as tf
    from PIL import Image
    return_elements = ["input/input_data:0", "pred_sbbox/concat_2:0", "pred_mbbox/concat_2:0", "pred_lbbox/concat_2:0"]
    pb_file         = "./yolov3_coco.pb"
    image_path      = "./docs/images/road.jpeg"
    num_classes     = 80
    input_size      = 416
    graph           = tf.Graph()
    

    其中需要关注有pb_file(即上一步产生的.pb文件),image_path(所检测的图片路径),num_class因为采用了coco数据集训练所得权重所以此处为80,此后如果要训练自己的数据集,并用此demo来以图像的形式显示出来,需要对以上三个参数进行修改。

制作自己的训练数据集

此项目的作者给的训练模型是基于VOC数据格式的,所以在训练自己的数据集之前要按一定的形式制作自己的数据集,VOC数据集的文件结构如下:

VOCdevkit
	└─VOC2007
		├─ImageSets    		# 存放数据集列表文件 主要关注其下的Main文件
		├─Annotations  		# 存放图片标签,xml 格式
		├─JPEGImages   		# 存放图片,训练集和测试集的原图片都放在这里
		├─SegmentationClass
		└─SegmentationObject
其中ImageSets
    	├─Main				#主要关注Main 存放含有划分的训练集、测试集的文件名的多个txt文件
        ├─Layout
        └─Segmentation 
  1. 按以上图创建一样结构的VOCdevkit文件夹,将要进行训练测试的原图片(不需要考虑图片是否要画框和输入图片的分辨率,此yolov3-tf模型会将不同分辨率的图片进行resize)放入JPEGImages文件下,图片最好采用以下命名格式:

  2. 采用labelimg工具进行画框生成xml文件,并设置将生成的xml文件放到Annotations文件下。labelimg下载地址:链接:https://pan.baidu.com/s/1o41wwXzHEm2kZgz52A37BA
    提取码:flwm

  3. 划分训练集和测试集,在ImageSets\Main下生成train.txt和test.txt文件(包含相应划分数据集文件名的txt)。

    可采用以下程序进行划分,此划分部分代码及流程都参考博主:

    https://blog.csdn.net/qq_38441692/article/details/103652760,在此进行感谢。

    划分数据集代码如下 在VOCdekit\VOC2007(即Annotations的上级目录)下运行spilt.py

    import os
    import random
    import sys
    
    if len(sys.argv) < 2:
        print
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值