×

签到

分享到微信

打开微信,使用扫一扫进入页面后,点击右上角菜单,

点击“发送给朋友”或“分享到朋友圈”完成分享

VGG主干部分误差较大,求助 已解决 ChinaCVNumberOne2022-03-24 17:25:09 回复 8 查看 使用求助
VGG主干部分误差较大,求助
分享到:

各位寒友好,我最近在移植一个特征点检测模型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层。




版权所有 © 2024 寒武纪 Cambricon.com 备案/许可证号:京ICP备17003415号-1
关闭