创新点:
在苹果数据集中,存在遮挡、不同角度的拍摄、光照变化等问题,导致目标检测的性能下降。为了解决这些问题,提出智能感知优化网络和多路径特征融合网络。
智能感知优化网络:帮助模型更好地关注感兴趣的目标区域,同时抑制对不相关区域的响应,提高目标检测的准确性和鲁棒性。提高网络对于不同尺度和不同位置目标的感知能力,更好地处理遮挡等问题。
class IPOmodule(nn.Module):
多路径特征融合网络:将不同层次的特征信息进行融合,提高网络对目标的表示能力和判别能力。增强网络对于复杂场景的建模能力,使其更好地适应苹果数据集中的各种变化和挑战。
class MultiPathFeatureFusion(nn.Module):
def __init__(self, in_channels, out_channels, e=1, n=1):
super(MultiPathFeatureFusion, self).__init__()
self.conv1 = nn.Conv2d(in_channels, out_channels, kernel_size=1, stride=1, padding=0, bias=False)
self.bn1 = nn.BatchNorm2d(out_channels)
self.relu = nn.ReLU(inplace=True)
self.conv2 = nn.Conv2d(out_channels, out_channels, kernel_size=3, stride=1, padding=1, bias=False)
self.bn2 = nn.BatchNorm2d(out_channels)
self.conv3 = nn.Conv2d(out_channels, out_channels, kernel_size=1, stride=1, padding=0, bias=False)
self.bn3 = nn.BatchNorm2d(out_channels)
self.e = e
self.n = n
def forward(self, x):
identity = x
out = self.conv1(x)
out = self.bn1(out)
out = self.relu(out)
out = self.conv2(out)
out = self.bn2(out)
out = self.relu(out)
out = self.conv3(out)
out = self.bn3(out)
if self.e == 1:
out += identity
else:
identity = self.conv1(identity)
identity = self.bn1(identity)
out += identity
out = self.relu(out)
return out
这两个模块的提出是为了提高目标检测算法在苹果数据集上的性能,使其更加鲁棒和准确。智能感知优化网络能够帮助网络更好地处理目标的尺度变化和遮挡问题,而多路径特征融合网络则能够增强网络的特征表达能力,提高对复杂场景的适应能力。这些改进是基于对苹果数据集特点的分析和理解,以及对目标检测算法的优化需求。
模型图:
代码运行步骤:
流程见详见项目readme文件
Step1:将预训练权值文件和Apple_classes.txt准备好且放在model_data文件夹中
Step2:对数据做预处理,训练集:验证集:测试集=8:1:1
Step3: 训练
算法
实验结果