Andy-Yun/Pytorch-Yolov3_Log

  • 前言:算法测试_20190627

  • The latest test results from yolov3-tiny-voc version of andy-yun pytorch are as follows:


    在这里插入图片描述

    I’ll adjust some parameters and retrain, and keep a record of training next.


  • First Trial
    如果你也想用andy-yun版本的pytorch训练yolov3或者tiny-yolov3,你可以参考他的github: https://github.com/andy-yun/pytorch-0.4-yolov3
    该算法只保存最后的5个epoch,每5个epoch保存一次,每10个epoch做一次验证,并将记录保存在savelog.txt中,自动计算max_epochs
    learning_rate 与 train.py中的processed_batches有关,processed_batches即迭代次数,可打印查看
    作者在自己的训练集上取得的成绩:using yolov3 with self.rescore = 1 and latest code, mAP = 74.9. (with 170 epochs training)
    在训练之前你需要熟悉作者参考的github: https://github.com/marvis/pytorch-yolo2.


    我们可以按照作者教程中提到的下载官方的预训练权重,查看检测效果并检查运行环境。
    用作者提供的方法进行验证需要参考marvis 的教程,那里有更加详细的介绍。


    这里直接贴上第一次训练时的一些设置:
    首先是一些参数的修改,比较少:
    –data,default = ‘cfg/voc.data’
    –config, default= ‘cfg/yolov3-tiny-voc.cfg’
    –weights, default = ‘yolov3-tiny.weights’
    在配置文件中,anchors的数据来自 https://github.com/AlexeyAB/darknet,当然你还需要设置其他参数:
    anchors = 37,59, 67,160, 140,117, 145,282, 286,194, 329,352
    classes = 20
    num = 6
    每一层[yolo]前一层的
    filters = 75
    [net]中的batch = 32(batch = 64时,显存溢出)(在使用 weights_autosave.py抓取最好权重时,显存溢出现象时有时无,降低batch可以解决。)


    开始训练:python train.py -d cfg/voc.data -c cfg/yolov3-tiny-voc.cfg -w yolov3.weights -r


    第95个epoch训练结束,获得权重epoch_95.weight,结果如第一份表格所示。
    本次训练的max_epochs 是根据训练样本的数量自动计算,在train.py中这样表示:
    max_epochs = max_baches*bash_size//nsamples+1 #其中的max_baches为最大迭代次数50200,bash_size取batch = 32, nsamples为所有样本16551.


    在第10—20个epoch中出现bug:
    RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 0. Got 416 and 480 in dimension 2 at /pytorch/aten/src/TH/generic/THTensorMath.cpp:3616
    错误原因输入的数据维度不一致,这个问题在作者的 issues 栏目有一些讨论,在marvis 的最后也有一些提示。
    通过修改dataset.py 中的 line62,即
if index % 64 == 0 >> if self.seen % (self.batch_size * 10) == 0    #in paper, every 10 batches, but we did every 64 images

  • Second
    保存所有的epoch, 不移除旧的epoch —》只保存倒数的5个epoch
    每隔1个epoch保存一次,格式 epoch_d.weights.此外,每个epoch结束后,保存权重yolov3-tiny-voc-last.weights并持续自更新—》每隔个5epoch保存一次
    结合 weights_autosave.py获取最好权重
    在配置文件 [net] 中添加 max_epochs = 180, 设置max_epochs
    修改learning_rate衰减策略…
    优化器Adam ----》SGD
    修改预训练权重,采取AlexeyAB的方法, 提取 yolov3-tiny.weights 前15层:yolov3-tiny-voc.conv.15

  • Q: weights_autosave.py saved yolov3-tiny-voc.weight.best.0,map = 47.08% IOU = 40.18, differ from epoch_160.weights, map = 53.59% % IOU = 44.64%, in using Alexey’s calculation.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值