参考链接: 传送门

细节见链接,总结下我的理解:

形变的不是卷积的 kernel,而是 feature map 上的每个pixel。

并没有对conv函数做什么变化,而是在普通的input map 和 conv之间,多做了一次conv得到input_offset map,再加上原input map,得到偏移后的新的input map pixel coor。( 这里要用到一下双线性插值)

以上就把input map要做的所有变化都做完了,剩下的就是普通conv的过程了。new input map 和 conv 。。。

Deformable Conv

  • 对于输出特征图U,正常的卷积输出的N通道
  • U上使用2N个普通卷积,得到2N的特征图,这代表变形卷积采样的偏移量(2N是代表x,y两个方向)。
  • 对于得到的2N的特征图,shape为(b,h,w,2c)。将代表偏移的特征图offsets(b,h,w,2c)与原图(b,h,w,c)相加得到实际的采样位置coord(因为offset可能是float,所以要用双线性插值得到最终形变后定位到的pixel位置)。 
    • 将偏移(b,h,w,2c)变形为–>(b∗c,h,w,2)
    • 输入(b,h,w,c)变形为–>(b∗c,h,w)
    • 调用tf_batch_map_offsets函数做采样,得到采样后(b∗c,h,w)  (双线性插值)
    • 得到最终输出–>(b,h,w,c)

相关文章:

  • 2022-01-18
  • 2021-09-17
  • 2021-05-17
  • 2021-09-05
  • 2021-05-14
  • 2022-12-23
  • 2021-10-08
  • 2022-01-02
猜你喜欢
  • 2021-06-17
  • 2021-10-07
  • 2022-12-23
  • 2022-12-23
  • 2021-07-31
  • 2022-01-13
  • 2021-12-13
相关资源
相似解决方案