YOLOv3-model-pruning icon indicating copy to clipboard operation
YOLOv3-model-pruning copied to clipboard

关于哪些卷积是可以裁剪的

Open lightfate opened this issue 5 years ago • 4 comments

你好! 我想问下关于哪些卷积是可以裁剪的问题,在我看来并不是所有conv2d都可以裁剪,对于yolov3中每个shortcut所关联的2个卷积(-1,-3)应该是不能裁剪的吧?(因为shortcut是相加裁剪后层数不对应) 我这边计算年下yolov3所有带bn的卷积加起来一共有26304层,其中12544层和shortcut有关联,无法裁剪,将近一半。 由于你的repo中没有给出prune.py,我不知道你是否裁剪了shortcut所关联的卷积,因为你说你裁剪了80%,不知道你是如何裁剪的,如何对付shortcut关联的这些卷积,是否裁剪了他们?

lightfate avatar Jul 17 '19 12:07 lightfate

你好! 我想问下关于哪些卷积是可以裁剪的问题,在我看来并不是所有conv2d都可以裁剪,对于yolov3中每个shortcut所关联的2个卷积(-1,-3)应该是不能裁剪的吧?(因为shortcut是相加裁剪后层数不对应) 我这边计算年下yolov3所有带bn的卷积加起来一共有26304层,其中12544层和shortcut有关联,无法裁剪,将近一半。 由于你的repo中没有给出prune.py,我不知道你是否裁剪了shortcut所关联的卷积,因为你说你裁剪了80%,不知道你是如何裁剪的,如何对付shortcut关联的这些卷积,是否裁剪了他们?

你去看一下他的 "prune_yolov3-hand.cfg" 文件,其中被shortcut限制的卷积层不参与剪枝,所以我感觉他写的80%的裁剪应该是针对剩下未被限制的卷积层。

YuGuii avatar Jul 18 '19 00:07 YuGuii

你好! 我想问下关于哪些卷积是可以裁剪的问题,在我看来并不是所有conv2d都可以裁剪,对于yolov3中每个shortcut所关联的2个卷积(-1,-3)应该是不能裁剪的吧?(因为shortcut是相加裁剪后层数不对应) 我这边计算年下yolov3所有带bn的卷积加起来一共有26304层,其中12544层和shortcut有关联,无法裁剪,将近一半。 由于你的repo中没有给出prune.py,我不知道你是否裁剪了shortcut所关联的卷积,因为你说你裁剪了80%,不知道你是如何裁剪的,如何对付shortcut关联的这些卷积,是否裁剪了他们?

你去看一下他的 "prune_yolov3-hand.cfg" 文件,其中被shortcut限制的卷积层不参与剪枝,所以我感觉他写的80%的裁剪应该是针对剩下未被限制的卷积层。

感谢回答,我去看了下的确没有裁剪shortcut限制的卷积层,但有个新细节问题,为什么如下两个route层中间的卷积层没有裁剪,是出于什么考虑吗,理论上route是卷积层深度拼接,裁剪应该不影响route。


[route] layers=-4

[convolutional] batch_normalize=1 filters=256 size=1 stride=1 pad=1 activation=leaky

[upsample] stride=2

[route] layers=-1, 61


[route] layers=-4

[convolutional] batch_normalize=1 filters=128 size=1 stride=1 pad=1 activation=leaky

[upsample] stride=2

[route] layers=-1, 36


lightfate avatar Jul 18 '19 02:07 lightfate

I have a small question. If we add L1 norm to all BN layers in training but don't prune the layers related to the shortcut layer, is it still works?

lz20061213 avatar Jul 18 '19 06:07 lz20061213

你好,我使用的是tiny剪枝,我在使用过程有一个疑问,为什么上采样层前一层的卷积层不参与剪枝呢?

Jia-June avatar May 20 '20 03:05 Jia-June