打开微信,使用扫一扫进入页面后,点击右上角菜单,
点击“发送给朋友”或“分享到朋友圈”完成分享
各位寒友好,我最近在移植一个特征点检测模型D2-Net,这个模型的主干部分类似于VGG-16。
self.model = nn.Sequential( nn.Conv2d(3, 64, 3, padding=1), #0 nn.ReLU(inplace=True), nn.Conv2d(64, 64, 3, padding=1), #2 nn.ReLU(inplace=True), nn.MaxPool2d(2, stride=2), #4 nn.Conv2d(64, 128, 3, padding=1), #5 nn.ReLU(inplace=True), nn.Conv2d(128, 128, 3, padding=1), #7 nn.ReLU(inplace=True), nn.MaxPool2d(2, stride=2), #9 nn.Conv2d(128, 256, 3, padding=1), #10 nn.ReLU(inplace=True), nn.Conv2d(256, 256, 3, padding=1), # 12 nn.ReLU(inplace=True), nn.Conv2d(256, 256, 3, padding=1), # 14 nn.ReLU(inplace=True), nn.AvgPool2d(2, stride=1), # 16 nn.Conv2d(256, 512, 3, padding=2, dilation=2), #17 nn.ReLU(inplace=True), nn.Conv2d(512, 512, 3, padding=2, dilation=2), # 19 nn.ReLU(inplace=True), nn.Conv2d(512, 512, 3, padding=2, dilation=2), # 20 )
移植之后我发现精度掉点严重,用dump工具查看后发现MSE还是挺大的,不管int16、分通道量化都是差不多的误差结果。
int 8 _00000_dense_feature_extraction.model.0_in errRate = 0.0 _00000_dense_feature_extraction.model.0_out errRate = 0.3554905951023102 _00001_dense_feature_extraction.model.1_in errRate = 0.3189636170864105 _00001_dense_feature_extraction.model.1_out errRate = 0.3189636170864105 _00002_dense_feature_extraction.model.2_in errRate = 0.3189636170864105 _00002_dense_feature_extraction.model.2_out errRate = 0.6393799781799316 _00003_dense_feature_extraction.model.3_in errRate = 0.5801011323928833 _00003_dense_feature_extraction.model.3_out errRate = 0.5801011323928833 _00004_dense_feature_extraction.model.4_in errRate = 0.5801011323928833 _00004_dense_feature_extraction.model.4_out errRate = 0.5476074814796448 _00005_dense_feature_extraction.model.5_in errRate = 0.5476074814796448 _00005_dense_feature_extraction.model.5_out errRate = 0.7314100861549377 _00006_dense_feature_extraction.model.6_in errRate = 0.671886682510376 _00006_dense_feature_extraction.model.6_out errRate = 0.671886682510376 _00007_dense_feature_extraction.model.7_in errRate = 0.671886682510376 _00007_dense_feature_extraction.model.7_out errRate = 0.8585190176963806 _00008_dense_feature_extraction.model.8_in errRate = 0.8725666403770447 _00008_dense_feature_extraction.model.8_out errRate = 0.8725666403770447 _00009_dense_feature_extraction.model.9_in errRate = 0.8725666403770447 _00009_dense_feature_extraction.model.9_out errRate = 0.7836976051330566 _00010_dense_feature_extraction.model.10_in errRate = 0.7836976051330566 _00010_dense_feature_extraction.model.10_out errRate = 0.8838204741477966 _00011_dense_feature_extraction.model.11_in errRate = 0.8581535816192627 _00011_dense_feature_extraction.model.11_out errRate = 0.8581535816192627 _00012_dense_feature_extraction.model.12_in errRate = 0.8581535816192627 _00012_dense_feature_extraction.model.12_out errRate = 0.8780742883682251 _00013_dense_feature_extraction.model.13_in errRate = 0.8454927802085876 _00013_dense_feature_extraction.model.13_out errRate = 0.8454927802085876 _00014_dense_feature_extraction.model.14_in errRate = 0.8454927802085876 _00014_dense_feature_extraction.model.14_out errRate = 0.7882735133171082 _00015_dense_feature_extraction.model.15_in errRate = 0.9366599917411804 _00015_dense_feature_extraction.model.15_out errRate = 0.9366599917411804 _00016_dense_feature_extraction.model.16_in errRate = 0.9366599917411804 _00016_dense_feature_extraction.model.16_out errRate = 0.8791688084602356 _00017_dense_feature_extraction.model.17_in errRate = 0.8791688084602356 _00017_dense_feature_extraction.model.17_out errRate = 0.780224621295929 _00018_dense_feature_extraction.model.18_in errRate = 1.0087358951568604 _00018_dense_feature_extraction.model.18_out errRate = 1.0087358951568604 _00019_dense_feature_extraction.model.19_in errRate = 1.0087358951568604 _00019_dense_feature_extraction.model.19_out errRate = 0.7240587472915649 _00020_dense_feature_extraction.model.20_in errRate = 1.1451376676559448 _00020_dense_feature_extraction.model.20_out errRate = 1.1451376676559448 _00021_dense_feature_extraction.model.21_in errRate = 1.1451376676559448 _00021_dense_feature_extraction.model.21_out errRate = 1.0875439643859863
求问这种情况怎么解决?是量化过程中替换算子的问题吗?因为我发现输入输出errRate发生变化的恰好是需要量化的Conv2d层和MaxPool2d层。
热门帖子
精华帖子