下载看水印
为了自适应学习不同长度区域对池化系数,我们将每个区域的位置索引编码为一个向量pz∈Rd2p_z \in R^{d_2}pz∈Rd2。接下来,我们将它们打包到固定长度的位置嵌入中,并将它们输入序列模型和多层感知机中,从而输出池化系数θ={θz}z=1Z\theta = \left\{ \theta_z \right\}^Z_{z = 1}θ={θz}z=1Z的序列:
θ={θz}z=1Z=MLP(BiGRU({pz}z=1Z))\theta = \left\{\theta_z\right\}^Z_{z = 1} = MLP(BiGRU(\left\{p_z\right\}^Z_{z=1}))θ={θz}z=1Z=MLP(BiGRU({pz}z=1Z))
因此,通过对区域特征进行自适应聚合,得到图像嵌入。采用自适应池化策略融合多个食材特征,得到食材组的嵌入。
评估方案:使用两个评估指标来评估跨模态食材检索的性能:medR和Recall@K。medR表示每个查询检索到的样本的中位数索引,Recall@K表示正确样本的索引位于检索到的前KKK个样本中的百分比。在实验中,分别将KKK设置为1、5和10。此外,还记录了R@1、R@5和R@10的综合Rsum来评估模型的整体性能。medR越小,性能越好;R@K和Rsum越高,性能越好。
4. 实验
4.1 算法实现细节
CMIngre数据集在本次实验中被随机划分为6,001个训练样本,1,000个验证样本和1,000个测试样本。所有的实验都使用了PyTorch框架,在2张NVIDIA GTX 3090 GPU上进行实验。
食材检测:对于Faster R-CNN框架,与方法[47],[54]保持一致,利用ResNet-101作为特征提取器,设置batch size为2,学习率为0.001,并利用SGD优化器进行端到端检测优化。对于YOLO算法,遵循官方报告[48]使用yolov5x6进行检测实验。对于DINO框架,与官方设置[1]保持一致,然后选用Vision Transformer作为特征提取器fine-tune整个模型。
跨模态食材检索:选用Adam优化器训练整个模型并且设置batch size为128,最终映射层维度为1024。对于双层自注意力编码机制,选用包含有2层、4个头部的Transformer作为每层编码器,并且设置隐藏层维度为512。对于图像食材区域特征预提取,在Faster R-CNN框架中提取36个维度为2048的区域特征,在DINO框架中提取128个维度为256的区域特征。为了增加模型泛化能力,随机消去20%的图像区域,并且设置位置编码向量维度
d2d_2
d2为32。
领取专属 10元无门槛券
私享最新 技术干货