SpursLipu / YOLOv3v4-ModelCompression-MultidatasetTraining-Multibackbone

YOLO ModelCompression MultidatasetTraining
GNU General Public License v3.0
445 stars 136 forks source link

加载yolov3-mobilenet模型 #37

Open Note-Liu opened 4 years ago

Note-Liu commented 4 years ago

如果我对yolov3-mobilenet网络结构做了一点改动,想使用你的yolov3-mobilenet预训练模型,命令行需要改动吗?还是说改动train.py文件?

SpursLipu commented 4 years ago

是可以的,需要你改一下那个model.py里面加载weights的函数,把遇到你新加模块那边的隔开就可以了,你可以参照我用80分类预训练模型给不同分类模型做预训练的写法,就是-pt那部分

DG205071 commented 4 years ago

是可以的,需要你改一下那个model.py里面加载weights的函数,把遇到你新加模块那边的隔开就可以了,你可以参照我用80分类预训练模型给不同分类模型做预训练的写法,就是-pt那部分

我在yolov3-mobilenet中颈部加入了cbam模块,但是训练的时候通道数出现问题,请问一下为什么会这样,加载或不加载预训练模型都一样。提示runtimeerror:Given Groups=1, weight ofsize 1024 160 1 1,except input [16, 1, 1, 1] to have 1024 channels, but got 1 channels instead

SpursLipu commented 4 years ago

是在哪行出现的问题?是在读取权重文件的时候吗?

DG205071 commented 4 years ago

是在哪行出现的问题?是在读取权重文件的时候吗?

2020-06-26 09-20-20屏幕截图

chenjunson commented 4 years ago

是可以的,需要你改一下那个model.py内部加载weights的函数,把遇到你新加模块那边的替换就可以了,你可以参照我用80分类预训练模型给不同分类模型做预训练的写法,就是-pt那部分

我在原来三层yolo检测层的基础上又添加了一个4倍降采样的yolo检测层,现在总共四个yolo检测层,结果在调用预训练模型时出现了这个报错:chenjunsong@chenjunsong-GJ5CN64:~/U-YOLOv3$ python3 train.py --data data/obj.data --batch-size 4 --cfg cfg/yolov3-mobilenet/yolov3-mobilenet-yu-1.cfg --weights weights/yolov3-mobilenet.weights -pt Apex recommended for faster mixed precision training: https://github.com/NVIDIA/apex Namespace(KDstr=-1, adam=False, batch_size=4, bucket='', cache_images=False, cfg='./cfg/yolov3-mobilenet/yolov3-mobilenet-yu-1.cfg', data='data/obj.data', device='', ema=False, epochs=601, evolve=False, img_size=[320, 640], multi_scale=False, name='', nosave=False, notest=False, prune=-1, pt=True, qlayers=-1, quantized=-1, rect=False, resume=False, s=0.001, single_cls=False, sr=False, t_cfg='', t_weights='', weights='weights/yolov3-mobilenet.weights') Using CUDA device0 _CudaDeviceProperties(name='GeForce GTX 1060', total_memory=6072MB)

Start Tensorboard with "tensorboard --logdir=runs", view at http://localhost:6006/ Model Summary: 246 layers, 2.40395e+07 parameters, 2.40395e+07 gradients Optimizer groups: 78 .bias, 63 Conv2d.weight, 105 other Traceback (most recent call last): File "train.py", line 523, in train(hyp) # train normally File "train.py", line 151, in train load_darknet_weights(model, weights, pt=opt.pt) File "/home/chenjunsong/U-YOLOv3/models.py", line 487, in load_darknet_weights bn_b = torch.from_numpy(weights[ptr:ptr + num_b]).view_as(bn_layer.bias) RuntimeError: shape '[64]' is invalid for input of size 0

Note-Liu commented 4 years ago

是可以的,需要你改一下那个model.py里面加载weights的函数,把遇到你新加模块那边的隔开就可以了,你可以参照我用80分类预训练模型给不同分类模型做预训练的写法,就是-pt那部分

我在yolov3-mobilenet中颈部加入了cbam模块,但是训练的时候通道数出现问题,请问一下为什么会这样,加载或不加载预训练模型都一样。提示runtimeerror:Given Groups=1, weight ofsize 1024 160 1 1,except input [16, 1, 1, 1] to have 1024 channels, but got 1 channels instead

加载不加载预训练模型都报错,说明和预训练模型没关系。先能跑通再加载吧。

aHodor-z commented 3 years ago

你好,我想请问一下,cbam相对应的models.py要如何修改呢?

zhaoleo1111 commented 3 years ago

是在哪行出现的问题?是在读取权重文件的时候吗?

2020-06-26 09-20-20屏幕截图

我也遇到了同样的问题,请问您解决了吗