网络模型
使用resnet18网络模型,进行迁移学习,保留resnet18网络的卷积网络部分,并保留预训练参数,另外设置5个全连阶层,分别对应5个可能的街道字符的识别,代码如下:
model_conv = models.resnet18(pretrained=True)
model_conv.avgpool = nn.AdaptiveAvgPool2d(1)
model_conv = nn.Sequential(*list(model_conv.children())[:-1])
self.cnn = model_conv
self.fc1 = nn.Linear(512,11)
self.fc2 = nn.Linear(512,11)
self.fc3 = nn.Linear(512,11)
self.fc4 = nn.Linear(512,11)
self.fc5 = nn.Linear(512,11)
优化器
使用了Adam优化,学习率0.001.
torch.optim.Adam(model.parameters(),0.001)
损失函数
使用交叉熵损失函数
nn.CrossEntropyLoss()
图像增广
训练集的数据图像统一缩放为(64,128),并进行了随机裁减、色彩调节、随机旋转、数据正则化处理,验证集数据图像统一缩放为(60,120),只进行了正则化处理。
训练结果
在本机的GPU(GeForce RTX 2080)上运行了3个epoch,识别率达到0.45,运行结果如下图: