Bootstrap

用YOLOV3训练自己的数据集(Pytorch版)

参考连接:http://t.csdn.cn/ay3lw

 (这位大大已经写的很详细了,在这里补充自己复现并且在参考链接中没有提及的细节)

 1.关于下载的YOLOv3项目中没有cfg文件:有cfg文件的是YOLOV3-v6以下的版本,下载的时候可以对并版本下载。

 2.修改filter数目,在配置文件的每一个yolo层上修改,注意不要看漏!!!

 3.不知道如下运行这个脚本问题。第一:先下载darknet这个项目,在这个项目下命令行先make一下,即输入'make'后按回车运行,然后将yolov3-tiny.cfg和yolov3-tiny.weights直接复制到darknet这个根目录下,然后输入下面图中给的脚本运行,在根目录下就有相应文件。

 

4.所遇代码问题:RuntimeError: result type Float can't be cast to the desired output type long int

Traceback (most recent call last):
  File "train.py", line 537, in <module>
    train(hyp, opt, device, tb_writer, wandb)
  File "train.py", line 288, in train
    loss, loss_items = compute_loss(pred, targets.to(device), model)  # loss scaled by batch_size
  File "/home/zhoujing/oj-hyn/YOLOV4/utils/loss.py", line 66, in compute_loss
    tcls, tbox, indices, anchors = build_targets(p, targets, model)  # targets
  File "/home/zhoujing/oj-hyn/YOLOV4/utils/loss.py", line 167, in build_targets
    indices.append((b, a, gj.clamp_(0, gain[3] - 1), gi.clamp_(0, gain[2] - 1)))  # image, anchor, grid indices
RuntimeError: result type Float can't be cast to the desired output type long int

 将utils下的loss.py中gain = torch.ones(6, device=targets.device)改为gain = torch.ones(6, device=targets.device).long()即可。
原因是新版本的torch无法自动执行此转换,旧版本torch可以。

 5.AttributeError: '_OpNamespace' object has no attribute 'nms'

 python版本问题

;