mimic相关问题

1.为什么mimic效果好?

2.为什么two-stage中直接在cls_score、bbox_pred上做mimic性能没有本身finetune的性能好?

quanquan没有给一个解释,但是他说有在cls_score上work的工作。个人理解,fast那个阶段是接了两个fc,这两个fc其实更加关注的是全局信息,而detection更加关注的是局部信息。

我的ssd的压缩改进方案:

没有使用分两步的策略,在特征层学习了之后直接使用finetune后面的几层,这几层都是直接在feature map上做预测。从小网络pooling出的cube channel少,要用卷积做升维,再进行l2-loss计算。每层的都要进行normalization,然后所有的loss相加。

             1.先使用大ssd和小ssd,尝试了在几个不同的预测层做mimic,性能上是越往深层性能越好。

             2.在一个feature的基础上,又尝试了用spp替代roi-pooling,spp的性能要好一些。

           3.最开始一直使用gt直接做,之后又做了gt加负样本,筛选出来的正负样本做。选出来的正负样本要好一些。

           4.在多层上做pooling,性能要好一些。越多的层,训练时间越慢。最后尝试在几个预测层做pooling。

           后面客户又提出给一个refinedet的压缩,最开始就直接在ssd上做,因为关注feature map,后面又用一个refinedet的大模型训练

           5.小模型换成refindet做,refindet只在4层上做预测,所以只在4层上mimic。

           6.同样的方式在大小refindet上做,refindet更好。

最初的idea可能更加关注feature map,关注object在feature map上有响应的地方,当时去类比了faster,觉得检测更关注局部信息,平移不变性。这个工作不完善,还应该做以下两个:

1.直接在mbox_loc、mbox_conf上做l2-loss,他们的shape是(1,84w1h1+126w1h1+...)、(1,16w1h1+24w2h2+...),shape跟fc的很像

2.还是在mbox_loc、mbox_conf上做,但是把anchor提取出来,在mbox_loc、mbox_conf找到相对应的位置进行l2-loss,相当于用roi进行mimic

实际做法:ssd大网络、refindet小网络,因为共享的只有conv5_3,所以在conv5_3做的l2-loss计算。

https://www.leiphone.com/news/201707/BziFcoA8Q1Ju7J6q.html

将量化和mimic结合:Quantization Mimic: Towards Very Tiny CNN for Object Detection

https://blog.csdn.net/fish_like_apple/article/details/82594366

去看!!!

https://www.zhihu.com/question/62068158

猜你喜欢

转载自www.cnblogs.com/ymjyqsx/p/9630147.html