技术领域
本发明属于机器视觉中的图像识别技术领域,尤其涉及一种基于AM-Softmax损失的蝴蝶图像细粒度识别方法。
背景技术
现在大多数的图像识别,通常是针对不同物种进行的识别,例如“鸟”、“车”、“狗”等,类别间特征差异较为明显。然而,在许多的实际应用当中,我们需要识别的往往不是它是属于哪个物种,而是想要具体的知道它是这个物种中的哪个类别,这就是细粒度图像识别任务。针对于蝴蝶进行的图像识别分类就属于细粒度图像识别任务,蝴蝶与人类生活和自然环境息息相关,一方面,在生态环境中,蝴蝶有助于保护生态系统健康,帮助科学家监测气候变化,有助于花的授粉;另一方面,在人类生活中,蝴蝶有着很高的观赏价值,有助于促进旅游业的发展,因此,针对于蝴蝶图像进行识别分类无论是在生态方面,还是人类生活方面都具有重大意义。
与传统图像识别任务相比,蝴蝶图像识别任务难点在于其图像所属类别的力度更为精细,物体的差异仅仅体现在细微之处,并且由于受姿态、光照等的影响,其类内差异非常大,类间差异比较小;其次,在生态图像中,蝴蝶尺寸较小,仅仅占据图像很小的位置;最后,蝴蝶还具有一种拟态的能力,这使得其蝴蝶目标与背景难以区分,这些均为细粒度蝴蝶图像的识别分类带来了巨大的挑战。
以卷积神经网络(Convolutional Neural Network,CNN)为代表的深度学习方法在图像识别领域取得了巨大的成功,它首先自动提取图像的特征,然后使用软最大(softmax)分类器进行分类识别。在传统图像识别训练中,通常使用交叉熵损失函数,该损失函数擅长处理优化类间差异,即分离不同的类,但是针对于蝴蝶这种类内差异非常大,类间差异不是很大的图像来说,其并不擅长减少类内差异(即使同一类的特性紧凑),因而可能会影响最终的识别准确率。
本发明通过引入AM-Softmax损失函数,将交叉熵损失重新定义为一种余弦损失,并在此基础上引入余弦边缘项来进一步增大决策区域,进而让类内特征更为的紧凑,类间的差异更为的明显,最终提升蝴蝶图像识别分类的准确率。
本发明在自主构建的334类蝴蝶图像数据集上进行实验,基于双线性模型,引入AM-Softmax损失函数,有效的对蝴蝶细粒度图像进行识别。
发明内容
本发明要解决的技术问题是,提供一种基于AM-Softmax损失的蝴蝶图像细粒度识别方法,用于提升蝴蝶细粒度图像识别的准确率,本发明采用如下的技术方案:
一种基于AM-Softmax损失的蝴蝶图像细粒度识别的方法包括以下步骤:
步骤1:预处理蝴蝶图像细粒度识别数据集,本发明在自主构建的334类共N幅蝴蝶图像的数据集D上面进行验证,将每一种类的数据集以8:2的比例划分为训练和测试图像,最终得到训练集D
步骤2:构建基础网络,选择VGG-16的前13层作为基础网络,该基础网络由5个卷积块组成,其中前两个卷积块包含两个卷积层和一个池化层,后三个卷积块包含三个卷积层和一个池化层,其中每个卷积核大小都是3×3,采用最大池化的方式;基础网络的输入为彩色图像I
步骤3:构建双线性网络模型,此网络包含A和B两个并行的分支,其中A分支用于提取细粒度特征,B分支用于定位区域,这两个分支都使用步骤2中的基础网络:
步骤3.1:对于第p幅蝴蝶训练图像I
步骤3.2:将特征
其中,vector(·)表示向量化操作;
步骤3.3:使用外积操作对
其中,bi
步骤3.3:将bi
Bi
其中,vector(·)表示向量化操作;
步骤3.4:将获取到的双线性特征做如下标准化计算:
其中,z
步骤3.5:使用softmax分类器对归一化后的双线性特征z
其中C代表图像类别的个数。
步骤4:建立网络的损失函数,使用AM-softmax作为损失函数,表示为:
其中,f
步骤5:网络训练:设置迭代次数、学习率等超参数,使用随机梯度下降算法对网络参数进行迭代更新,保存最终的模型;
步骤6:网络测试:加载保存的模型,将测试集D
附图说明
图1为本方法实施流程图。
图2为原图像。
图3为网络整体结构。
具体实施方式
本发明实例提供一种基于AM-Softmax的蝴蝶细粒度识别方法,下面结合相关附图对本发明进行解释和阐述:
本发明是在卷积神经网络的基础上,使用包含334类的蝴蝶图像数据集(通道数为3,像素值∈[0,255]),采用双线性网络模型,引用AM-Softmax损失函数来减少类内差异,来有效的对蝴蝶数据集进行图像识别。
本发明的实施方案流程如下:
步骤1:预处理蝴蝶数据集。蝴蝶数据集D分为334类,共包含N=74111幅图像,该数据集的图像如附图2所示。将数据集D按照每类8:2的比例划分为训练集D
步骤2:构建基础网络,选择VGG-16的前13层作为基础网络,该基础网络由5个卷积块组成,其中前两个卷积块包含两个卷积层和一个池化层,后三个卷积块包含三个卷积层和一个池化层,其中每个卷积核大小都是3×3,采用最大池化的方式。基础网络的输入为彩色的蝴蝶图像I
步骤3:构建双线性网络模型,此网络包含A和B两个并行的分支,其中A分支用于提取细粒度特征,B分支用于定位区域,这两个分支都使用步骤2中的基础网络:
步骤3.1:对于第p幅训练图像I
步骤3.2:将特征
其中,vector(·)表示向量化操作;
步骤3.3::使用外积操作对
其中,bi
步骤3.4:将bi
Bi
其中,vector(·)表示向量化操作;
步骤3.5:将获取到的双线性特征做如下标准化计算:
其中,z
步骤3.6:使用softmax分类器对归一化后的双线性特征z
其中C代表图像类别的个数。
步骤4:建立网络的损失函数,使用AM-Softmax作为损失函数,表示为:
其中,
步骤5:网络训练。设置迭代次数为55、学习率为0.001,将训练集D
步骤6:网络测试。加载保存的模型,将测试集D
表1 Butterfly334蝴蝶数据集
以上实例仅用于描述本发明,而非限制本发明所描述的技术方案。因此,一切不脱离本发明精神和范围的技术方案及其改进,均应涵盖在本发明的权利要求范围中。
机译: 基于CSI的细粒度手势识别方法和系统
机译: 基于CSI的细粒度手势识别方法和系统
机译: 一种学习方法和学习装置,用于使用嵌入损失和softmax损失来分割具有至少一个车道的图像,该嵌入损失和softmax损失支持与满足自动驾驶汽车的等级4所需的HD地图的协作,并使用其测试方法和测试设备