本项目包含基于论文《Deformable ConvNets v2: More Deformable, Better Results(可变形的ConvNets v2:可变形性越强,效果更加好)》,用PyTorch实现的可变形ConvNets v2(经过调制的可变形卷积)代码。项目基于ChunhuanLin / deform_conv_pytorch的可变形卷积的实现,感谢ChunhuanLin。
访问本文链接内容,请点击文末【阅读原文】
项目地址:
https://github.com/4uiiurz1/pytorch-deform-conv-v2
论文地址:(提醒:需要科学地使用网络进行访问)
https://arxiv.org/abs/1811.11168
基于论文的可变形卷积的初始化权值
将偏移量和调制的学习率设置为与其他层不同的值
标度mnist实验结果
支持不同的步伐
DeepLab + DCNv2
VOC分割实验的结果
Python 3.6
PyTorch 1.0
用调制变形卷积替换掉常规卷积(模型的conv2如下):
class ConvNet(nn.Module):
def __init__(self):
self.relu = nn.ReLU(inplace=True)
self.pool = nn.MaxPool2d((2, 2))
self.avg_pool = nn.AdaptiveAvgPool2d(1)
self.conv1 = nn.Conv2d(3, 32, 3, padding=1)
self.bn1 = nn.BatchNorm2d(32)
self.conv2 = nn.DeformConv2d(32, 64, 3, padding=1, modulation=True)
self.bn2 = nn.BatchNorm2d(64)
self.fc = nn.Linear(64, 10)
def forward(self, x):
x = self.relu(self.bn1(self.conv1(x)))
x = self.pool(x)
x = self.relu(self.bn2(self.conv2(x)))
x = self.avg_pool(x)
x = x.view(x.shape[0], -1)
x = self.fc(x)
return x
ScaledMNIST是一种随机缩放的MNIST。
在conv3~4使用调制变形卷积训练:
python train.py --arch ScaledMNISTNet --deform True --modulation True --min-deform-layer 3
在conv3~4使用可变形卷积训练:
python train.py --arch ScaledMNISTNet --deform True --modulation False --min-deform-layer 3
只用常规卷积训练:
python train.py --arch ScaledMNISTNet --deform False --modulation False
下表:Model:模型,Accuracy:精确度,Loss:损失
【AI求职百题斩 - 每日一题】
赶紧来看看今天的题目吧!
想知道正确答案?
点击今日推文【第4条】或 在公众号回复“0110挑战”即可答题获取!