keras_yolov3根据自己的数据集训练模型。

第一篇:使用自己的数据集,不是从coco或voc等提取的。
首先获得标注数据集data(可以让数据公司标注,一张图片里有多个目标),里面有两个文件Annotations和JPEGImages,一个存annotation,一个存图片,二者名字一一对应依次。(最好是6位数命名,比如000001开始)。
之后,我们在data文件夹里建立一个ImageSets/Main,然后我们先使用keras来训练,
①keras训练得到的.h5文件有诸多好处,比如可以转为darknet 的weights 和cfg。可以用keras训练,然后转回去,在darknet上测试。(转换代码我会写在后面)
②此keras训练得到的模型,没有多尺度训练,先416416训练25,25 epochs,然后变化尺度,在train.py里面调整,512512训练3,5 epochs,然后再608608训练4,4 epochs得到的泛化能力非常不错,测试图片大小为608608,精度高于tensorflow-yunyang版。(样本量7287张图片,train=0.9,val=0.1)
GitHub链接:
https://github.com/sunanlin13174/YOLOV3-keras-and-tensorlfow
第一个project文件夹就是整个完整的代码。tensorflow-gpu1.14.0,keras2.3.0
step1:
运行data_process里面的process_txt_imgnames.py,然后会在ImageSets/Main下产生4个包含图片名字的txt文件。
step2:
准备运行data_process里面的voc_annotation.py,但是先修改某些必要的地方,比如class=[’…’],随便打开一个图片对应的.xml文件,看到标注的类别,依次是什么,按照它的顺序,填写class.然后修改下data_path和train_annotation和test_annotation等参数,里面有注释。然后run这个.py文件。得到my_train.txt和my_val.txt文件。
step3:
可以开始训练了,打开train,py修改部分参数,code里面有注释,在main()里面刚开始时就是要修改的参数。也可以在已有.h5模型的基础上再训练,或者自己定义保存的问价夹或名字。注意要想得到比较好的模型,两个阶段的训练都必不可少,第一阶段的训练batchsize可以大一点,但是第二阶段的batchsize要小,一般设为4,因为多了GPU内存溢出报错。test的batchsize和训练的一样大小。此时保存的.h5文件默认的是weights_only。你可以在train的时候设置保存哪种形式,也可以在得到weights_only后将其转换几次得到weights and net。见第二篇。
step4:
测试你的模型.h文件,直接打开video_demo.py文件,按需求修改参数的default值,然后打开yolo,在里面进一步修改测试的default值。

第二篇:
想必你已经得到不错的结果,但是用keras测试,即使是在GPU上,模型运行速度也不快,为此我们可以将它转到darknet,参考github代码:https://github.com/caimingxie/h5_to_weight_yolo3,这个作者说的很详细了。我的GitHub里面也有,不过按照我的项目修改了cfg文件,运行check_weights.py后会产生yolov3.weights。 tensorflow-gpu1.14.0,keras2.3.0

第三篇:
由第二篇得到的yolov3.weights和yolov3.cfg(darknet53.cfg),运行project文件夹下的convert.py,不过要修改一开始的三个参数默认值。重新得到.h5模型,这个.h5是weights and net的。我们可以进一步将其转化为yolov3.mlmodel文件,然后用mac的Xcode写一些解析yolov3输出的代码(ios工程师,但需要了.h5模型的输出。)yolov3.h5的输出为output1=1313len([Anchor1_box,Anchor2_box,Anchor3_box]),output2=2626len([Anchor1_box,Anchor2_box,Anchor3_box]),output3=5252len([Anchor1_box,Anchor2_box,Anchor3_box]).
那么如何将.h5文件转为yolov3.mlmodel呢?从github上找到coremltools,按照教程去做,yolov3的转化,参考我的github:
https://github.com/sunanlin13174/YOLOV3-keras-and-tensorlfow

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用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训练自己的数据集,您需要准备数据集、生成训练集和验证集、修改参数文件、修改类别文件、修改训练脚本并开始训练。记得根据自己的需求进行相应的调整和修改。希望这些信息对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值