Logo是指徽标或商标, 通常由图形、文字或者图形和文字的组合构成. Logo被用于各种物体表面对物体进行标识. Logo检测的任务是定位和识别图像中的logo, 它在知识产权保护、产品品牌识别、智能交通车辆标识检测、社交媒体产品品牌管理等领域有很多应用. Logo检测虽然可以被视作目标检测的一种特殊类型, 但是由于大小、旋转、光照、遮挡和形变等因素的影响, 检测自然场景图像中的logo是具有挑战性的.
自然图像中的logo检测方法大致分为传统方法和基于深度学习的方法. 传统方法依赖于手工设计的特征和轮廓, 通过特征和轮廓匹配来识别和分类, 常见特征有尺度不变特征变换(scale invariant feature transform, SIFT)[1]特征、加速稳健特征(speeded up robust feature, SURF)和方向梯度直方图(histograms of oriented gradients, HoG)[2]特征. 在过去的2007–2014年间, 手工设计的特征是大多数logo检测和识别方法的核心. Kleban等人[3]提出了一种基于数据挖掘的方案, 将每幅图像视为一个事务, 在多分辨率下寻找关联规则, 以找到与logo对应的局部SIFT特征的频繁空间配置. Gao等人[4]提出通过空间光谱显著性来发现logo区域, 对查询图像中使用的这些区域提取SURF特征, 然后根据提取的SURF特征发现数据集图像与查询图像之间的相似度. Zhang等人[5]提出将图像随机分割并从中提取混合特征, 包括纹理特征、形状特征、梯度方向直方图特征、HoG特征、SIFT特征和SURF特征, 然后应用随机森林分类器进行logo检测.
近年来, 深度学习方法在计算机视觉的各个领域得到了广泛的应用, 随着深度学习的发展, 很多使用CNNs的logo检测模型被提出. Iandola等人[6]首次将Faster R-CNN[7]应用于logo检测, 在GoogLeNet结构中每个初始化层之后添加全局平均池化来辅助分类. Paleček等人[8]研究了优化算法、批量大小和学习率调度的具体设计对最终检测性能的影响. 同时, 对4种不同主干网的3种主要类型的探测器进行了实证评价. 通过实验观察到Faster R-CNN通常比Mask R-CNN[9]和以RetinaNet[10]为代表的single shot检测器表现得更好. 黄明珠等人[11]考虑到logo的低分辨率导致的检测性能难以进一步提升, 在Faster R-CNN框架中结合了生成对抗模型, 利用网络先将分辨率较低的logo特征映射成高分辨率的表达能力更强的特征, 再送入完全连接层进行分类和回归, 从而提高检测的性能. 2020年, Alsheikhy等人[12]将传递学习技术应用于深度卷积神经网络模型DenseNet[13], 在较少的参数以及较小的计算开销下进行logo识别. Wang等人[14]引入最大的全标注logo检测数据集LogoDet-3K, 并提出了一个强大的基线方法Logo-Yolo, 它将focal loss和CIoU损失合并到最先进的YOLOv3 (you only look once version 3)框架[15]中, 用于大规模的logo检测.
上述研究虽然在一定程度上提高了logo检测性能, 但仍存在一些不足. 目前存在的logo检测算法对小尺寸的logo检测不准, 并且对图像中的logo定位精度低, 无法在图像中准确地框出logo的位置, 因此本文基于YOLOv4算法[16]提出了一种融合坐标注意力和自适应残差连接的logo检测方法, 可以提高logo定位精度和小尺寸logo的检测性能. 主要的改进包括两个方面: 一是使用设计的自适应残差块替换5个连续卷积层, 增强特征利用, 同时优化网络训练. 二是引入坐标注意力机制[17], 使用通道重要性和空间位置重要性来增强对于检测更有用的信息, 剔除冗余信息. 对logo检测数据集使用聚类算法获得最佳的先验框尺寸. 通过FlickrLogos-32数据集[18]和FlickrSportLogos-10数据集进行训练和验证, 并在相同的环境下与YOLOv3、YOLOv4等检测算法进行比较, 验证改进算法的性能.
1 相关工作 1.1 YOLOv4网络YOLOv4目标检测器的网络架构如图1所示, 主要包括输入(input)、骨干网络(backbone)、颈部(neck)和预测模块(prediction) 4个部分. 骨干网络是在ImageNet上进行预训练, 而颈部用于收集各个阶段的特征图, 预测模块用于预测物体的类别、置信度和边界框. 图1中, CBM单元包含卷积层(convolutional, CONV)、批归一化层(BatchNormalization, BN)和Mish激活函数; CBL单元包含CONV层、BN层和LeakyReLU激活函数; Res_unit单元由两个CBL单元进行残差操作, 通过引入BN层和残差单元可以加快网络训练, 防止随着网络加深而出现的梯度消失以及网络退化问题; 3个CBL单元和X个Res_unit进行残差操作构成CSPX单元; SPP单元由4个尺寸分别为
(1) Input: 对输入数据进行Mosaic数据增强. 通过随机选取4张输入图像进行随机裁剪、拼接和排布从而丰富数据集, 一方面多样化目标可能出现的背景, 另一方面增加了小目标的数量. 这种数据增强方式扩充了数据集, 提高了模型的鲁棒性和对小目标的检测能力.
(2) Backbone: 使用更好的骨干网络CSPDarknet53[19]来提取输入的特征, 相比于YOLOv3的Darknet53多了5个CSP模块, 在骨干网络中使用Mish激活函数[20], 并使用Dropblock正则化方式来防止网络发生过拟合.
(3) Neck: 在Backbone和最后的预测模块之间添加了SPP模块和PANet模块[21], SPP用于增大感受野, PANet用于特征整合.
(4) Prediction: 训练时使用CIOU损失[22]代替MSE损失, 在边界框回归问题上有更好的回归速度和准确率, 在测试阶段使用DIOU非极大值抑制策略.
1.2 注意力机制人类的视觉系统会将有限的注意力放在重点信息上, 自动忽略不重要的信息, 注意力机制(attention model, AM)类似于人类的视觉系统, 它的核心思想是从关注全部到关注重点, 从而节约资源, 快速准确地获取最有效的信息. 注意力机制最初被应用于机器翻译任务中, 现在已被广泛应用在自然语言处理、统计学习、语音识别和计算机视觉任务中. 注意力模型能够显著提高神经网络性能和可解释性. 计算机视觉任务中注意力机制通常分为空间注意力、通道注意力和混合注意力, 如SENet (squeeze-and-excitation network)[23]和CBAM (convolutional block attention module)[24]等. 2021年, Hou等人[17]考虑到SENet只考虑通道之间的信息而忽略了位置信息, 但是位置信息对于生成空间选择性注意力图非常重要, 因此作者引入了一种新的坐标注意块(coordinate attention, CA), 它不仅仅考虑了通道间的关系还考虑了特征空间的位置信息.
2 YOLOv4-RCA模型为了获得更高的检测精度, 对YOLOv4网络的特征增强部分进行了改进, 提出了YOLOv4-RCA网络.
2.1 YOLOv4-RCA网络架构图2是YOLOv4-RCA的网络结构图. 与YOLOv4的结构相比, YOLOv4-RCA在PANet部分有以下两个方面的改进.
(1)自适应残差块代替连续卷积
在网络中为了获得更大的感受野和更丰富的上下文信息, 通常会使用卷积来进行下采样操作, 但是下采样操作会导致原特征图中细节信息丢失. 残差单元[25]以跳层连接的形式实现, 将单元的输入直接与单元输出加在一起, 然后再激活. 残差连接可以将浅层特征送入深层网络, 在不增加过多成本的条件下融合了更多的特征信息, 增强了网络的特征表达能力, 同时很好地解决了深度神经网络的退化问题. 残差连接在一定程度上起到了细节补充的作用, 但是同时也带来了很多冗余信息, 因此本文设计了一种自适应残差连接的方式, 在融合浅层和深层特征来减少原特征图中细节信息丢失的同时能够减少冗余信息.
本文中的自适应残差(adaptive residual)连接方式首先对输入特征使用坐标注意力进行加权, 进一步提取出输入中的有用特征, 然后再与输出以通道相加的方式进行融合. 如图3所示, 对于YOLOv4网络PANet中5个连续卷积CBL块, 前两个CBL模块进行自适应残差连接, 第3和第4个CBL模块进行自适应残差连接, 这样构成设计的残差块AR, 图4是AR的结构, 图中的CA代表对输入特征图通过坐标注意力进行加权, and代表输入特征矩阵和输出特征矩阵通过逐元素相加来进行特征融合. 在图2中用Res2C模块替换了原网络架构中的5个连续卷积, 这样能有侧重地将输入的特征与输出特征进行融合, 增强浅层和深层的特征利用, 减少原特征图的细节信息丢失.
(2)引入坐标注意力机制
坐标注意块给通道注意力中嵌入位置信息, 在重新权衡不同通道重要性的同时, 也考虑对空间信息进行编码. 这种编码方式可以使坐标注意力更准确地定位感兴趣对象的准确位置, 从而帮助整个模型更好地定位和识别. 如图2所示, 在PANet中4处Res2C模块之后添加坐标注意力CA模块. 这样可以从融合的特征中过滤和增强有用的特征, 同时抑制无用的特征, 将增强的特征送给预测部分来进行分类和定位. CA模块不添加在主干网络中是为了不改变骨干网络CSPDarknet53的结构, 以使用在ImageNet上预训练的权重, 而无需从头开始训练网络. 添加CA模块可以在基本不增加计算量的同时, 提高模型区分背景和前景的能力.
2.2 YOLOv4-RCA中的注意力模块在通道注意力中通常使用全局池化来编码全局空间信息, 这种方式将全局空间信息压缩到单个通道描述符中, 因此很难保存通道中对象的空间位置信息. CA注意力的核心思想是通过精确的位置信息对通道关系和长期依赖性进行编码, 如图5所示, 具体操作可分为坐标信息嵌入和坐标注意力生成两个步骤.
(1)坐标信息嵌入
对于维度为
$ {\textit{z}}_{c}=\frac{1}{H \times W} \sum\limits_{i=1}^{H} \sum\limits_{j=1}^{W} x_{c}(i, j) $ | (1) |
具体来说, 使用尺寸为
$ {\textit{z}}_{c}^{h}(h)=\frac{1}{W} \sum\limits_{0 \leqslant i < W} x_{c}(h, i) $ | (2) |
同样, 宽度为
$ {\textit{z}}_{c}^{w}(w)=\frac{1}{H} \sum\limits_{0 \leqslant j < H} x_{c}(j, w) $ | (3) |
这两种转换保证注意力模块捕捉到沿着一个空间方向特征的长期依赖关系, 并保存沿着另一个空间方向特征的精确位置信息, 这有助于网络更准确地定位感兴趣的信息.
(2)坐标注意力生成
将两个方向的坐标信息嵌入进行拼接, 然后进行卷积、批正则化和非线性激活的操作, 如式(4)所示.
$ \boldsymbol{f}=\delta\left(F_{1}\left(\left[\textit{z}^{h}, \textit{z}^{w}\right]\right)\right) $ | (4) |
其中,
$ {\boldsymbol{g}}^{h}=\sigma\left(F_{h}\left({\boldsymbol{f}}^{h}\right)\right) $ | (5) |
$ {\boldsymbol{g}}^{w}=\sigma\left(F_{w}\left({\boldsymbol{f}}^{w}\right)\right) $ | (6) |
其中,
$ y_{c}(i, j)=x_{c}(i, j) \times g_{c}^{h}(i) \times g_{c}^{w}(j) $ | (7) |
从YOLOv2开始, YOLO系列算法引入了先验框(anchor box)的概念, 根据标注的真实框(ground truth)使用K-means聚类算法[26]来获得K个anchor box, 用来提高检测的速度和准确率. YOLOv4算法中先验框的尺寸是由COCO (common objects in context)数据集通过聚类算法得到的, 但是COCO数据集中包含了80个类别, 宽高比的差别较大, 检测对象的尺寸也较大, 而对于logo检测任务, 图像中logo的尺寸偏小, 同时logo的宽高比变化相对较少, 因此, 对于logo检测任务, 需要通过重新聚类来选取适合logo数据集的先验框尺寸.
本文选择K-means++聚类算法对数据集中的标注框进行聚类获得9个先验框, 并为每个特征检测尺度分配3个检测框. 对FlickrLogos-32和FLickrSportLogos-10数据集先验框聚类和分配结果如表1所示. 相比于YOLOv4最初的先验框, 根据logo检测数据集通过聚类得到的先验框尺寸更符合训练集中logo的宽高比, 使用重新聚类获得的先验框对网络进行训练能够使得检测更加准确高效.
2.4 损失函数总的损失包括类别损失、置信度损失和边界框回归损失3部分, 类别损失和置信度损失用二元交叉熵损失来计算, 对于边界框回归使用CIOU损失来代替MSE损失, 总损失的计算方法如式(8)所示.
$ \begin{split} Loss =& {\lambda _{{\text{coord }}}}\sum\limits_{i = 0}^{S \times S} {\sum\limits_{j = 0}^N {I_{ij}^{{\text{obj }}}} } {l_{\rm CIOU}} \hfill \\ & - \sum\limits_{i = 0}^{S \times S} {I_{ij}^{{\text{obj }}}} \sum\limits_{c \in cls} {\left[ {{p_i}(c)\log \left( {{p_i}(c)} \right) + \left( {1 - {{\hat p}_i}(c)} \right)\log \left( {1 - {{\hat p}_i}(c)} \right)} \right]} \hfill \\ & - \sum\limits_{i = 0}^{S \times S} {\sum\limits_{j = 0}^N {I_{ij}^{{\text{obj }}}} } \left[ {{C_i}\log \left( {{C_i}} \right) + \left( {1 - {{\hat C}_i}} \right)\log \left( {1 -{{\hat C}_i}} \right)} \right] \hfill \\ & - {\lambda _{{\text{noobj }}}}\sum\limits_{i = 0}^{S \times S} {\sum\limits_{j = 0}^N {I_{ij}^{{\text{noobj }}}} } \left[ {{C_i}\log \left( {{C_i}} \right) + \left( {1 - {{\hat C}_i}} \right)\log \left( {1 - {{\hat C}_i}} \right)} \right] \hfill \end{split} $ | (8) |
其中, 第1项是边界框回归损失, 第2项是类别损失, 第3项和第4项是置信度损失.
$ l_{CIOU}=1-I O U+\frac{d^{2}}{c^{2}}+\alpha v $ | (9) |
$ v=\frac{4}{\pi^{2}}\left(\arctan \frac{w^{gt}}{h^{gt}}-\arctan \frac{w}{h}\right)^{2} $ | (10) |
$ \alpha = \frac{v}{(1-IOU)+v} $ | (11) |
其中,
实验在以下配置的计算机上进行: 处理器: Inter(R) Xeon(R) CPU E5-2640 v4 @2.4 GHz; 显卡: NVIDIA 1080Ti GPU, 显存11 GB; 系统类型: 64位CentOS Linux 7操作系统. 算法用深度学习框架PyTorch1.4.0实现, Anaconda集成开发环境, Python 3.7编程语言. 关于网络参数设置, 设置批训练量batch_size为8, 图像在训练前尺寸调整为608×608, 对骨干网络CSPDarknet53使用大型分类数据集ImageNet进行预训练, 获得参数初始化, 除此之外, 网络中其他结构均采用normal方法进行参数初始化; 优化算法使用Adam算法; 学习率使用余弦退火学习率衰减方法; 总共训练100个epoch, 其中前50个epoch冻结骨干网络部分的权重; 使用YOLOv4系列算法时在训练阶段使用Mosaic数据增强.
3.2 数据集为了验证我们提出的YOLOv4-RCA算法的性能, 我们在FlickrLogos-32数据集和FlickrSportLogos-10数据集上分别实验. 数据集包含的logo如图6所示. FlickrLogos-32数据集包含了Adidas、Aldi、Apple、Becks、Bmw等32个logo类别, 每个类别有70张图像, 将官方提供的数据集标注的格式转换成PASCAL VOC数据集格式用来训练. FlickrSportLogos-10数据集是一个包含361、Adidas、Anta、Erke和Kappa等10种体育运动品牌的数据集, 共有2 038张图片.
3.3 评估指标为了评估所提出的算法对logo检测的有效性, 本文使用COCO评估指标,
3.4 实验过程
在FlickrLogos-32数据集和FlickrSportLogos-10数据集上分别实验, 使用COCO和PASCAL指标来评估引入自适应残差块Res2C和坐标注意力CA的YOLOv4-RCA算法的性能, 并将其与YOLOv3算法和YOLOv4算法进行比较.
在FlickrLogos-32数据集上的COCO评估结果如表2所示. 根据表2的结果, 可以发现相比于YOLOv3算法, YOLOv4-RCA算法在每一项指标上都有改进; 而相比于YOLOv4算法, YOLOv4-RCA算法在牺牲1.78%
在FlickrLogos-32上的PASCAL评估结果如表4所示, 表4中展示了3种算法在每个类别上的准确度和在32个类别上的平均准确度. 从表3可以看出, 提出的YOLOv4-RCA算法在“Apple”“Dhl”和“Guiness”等15个logo类别上准确度达到最高; 32个类别上的平均准确度
为了更直观地分析3种算法的检测性能, 从FlickrLogos-32数据集中选取3张具有代表性的图片来对算法进行测试, 检测对比结果如图7所示. 图7(a)中, 有很多小尺寸的logo, 仅有YOLOv4-RCA算法可以检测到所有小尺寸logo目标. 图7(b)中, logo尺寸中等, 但目标聚集, 多个logo之间距离接近, 容易产生混淆, YOLOv4-RCA算法可以避免混淆, 将每个logo单独检测出来, 并用非常准确的边界框框住. 图7(c)中, 大量logo被遮挡, YOLOv4-RCA算法可以检测出图中所有被严重遮挡的logo, 效果明显好于YOLOv3和YOLOv4. 通过对比分析得出结论, 尽管仍然存在一些漏检的情况, YOLOv4-RCA在处理小目标、目标密集和遮挡等复杂场景时检测性能更好.
3.5 消融实验为了验证每个改进点对网络性能的优化作用, 本文进行了消融实验对比分析. 在FlickrLogos-32数据集上的实验统计结果如表6所示, 其中改进点1和改进点2分别对应用自适应残差块替代连续卷积和引入坐标注意力模块. 从表中可以看到, 使用残差块代替连续卷积, 仅牺牲了4%的
4 结论与展望
针对logo检测对小尺寸logo检测效果差和对logo定位精度低的问题, 本文基于YOLOv4提出改进的logo检测算法YOLOv4-RCA, 在特征融合阶段使用设计的自适应残差块替换5个连续卷积层来有侧重地融合特征, 在增强浅层和深层特征利用的同时避免了特征的冗余, 增强了模型的特征融合和表达能力; 在自适应残差块之后引入坐标注意力机制通过精确的位置信息对通道关系和长期依赖性进行编码, 使用通道重要性和空间位置重要性来增强对于logo检测更有用的特征; 最后使用K-means++聚类算法重新选取对于数据集效果最佳的先验框. 实验结果表明, 改进的YOLOv4-RCA算法满足实时logo检测的需求, 在FlickrLogos-32和FlickrSportLogos-10数据集上的平均精度分别提高了0.91%和1.40%, 同时提高了模型整体的定位精度和小尺度logo的检测精度.
[1] |
Lowe DG. Distinctive image features from scale-invariant keypoints. International Journal of Computer Vision, 2004, 60(2): 91-110. DOI:10.1023/B:VISI.0000029664.99615.94 |
[2] |
Dalal N, Triggs B. Histograms of oriented gradients for human detection. 2005 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR’05). San Diego: IEEE, 2005. 886–893.
|
[3] |
Kleban J, Xie X, Ma WY. Spatial pyramid mining for logo detection in natural scenes. 2008 IEEE International Conference on Multimedia and Expo. Hannover: IEEE, 2008. 1077–1080.
|
[4] |
Gao K, Lin SX, Zhang YD, et al. Logo detection based on spatial-spectral saliency and partial spatial context. 2009 IEEE International Conference on Multimedia and Expo. New York: IEEE, 2009. 322–329.
|
[5] |
Zhang YF, Zhu MM, Wang DL, et al. Logo detection and recognition based on classification. Proceedings of the 15th International Conference on Web-age Information Management. Macao: Springer, 2014. 805–816.
|
[6] |
Iandola FN, Shen AT, Gao P, et al. DeepLogo: Hitting logo recognition with the deep neural network hammer. Computer Science. arXiv: 1510.02131, 2015.
|
[7] |
Ren SQ, He KM, Girshick R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(6): 1137-1149. DOI:10.1109/TPAMI.2016.2577031 |
[8] |
Paleček K. Deep learning for logo detection. 2019 42nd International Conference on Telecommunications and Signal Processing (TSP). Budapest: IEEE, 2019. 609–612.
|
[9] |
He KM, Gkioxari G, Dollár P, et al. Mask R-CNN. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2020, 42(2): 386-397. DOI:10.1109/TPAMI.2018.2844175 |
[10] |
Lin TY, Goyal P, Girshick R, et al. Focal loss for dense object detection. 2017 IEEE International Conference on Computer Vision (ICCV). Venice: IEEE, 2017. 2999–3007.
|
[11] |
黄明珠, 黄文清. 基于改进Faster R-CNN的Logo目标检测方法. 计算机系统应用, 2019, 28(2): 41-48. DOI:10.15888/j.cnki.csa.006766 |
[12] |
Alsheikhy A, Said Y, Barr M. Logo recognition with the use of deep convolutional neural networks. Engineering, Technology & Applied Science Research, 2020, 10(5): 6191-6194. |
[13] |
Huang G, Liu Z, van der Maaten L, et al. Densely connected convolutional networks. 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Honolulu: IEEE, 2017. 2261–2269.
|
[14] |
Wang J, Min WQ, Hou SJ, et al. LogoDet-3K: A large-scale image dataset for logo detection. arXiv: 2008.05359v1, 2020.
|
[15] |
Redmon J, Farhadi A. YOLOv3: An incremental improvement. arXiv: 1804.02767v1, 2018.
|
[16] |
Bochkovskiy A, Wang CY, Liao HYM. YOLOv4: Optimal speed and accuracy of object detection. arXiv: 2004.10934v1, 2020.
|
[17] |
Hou QB, Zhou DQ, Feng JS. Coordinate attention for efficient mobile network design. arXiv: 2103.02907, 2021.
|
[18] |
Romberg S, Pueyo LG, Lienhart R, et al. Scalable logo recognition in real-world images. Proceedings of the 1st ACM International Conference on Multimedia Retrieval. Lisboa: ACM, 2011. 25.
|
[19] |
Wang CY, Liao HYM, Wu YH, et al. CSPNet: A new backbone that can enhance learning capability of CNN. Proceedings of the 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition Workshops (CVPRW). Seattle: IEEE, 2020. 1571–1580.
|
[20] |
Misra D. Mish: A self regularized non-monotonic neural activation function. Machine Learning, 2019, 18(5): 5-21. |
[21] |
Liu S, Qi L, Qin HF, et al. Path aggregation network for instance segmentation. 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Salt Lake City: IEEE, 2018. 8759–8768.
|
[22] |
Zheng ZH, Wang P, Liu W, et al. Distance-IoU loss: Faster and better learning for bounding box regression. Proceedings of the 34th AAAI Conference on Artificial Intelligence. Palo Alto: AAAI, 2020. 12993–13000.
|
[23] |
Hu J, Shen L, Albanie S, et al. Squeeze-and-excitation networks. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2020, 42(8): 2011-2023. DOI:10.1109/TPAMI.2019.2913372 |
[24] |
Woo S, Park J, Lee JY, et al. CBAM: Convolutional block attention module. Proceedings of the 15th European Conference on Computer Vision. Munich: Springer, 2018. 3–19.
|
[25] |
He KM, Zhang XY, Ren SQ, et al. Deep residual learning for image recognition. Proceedings of 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Las Vegas: IEEE, 2016. 770–778.
|
[26] |
Arthur D, Vassilvitskii S. K-means++: The advantages of careful seeding. Proceedings of the 8th Annual ACM-SIAM Symposium on Discrete algorithms. New Orleans: Society for Industrial and Applied Mathematics, 2007. 1027–1035.
|