Closed chenjunson closed 4 years ago
是不是没有充分稀疏化训练?
我也考虑过是否稀疏化不够的问题,但是我的percent 的值只取了0.1,应该来说不管剪枝后的map咋低,也不应该低到0呀。我去尝试着剪枝了一下没有经过稀疏化训练的yolov3模型,percent 的值也只取了0.1,剪后的结果是可以的,剪后模型精度几乎没有下降。yolov3模型在不稀疏化情况下,percent 的值取0.1都能正常剪,而我的那个yolov3-mobilenet经过1200次的稀疏化后,再剪枝结果还是精度为0。
是这样的,基于mobilenet的模型主干网络参数本来已经很少了,其实被剪得大部分通道是在后处理部分,如果同样使用0.1得剪植率,mobilnet会剪更多的后处理部分。我猜测是由于这个原因造成yolov3直接剪植效果还可以。所以还是需要微调的,最后的精度应该以微调的结果为准。
你的意思是我的那个yolov3-mobilenet稀疏化不够所以才导致剪枝后的精度为0吗?而哪个yolov3模型因为本身就包含了很多参数所以容易剪。还有就是在之前你给的那个稀疏化训练指令范例中包含了--accumulate 1这个参数指令,但是在train.py中好像没有存在这个参数指令,你可以去看看。
我的意思是你需要微调一下,再看结果。 谢谢提醒,这是之前仓库忘记修改的,我修改一下。
我的意思是你需要微调一下,再看结果。 谢谢提醒,这是之前仓库忘记修改的,我修改一下。
你好,问一下,这个工程对yolov3,yolov3-mobilenet都支持剪枝嘛
我的意思是你需要微调一下,再看结果。 谢谢提醒,这是之前仓库忘记修改的,我修改一下。
你好,问一下,这个工程对yolov3,yolov3-mobilenet都支持剪枝嘛
是的,但是yolov3-mobilenet只能normal剪植
我的意思是你需要微调一下,再看结果。 谢谢提醒,这是之前仓库忘记修改的,我修改一下。
你好,问一下,这个工程对yolov3,yolov3-mobilenet都支持剪枝嘛
是的,但是yolov3-mobilenet只能normal剪植
对ghost-yolo支持嘛
我的意思是你需要微调一下,再看结果。 谢谢提醒,这是之前仓库忘记修改的,我修改一下。
你好,问一下,这个工程对yolov3,yolov3-mobilenet都支持剪枝嘛
是的,但是yolov3-mobilenet只能normal剪植
对ghost-yolo支持嘛
还没有做,最近会做
我进行了一下微调,但是有个报错。我输入的微调指令是:python3 train.py --cfg /yolov3-mobilenet/prune_0.65_yolov3-mobilenet.cfg --data data/obj.data --weights weights/yolov3_hand_normal_pruning_0.65percent.weights --batch-size 6 报错如下:chenjunsong@chenjunsong-GJ5CN64:~/U-YOLOv3$ python3 train.py --cfg /yolov3-mobilenet/prune_0.65_yolov3-mobilenet.cfg --data data/obj.data --weights weights/yolov3_hand_normal_pruning_0.65percent.weights --batch-size 6 Apex recommended for faster mixed precision training: https://github.com/NVIDIA/apex Namespace(KDstr=-1, accumulate=2, adam=False, batch_size=6, bucket='', cache_images=False, cfg='./cfg/yolov3-mobilenet/prune_0.65_yolov3-mobilenet.cfg', data='data/obj.data', device='', epochs=1201, evolve=False, img_size=[320, 640], multi_scale=False, name='', nosave=False, notest=False, prune=-1, pt=False, qlayers=-1, quantized=-1, rect=False, resume=False, s=0.001, single_cls=False, sr=False, t_cfg='', t_weights='', weights='weights/yolov3_hand_normal_pruning_0.65percent.weights') Using CUDA device0 _CudaDeviceProperties(name='GeForce GTX 1060', total_memory=6072MB)
Start Tensorboard with "tensorboard --logdir=runs", view at http://localhost:6006/
Traceback (most recent call last):
File "train.py", line 511, in
我进行了一下微调,但是有个报错。我输入的微调指令是:python3 train.py --cfg /yolov3-mobilenet/prune_0.65_yolov3-mobilenet.cfg --data data/obj.data --weights weights/yolov3_hand_normal_pruning_0.65percent.weights --batch-size 6 报错如下:chenjunsong@chenjunsong-GJ5CN64:~/U-YOLOv3$ python3 train.py --cfg /yolov3-mobilenet/prune_0.65_yolov3-mobilenet.cfg --data data/obj.data --weights weights/yolov3_hand_normal_pruning_0.65percent.weights --batch-size 6 Apex recommended for faster mixed precision training: https://github.com/NVIDIA/apex Namespace(KDstr=-1, accumulate=2, adam=False, batch_size=6, bucket='', cache_images=False, cfg='./cfg/yolov3-mobilenet/prune_0.65_yolov3-mobilenet.cfg', data='data/obj.data', device='', epochs=1201, evolve=False, img_size=[320, 640], multi_scale=False, name='', nosave=False, notest=False, prune=-1, pt=False, qlayers=-1, quantized=-1, rect=False, resume=False, s=0.001, single_cls=False, sr=False, t_cfg='', t_weights='', weights='weights/yolov3_hand_normal_pruning_0.65percent.weights') Using CUDA device0 _CudaDeviceProperties(name='GeForce GTX 1060', total_memory=6072MB)
Start Tensorboard with "tensorboard --logdir=runs", view at http://localhost:6006/ Traceback (most recent call last): File "train.py", line 511, in train(hyp) # train normally File "train.py", line 94, in train model = Darknet(cfg, quantized=opt.quantized, qlayers=opt.qlayers).to(device) File "/home/chenjunsong/U-YOLOv3/models.py", line 334, in init self.module_defs = parse_model_cfg(cfg) File "/home/chenjunsong/U-YOLOv3/utils/parse_config.py", line 31, in parse_model_cfg mdefs[-1][key] = [int(x) for x in val.split(',')] File "/home/chenjunsong/U-YOLOv3/utils/parse_config.py", line 31, in mdefs[-1][key] = [int(x) for x in val.split(',')] ValueError: invalid literal for int() with base 10: '[-4]'
bug已修复
问一下,哪个-pt是加载预训练模型,是所有的格式都能加载嘛??(.weights/.pt/darknet53.conv.74),这些权重都要使-pt为true嘛。
这个不是,-pt是指加载在coco数据集上预训练得模型,你说的这个是在imagenet上的预训练模型
这个不是,-pt是指加载在coco数据集上预训练得模型,你说的这个是在imagenet上的预训练模型
那我问一下,imagenet的预训练模型不用设置这个参数嘛。
嗯嗯 不用的
题主提出的问题确实存在我当时没有注意,现已更新。
导致YOLOv3mobilenet剪植后精度为零的原因为: 1、在做BN偏置补偿的时候直接使用了leakyrelu激活函数没有考虑到BN中是用的h_swish() 2、拷贝权重时没有注意到深度可分层的BN权重拷贝。
题主提出的问题确实存在我当时没有注意,现已更新。
导致YOLOv3mobilenet剪植后精度为零的原因为: 1、在做BN偏置补偿的时候直接使用了leakyrelu激活函数没有考虑到BN中是用的h_swish() 2、拷贝权重时没有注意到深度可分层的BN权重拷贝。
感谢您的工作,想请教一下您关于mobilenetv3的剪枝用的是哪一个剪枝方法, 剪枝过程中对se模块是怎么处理的?
模型能够剪枝,剪枝后模型能够被压缩,推理速度也确实变快了,但是剪枝后精度为0,就算percent 0.1精度还是为0。