PengyiZhang / SlimYOLOv3

This page is for the SlimYOLOv3: Narrower, Faster and Better for UAV Real-Time Applications
1.14k stars 320 forks source link

darknet fine-tune为nan #13

Open yyx1107 opened 4 years ago

yyx1107 commented 4 years ago

采用一个人手数据集,按照sr0.0001进行稀疏训练,130epoch后 P R mAP F1 126 416 0.364 0.699 0.547 0.479 0.351 127 416 0.364 0.699 0.547 0.479 0.351 128 416 0.364 0.699 0.547 0.479 0.351 129 416 0.364 0.699 0.547 0.479 0.351 130 416 0.388 0.678 0.538 0.494 0.355 然后剪枝0.4,在darknet训练全是nan,大家是什么结果呀 是因为我没达到稀疏训练的效果吗?

BeltonC commented 4 years ago

你好,我想问下,在sparsity.py文件中,updateBN中第一个参数scale一般设为多少比较好呢?

yyx1107 commented 4 years ago

你好,我想问下,在sparsity.py文件中,updateBN中第一个参数scale一般设为多少比较好呢?

他这篇论文里用的0.0001,我看论文里0.001和这个好像差不多。你的结果怎么样呀

wjjouc commented 4 years ago

@yyx1107 @BeltonC 您好,请问您是否已经进行了Channel Prunning?我在运行以下命令时: python yolov3/prune.py --cfg VisDrone2019/yolov3-spp3.cfg --weights yolov3-spp3_sparsity.weights 出现了下面的问题: Traceback (most recent call last): File "prune.py", line 389, in opt.perlayer_ratio, File "prune.py", line 160, in test m = getattr(module, 'batchnorm%d' % i) # batch_norm layer File "/home/wjj/.local/lib/python3.5/site-packages/torch/nn/modules/module.py", line 535, in getattr type(self).name, name)) AttributeError: 'Sequential' object has no attribute 'batch_norm_0' 即使按照作者提供的办法,在prune.py文件中作出下面的改动: -new_norm = getattr(new_module, 'batchnorm%d' % i) +new_norm = getattr(new_module, 'BatchNorm2d') 问题依旧存在,无法解决,您知道该怎样解决这个问题吗? 另外,在下面的命令行中: python yolov3/prune.py --cfg VisDrone2019/yolov3-spp3.cfg --data-cfg VisDrone2019/drone.data --weights yolov3-spp3_sparsity.weights --overall_ratio 0.5 --perlayer_ratio 0.1 好像--data-cfg VisDrone2019/drone.data这个参数在prune.py文件中并没有看到,是否可以省略掉--data-cfg VisDrone2019/drone.data?

yyx1107 commented 4 years ago

@yyx1107 @BeltonC 您好,请问您是否已经进行了Channel Prunning?我在运行以下命令时: python yolov3/prune.py --cfg VisDrone2019/yolov3-spp3.cfg --weights yolov3-spp3_sparsity.weights 出现了下面的问题: Traceback (most recent call last): File "prune.py", line 389, in opt.perlayer_ratio, File "prune.py", line 160, in test m = getattr(module, 'batchnorm%d' % i) # batch_norm layer File "/home/wjj/.local/lib/python3.5/site-packages/torch/nn/modules/module.py", line 535, in getattr type(self).name, name)) AttributeError: 'Sequential' object has no attribute 'batch_norm_0' 即使按照作者提供的办法,在prune.py文件中作出下面的改动: -new_norm = getattr(new_module, 'batchnorm%d' % i) +new_norm = getattr(new_module, 'BatchNorm2d') 问题依旧存在,无法解决,您知道该怎样解决这个问题吗? 另外,在下面的命令行中: python yolov3/prune.py --cfg VisDrone2019/yolov3-spp3.cfg --data-cfg VisDrone2019/drone.data --weights yolov3-spp3_sparsity.weights --overall_ratio 0.5 --perlayer_ratio 0.1 好像--data-cfg VisDrone2019/drone.data这个参数在prune.py文件中并没有看到,是否可以省略掉--data-cfg VisDrone2019/drone.data?

这是对应那个ul那个库里的.data文件,不可以省略,这个文件存的是这种格式: classes= 2 train=data/custom/train.txt valid=data/custom/valid.txt names=data/custom/classes.names 类别数,存放训练集等的位置的文件以及类别名称

broliao commented 4 years ago

@wjjouc 您好 我也遇到同样的问题,请问你是怎么解决的呢?

@yyx1107 您好,我有个疑惑,在prune.py中,剪枝后的测试程序,输入的是一张图片的路径,测试的时候只是拿这张图片来测试吗?我程序运行到测试这部分时出现错误。 image 我程序运行时报错: Traceback (most recent call last): File "D:/LJXpycharmproject/yolov3-slimyolov3/prune.py", line 398, in opt.perlayer_ratio, File "D:/LJXpycharmproject/yolov3-slimyolov3/prune.py", line 346, in test inf_out, train_out = pruned_model(imgs) # inference and training outputs File "D:\anaconda\lib\site-packages\torch\nn\modules\module.py", line 493, in call result = self.forward(*input, **kwargs) File "D:\LJXpycharmproject\yolov3-slimyolov3\models.py", line 226, in forward x = torch.cat([layer_outputs[i] for i in layers], 1) RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 1. Got 20 and 40 in dimension 2 at C:/w/1/s/tmp_conda_3.6_041836/conda/conda-bld/pytorch_1556684464974/work/aten/src\THC/generic/THCTensorMath.cu:71

我参数设置是: image 盼答复,谢谢!