滴滴的防疫口罩识别技术和视觉比赛进展

2020 年 10 月 27 日

滴滴的防疫口罩识别技术和视觉比赛进展

1. 口罩识别技术


2020 年新春伊始,新冠疫情席卷全国。为有效预防感染,防止疫情持续扩散,滴滴投入了多种 AI 视觉抗疫措施,督促司机进行积极防疫,保障司机自身和乘客的健康安全,包括口罩佩戴识别、视频消毒喷洒识别、消毒贴纸识别、图片消毒壶识别等,解决了出行运输行业面临车辆地域分布广泛、活动频率较高、活动时间跨度较长、司机数量庞大等现实问题,其中口罩佩戴识别最为典型。


口罩佩戴识别技术方案基于特征融合和分割监督相结合的人脸检测(DFS–Detection with Feature Fusion and Segmentation Supervision)和口罩属性识别两大模块组成,前者实现在图像中准确定位人脸区域的功能,后者在单个人脸区域的基础上利用注意力学习进一步分析人脸属性,从而判断人脸是否佩戴口罩。测试结果表明,上述技术方案在人脸佩戴口罩识别任务中,图像级准确率超过 99.50%,可快速定位未按要求佩戴口罩的重点人员,有效解决了 24 小时复杂光照、多种类型遮挡、人脸姿态变化、不同距离人脸尺度、口罩款式类型多样化等实际应用中的难题,灵活适应不同场景环境。


口罩佩戴识别是一种人脸属性识别,它包括人脸检测技术和口罩属性分类技术两部分。由于人脸的特殊性,在目标检测技术的基础上发展了一系列的人脸检测算法。而口罩佩戴识别可通过目标分类技术来实现。因此人脸佩戴口罩识别涉及目标检测技术和分类技术。


目标检测技术是指从一幅场景中找出所有感兴趣的目标,确定它们的位置和类别,包括了检测和分类两个过程。近几年来深度学习技术飞速发展,目前基于深度学习技术的目标检测算法分为两类:一类是双阶段目标检测算法,另外一类是单阶段目标检测算法。常见的双阶段目标检测算法包括 Faster R-CNN[1]、R-FCN[2]和 FPN[3]等。该类算法在基于特征提取的基础上,有独立的网络分支生成大量的候选区域,然后对这些候选区域进行分类和回归,确定目标的准确位置框和类别。对于单阶段目标检测算法,常见的有包括 YOLO V3[4]、SSD[5]和 RetinaNet[6]等。该类算法直接生成候选区域的同时进行分类和回归。通常情况下,双阶段目标检测算法精度更高,而单阶段的目标检测算法速度更快。人脸检测是目标检测的一种特例。对于任意一幅输入的图像,采用一定的算法或策略对其进行搜索以确定其中是否含有人脸,如果存在人脸,则返回所有人脸的位置等信息。目标检测一般会检测多个类别,而人脸检测是二类问题,只检测人脸和背景两类。针对人脸类别的单一性、以及人脸的五官特殊性,在目标检测算法的基础上,发展出了大量的人脸检测算法,包括 MTCNN[7]以三个级联网络实现快速人脸检测,并利用图像金字塔实现不同尺度人脸的检测、Face R-CNN[8]基于 Faster R-CNN 框架进行人脸检测、SSH[9]提出了对不同深度的卷积层分别进行检测以实现多尺度、FAN[10]提出了基于锚点级的注意力机制、PyramidBox[11]利用人脸的上下文信息提高遮挡人脸检测,即结合人头、身体等信息。上述算法主要解决不同于其他领域的人脸多尺度、遮挡等问题[12][13]。


目标分类技术按照目标的性质、用途等进行归类。基于深度学习的分类技术包括骨干网络和损失函数两部分。骨干网络有 AlexNet[14]使用层叠的卷积层以及 Dropout、Relu 等;VGG-Net[15]使用更深的网络结构,探索了深度与性能的关系;GoogLeNet[16]在增加网络深度和宽度的同时减少参数,在多个尺寸上同时进行卷积再聚合,并使用 1×1 的卷积来进行升降维;ResNet[17]设计了一种短连接的结构,解决了神经网络加深后的退化问题。


我们提出了一种基于 CNN 的人脸佩戴口罩识别算法,包括人脸检测和佩戴口罩识别两部分,如图 1 所示,人脸检测模块首先对输入的图像进行人脸检测;佩戴口罩识别模块对检测到的人脸区域按照一定比例扩展,并裁剪出人脸区域子图像,采用图像分类的方法,对整个人脸区域子图像进行二分类,从而得到是否佩戴口罩的识别结果。



图 1 人脸佩戴口罩识别整体框图


人脸检测模块使用了 DFS(Detection with Feature Fusion and Segmentation Supervision)[18]算法。该算法以卷积神经网络中的特征融合为基础,利用特征融合金字塔[19]结构同时以空间和通道注意力学习的方式融合高低层特征,以防止高层特征图上的语义信息覆盖低层特征图上的细节信息,从而使语义和细节相互补充,在不失细节信息的同时将语义信息作为上下文线索从而能够增强低层特征。如图 2 所示,输入图像经过网络逐层提取特征后,自最高层向下,相邻层间通过特征融合模块进行特征融合后,再和低一层的特征进行融合,依次类推。融合后的各层特征被 Detection 模块用于对应尺度人脸的检测。



图 2 DFS 人脸检测算法整体架构图


此外,DFS 算法以标注的人脸框作为人脸检测候选框的弱监督信息,具体到每一层则是标注框在相应层所对应的感受野,这样使得人脸检测框和分割框在每一层具有相同的尺度。分割层有效帮助网络快速学习到人脸区域的特征信息,同时让分类和回归更容易收敛。在推理时候,分割分支会被去除,这样不会增加模型的参数和计算量。另外直接采用人脸标注框作为分割信息,无需额外标注,虽然人脸标注框中会含有一定的背景信息,但相对于其中占主导的人脸区域,其影响可以忽略不计。相对于其他算法利用分割预测图在主网络中针对特征信息进行引导,弱监督方式不会引入多余的参数和运算。


2019 年 4 月 DFS 人脸检测算法在 WIDER FACE 官方验证集和测试集上进行了评测。WIDER FACE 是目前业界公开的数据规模最大、检测难度最高的人脸检测数据集之一,由香港中文大学于 2016 年建立,共包含 32,203 张图像和 393,703 个人脸标注。其中,40%的数据为训练集(Training)、10%的数据为验证集(Validation)、50%的数据为测试集(Testing)。每个集合中的数据根据人脸检测的难易程度分为“Easy”、“Medium”、“Hard”,如图 3 所示[20]。由于汇集了人脸尺寸大小变化、拍照角度引起的人脸姿态变化、不同程度的人脸遮挡、表情变化、光照强弱差异以及化妆等多种影响因素,该数据集在全球人脸检测领域极具挑战性,吸引了多家国内外科技巨头及高校院所在这个数据集上进行算法效果的验证。



图 3 WIDER FACE 人脸检测评测集


在“Easy”、“Medium”和“Hard” 三个验证子集中,DFS 算法 AP 性能分别达到 96.9%、95.9%和 91.2%。在“Easy”、“Medium”和“Hard”三个测试子集中,性能分别达到 96.3%、95.4%和 90.7%。DFS 算法在六项评估结果中取得五项第一、一项第二的成绩[21-22],因此它可以很好地解决实际环境下人脸存在各种姿态变化问题,如侧脸、低头、仰头,以及人脸遮挡和不完整等,同时可有效解决不同光照条件的影响,如强光、弱光、反光等,另外对不同尺度人脸的检测有一定的鲁棒性。


通过人脸检测获得图像中的人脸区域后,需要识别当前人脸区域是否佩戴口罩。口罩属性识别模型是基于 ResNet50 改进的,加入了注意力学习机制,进一步强化口罩区域,并针对损失函数进行了优化等。图 4 所示为佩戴口罩识别的模型结构示意图,图像经过输入层的数据预处理后,依次经过模型的 block1、block2、block3 提取特征,并和 attention 层的权重相乘后经过 block4 和 block5 提取特征后输出分类结果。在输入层的数据预处理中,提出了人脸区域扩展的方法,即针对人脸检测获得的边界框进行一定比例的扩展。这是因为实际人脸检测中,由于受到多种复杂条件的影响,检测框少数情况下会存在一定程度的坐标误差。通过边界框扩展不但可以消除检测误差,还能够包含更多的人脸佩戴口罩区域,如耳带等,从而提高模型的分类能力。实验中采用了宽高等比例扩展,扩展的比例是 20%。另外,针对口罩在人脸中的佩戴位置固定的特性,模型中加入注意力学习机制,从而提高针对困难样本的检测能力。如图 4 所示,在 ResNet50 网络模型的 block3 层后加入了 attention 网络层,引导模型重点关注人脸中的口罩区域,从而对特征层中的对应区域进行加权,弱化非口罩区域的特征表达,提高口罩区域特征的显著性。本文的 attention 网络采用了卷积的形式,尺度与 Block3 层特征图相对应,利用点对点乘积的方式对该层特征图进行加权,使 Block3 层特征更关注相应尺度下的口罩区域,从而实现注意力学习。



图 4 基于 Resnet50 的戴口罩识别模型结构示意图


滴滴采用的口罩佩戴识别技术方案针对性地在预处理、算法、模型、数据、训练等维度做优化,将人脸检测和口罩属性识别技术有机结合,并积极利用注意力学习和数据增强等方法,最终产生的一套综合性解决方案,该技术已经发表在《中国科学-信息科学》期刊上[23]。2020 年 1 月末起,滴滴将这一技术应用于出车前的智能出车质检系统及车载设备中,能在出车前和行程中基于这一技术自动分析平台网约车司机是否佩戴口罩,以进一步督促司机做好个人防护,在疫情期间已经全国上线。自 2020 年 2 月 19 日起,这套口罩佩戴识别技术方案已经对全社会开放和开源[24],企业和个人开发者均可快速便捷地获取和部署,满足对人员佩戴口罩情况的全天候实时检测需求。


2. 视觉比赛


滴滴能够及时提出多种 AI 抗疫措施,保障司机和乘客生命安全,本质上公司非常重视计算机视觉技术的投入。随着滴滴在交通出行领域业务的不断推进,计算机视觉技术在公司业务领域起到的作用越来越重要。智能业务中台视觉 AI 技术部图像技术团队积极储备和研发相关技术能力,今年参加了多项国际计算机视觉比赛,并取得很好的成绩,为承接公司核心业务打下扎实的基础。


参加了 ACM ICMI2020 组织的 Emotion Recognition in the Wild 2020(EmotiW2020)竞赛[25],在 Driver Gaze Prediction(司机视线预测)赛道上,获得世界第一;在 Group Emotion Recognition(视频多人表情识别)赛道上,获得世界第三。ICMI(International Conference on Multimodal Interaction)是由国际计算机协会 ACM(Association for Computing Machinery)举办的,致力于通过多学科研究实现多模态人机交互、接口和系统开发的著名国际会议,在人机交互领域的期刊、会议中极具学术影响力。2020 年 10 月,第 22 届 ICMI 将在荷兰乌得勒支举办。此次参加的 Emotion Recognition in the Wild 2020(EmotiW2020)正是由 ICMI2020 会议所组织的,世界范围内视频情感识别领域最高级别、最具权威性的竞赛。



图 5 ICMI2020[25]


司机视线预测 Driver Gaze Prediction 赛道,主要针对车内司机的视线区域进行预测。车内的视线范围分为 9 个区域,包括正前方、车内后视镜、两边的后视镜、仪表盘、中控台等。比赛以分类准确率作为最终的衡量指标。每个参赛队在组委会公布测试集后均有 5 次提交机会,以最高结果作为该参赛队的最终成绩。



图 6 Driver gaze prediction(图片来自比赛数据集[25])


司机视线预测在司机辅助驾驶系统 Advanced Driver AssistanceSystem(ADAS)中扮演非常重要的角色。它可以检测司机的精神注意力状态,即当司机视线偏移正前方的时候,对其进行提醒、防止分神,目的是提高驾驶安全性,减少交通事故的发生,从而保障司机、乘客和车外行人的生命安全。该比赛在出行领域非常具有实际意义和价值,通过参赛所积累的技术可以直接应用于具体业务场景,落地于交通安全项目。


通过分析后发现,比赛方提供的数据存在以下特点:


  1. 数据集中视线区域即包含跨度较大的左右后视镜,也包含跨度距离较近的仪表盘、正前方和正上方等区域;

  2. 数据集中司机包含不同的年龄、性别、装扮的差异,以及眼镜、墨镜等不同物体的面部遮挡,反光、模糊等图像质量影响;

  3. 数据采集拍摄所用的摄像头的位置也是不同的,有在正上方的,也有在下方中控台位置的,因而成像角度差异巨大。



图 7 算法采用的主要特征信息(图片来自比赛数据集[25])


为了解决上述问题,参赛同学采用了外貌特征(Appearance Feature)和几何特征(Geometric Feature)相结合的策略。而外貌特征中利用了人脸特征图、头部姿态(Head Pose)、局部人眼信息、3D 信息辅助监督等;几何特征中利用了人脸关键点(Landmark)的位置信息、人脸德劳内三角形(Delaunay triangular)的角度信息。最后采用先进的模型融合技术,准确率达到了 82.5288%,比第二名成绩高出 1.0144%,获得了第一名的优异成绩。



图 8 Driver Gaze Prediction 赛道前三名得分


Group Emotion Recognition 赛道的任务是基于视频的多人情绪识别。竞赛数据集共包含 2661 个训练集视频和 766 个验证集视频,将情绪定义为三个类别:积极的、负面的、自然的。每支参赛队伍均有 5 次提交结果机会,以最高的分类 acc 结果作为队伍的最终成绩。


本次竞赛在上一赛季的基础上增加了难度,从识别单人视频和多人图片改为对多人视频进行情绪识别。数据集反映出的主要挑战在于:视频均来自互联网且质量不一。视频内容包括了电影、新闻、访谈、阅兵等多种场景,往往在一个视频段中多人的情绪并不完全一致。部分视频中甚至没有正面人脸出现,只能依据一些人体的肢体动作来做判断。



图 9 比赛数据集视频截图(图片来自比赛数据[25])


通过对视频数据进行深入分析,采用了以下多个技术方案并进行融合:


  1. 通过视频理解的方向,对视频做end-end的建模,通过时序建模抽取有用的语义信息来建模,获取视频的分类;

  2. 通过人脸表情的方向,通过提取视频的人脸特征,并利用人脸特征的时序来建模;

  3. 通过肢体方向,使用人脸、肢体关键点的特征来建模,有利于提取视频的行为特征;

  4. 通过融合视频、人脸表情、肢体等多个维度的特征,来实现最终的模型输出。



图 10 人脸的特征提取(图片来自比赛数据集[25])



图 11 肢体关键点的特征提取(图片来自比赛数据集[25])


融合完成后的模型得分为 70.7672,最终获得了世界第三的优异成绩。



图 12 Group Emotion Recognition 赛道前三名得分


另外滴滴图像技术团队之前还参加了 ICME2020 组织的名为 Embedded Deep Learning Object Detection Model Compression Competition for Traffic in Asian Countries 比赛[26],荣获世界第三。


ICME(IEEE International Conference on Multimedia and Expo)是由 4 个 IEEE 协会联合举办的,致力于将电路与系统、通信、计算机技术和信号处理等领域最先进的研发成果应用于多媒体技术、系统和应用当中去。自 2000 年首次举办此会议以来,ICME 每年都能吸引超过 1000 篇论文投稿和 500 名以上的参与者,是多媒体领域知识传播的主要论坛。今年的 ICME 将于 7 月份在伦敦举办。



图 13 比赛官网[26]


Embedded Deep Learning Object Detection Model Compression Competition for Traffic in Asian Countries 是 ICME2020 会议组织的比赛。该比赛主要面向亚洲国家交通出行领域的感知场景,试图通过分析车辆前置摄像头采集到的图像信号,在嵌入式平台上有限的计算资源条件下,实时的检测道路上的行人、汽车、摩托车和自行车等四类常见目标。由于相关技术在自动驾驶、智慧交通以及城市计算等领域有着较大的应用落地价值,因此吸引了全球共计 133 个参赛者参赛。为了更好地贴近实际场景,本次比赛分为资格赛和决赛两个阶段。其中,资格赛只考察模型的精度,在所有参赛者提交的结果中,选取 Top15 进入决赛。决赛阶段则从四个角度考察模型性能,分别是:模型精度(mAP, mean Average Precision)、模型大小、计算复杂度以及在嵌入式平台(Nvidia Jetson TX2)上的运行速度,经过综合考虑给出最终得分排名。有别于其他只考虑精度的比赛,该比赛更有实际意义,所储备的技术更加贴近实际场景,更容易产生落地价值。


图像技术团队同学自接受比赛任务以来,在完成自身业务项目的同时积极备战。通过分析后发现,比赛方提供的数据存在以下特点:


  1. 数据集中含有大量受黑夜、雨雾、抖动等低质量样本,整体数据集难度较大;

  2. 数据集分布极不均衡:大量的数据样本集中在汽车这个类别上,而其他类别尤其是自行车的数据样本极为稀疏;

  3. 数据集标注标准不统一:部分受遮挡的目标标注标准不统一;


为了解决上述问题,参赛同学使用数据扩增(Data Augmentation)、在线难例挖掘(OHEM)等技术对上述难点进行纠正。在资格赛阶段共计训练了基于 Anchor Based 和 Anchor Free 两大技术流派的三个检测模型,采用先进的模型融合技术,最终以第三名的身份进入决赛阶段。


进入决赛阶段以后,参赛同学及时调整了初赛时单纯追求精度的打法,开始着力于模型性能和速度的平衡工作。最终决定采用知识蒸馏和定点化加速等技术,对资格赛模型进行加速和压缩等优化工作。经过比赛组织方的评测,图像技术团队参赛模型以满分的成绩获得模型大小、计算复杂度以及运行速度三项世界第一、综合总分世界第三的成绩。



图 14 模型示意图


通过上述这一系列的比赛和研究活动,图像技术团队锤炼了云端和边端上的图像感知技术,为更好的承接公司内外业务以及今年抗疫项目打下了坚实基础。


参考链接


‍‍‍‍‍‍‍‍‍‍‍[1] Ren S Q, He K M, Girshick R B, et al. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2015, 39(6): 1137-1149


[2] Dai J F, Li Y, He K M, et al. R-FCN: Object detection via region-based fully Convolutional networks. Proceedings of Conference on Advances in Nerual Information Processing Systems, 2016


[3] Lin T, Dollar P, Girshick R B, et al. Feature Pyramid Networks for Object Detection. 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2017: 936-944


[4] Redmon J, Farhadi A. YOLOv3: An incremental improvement. IEEE Conference on Computer Vision and Pattern Recognition, 2018


[5] Liu W, Anguelov D, Erhan D, et al. SSD: Single Shot MultiBox Detector. Proceedings of European Conference on Computer Vision, 2016:21-37


[6] Lin T Y, Goyal P, Girshick R, et al. Focal Loss for Dense Object Detection. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2017, PP(99):2999-3007


[7] Zhang K, Zhang Z, Li Z, et al. Joint Face Detection and Alignment Using Multitask Cascaded Convolutional Networks. IEEE Signal Processing Letters, 2016, 23(10): 1499-1503


[8] Wang H, Li Z, Ji X, et al. Face R-CNN. arXiv preprint arXiv:1706, 01061, 2017


[9] Najibi M, Samangouei P, Chellappa R, et al. SSH: Single Stage Headless Face Detector. 2017 IEEE International Conference on Computer Vision (ICCV), 2017: 4885-4894


[10] Wang J, Yuan Y and Yu G. Face attention network: An effective face detector for occluded faces. arXiv preprint arXiv:1711.07246, 2017


[11] Tang X, Du D K, He Z, et al. Pyramidbox: A context-assisted single shot face detector. Proceedings of European Conference on Computer Vision (ECCV), 2018


[12] Pang Y W, Xie J, Khan M H, et al. Mask-Guided Attention Network for Occluded Pedestrian Detection. 2019 IEEE International Conference on Computer Vision (ICCV), 2019: 4966-4974


[13] Xie J, Shao L. PSC-Net: Learning Part Spatial Co-occurence for Occluded Pedestrian Detection. arXiv preprint arXiv:2001.09252, 2020


[14] Krizhevsky A, Sutskever I, Hinton G. Image Net classification with deep convolutional neural networks. International Conference on Neural Information Processing System, 2012: 1097-1105


[15] Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition, Proc. ICLR, 2015: 409-420


[16] Szegedy C, Liu W, Jia Y Q, et al. Going deeper with convolutions. 2015 IEEE Conference on Computer Vision and Pattern Recognition(CVPR),2015: 1-9


[17] He K M, Zhang X Y, Ren S Q, et al. Deep Residual Learning for Image Recognition. 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR),2016: 770-778


[18] Tian W X, Wang Z X, Shen H F, et al. Learning better features for face detection with feature fusion and segmentation supervision. arXiv preprint arXiv:1811.08557, 2018


[19] Lin T Y, Dollár, Piotr, Girshick R, et al. Feature Pyramid Networks for Object Detection. 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2017: 936-944


[20] http://shuoyang1213.me/WIDERFACE/index.html


[21] http://mmlab.ie.cuhk.edu.hk/projects/WIDERFace/WiderFace_Results.html


[22] https://www.sohu.com/a/310461017_100092059


[23] 张修宝, 林子原等。全天候自然场景下的人脸佩戴口罩识别技术. 中国科学-信息科学, 2020 年第 7 期 1110-1120


[24] http://github.com/didi/maskdetection


[25] https://sites.google.com/view/emotiw2020


[26] https://www.2020.ieeeicme.org/index.php/grand-challenges-2/#GC3‍‍‍‍‍‍‍‍‍‍‍


作者介绍


Stephen,滴滴首席算法工程师


2017 年 6 月加入滴滴,任首席算法工程师,负责交通出行场景中的图像技术研发工作。2006 年博士毕业于北京邮电大学,博士论文获得 2007 年北京邮电大学优秀学位论文。曾在松下、百度和微软等多家知名公司工作,专注于 AI 技术研发。近年了参加过多个国际计算机视觉比赛,荣获多个第一。在 NeurIPS、CVPR、ECCV、PKDD、LNCS、LNAI 等发表近 20 篇论文,在国内外申请发明专利近百项。


本文转载自公众号滴滴技术(ID:didi_tech)。


原文链接


滴滴的防疫口罩识别技术和视觉比赛进展


2020 年 10 月 27 日 10:12890

评论

发布
暂无评论
发现更多内容

vagrant

飞翔

极客大学架构师训练营

【总结】技术选型

小胖子

架构师训练营-第5周作业

坂田吴奇隆

极客大学架构师训练营

架构师训练营-第5周总结

坂田吴奇隆

极客大学架构师训练营

Week5总结

王志祥

极客大学架构师训练营

架构师师傅在训练营第5周感想

tuuezzy

架构师

出成绩了!Avaddon勒索病毒劣迹昭著,6月勒索病毒占比TOP 10榜上有名

360安全卫士

勒索病毒

Java 后端博客系统文章系统——No1

猿灯塔

为了把握新基建风口,科技公司都在紧密筹备这件事...

极客时间企业版

架构师训练营第五周学习总结

0x12FD16B

你不知道的 Blob

阿宝哥

JavaScript 前端 Web Blob

Go在容器运行时要注意的细节

博文视点Broadview

go 容器 云原生

你到底在忙啥呢?

池建强

创业 写作

第五章作业

小胖子

Java中异常处理的9个最佳实践

码农神说

异常

技术选型课程小结

行下一首歌

极客大学架构师训练营

官宣 | 千呼万唤,Apache Flink 1.11.0 正式发布啦!

Apache Flink

flink

CORS 和 CSRF 修炼宝典

pingan8787

前端 Web CORS CSRF

人生就是体会矛盾的过程

封不羁

成长 感悟

Struct embedding in Go

Interstate5

golang time.Time dynamodb apigateway

Python 中的元类到底是什么?这篇恐怕是最清楚的了

Young先生

Python python元类

一致性hash

石印掌纹

Hadoop大数据存算分离下,如何解决新旧存储共存?

XSKY融合存储

深入理解Java内存模型

独钓寒江雪

内存模型 Java内存模型

rc-form源码解读

Lee Chen

前端进阶训练营

如何优雅地运用位运算实现产品需求?

梁桂钊

Java 架构

配置类需要标注@Configuration却不知原因?那这次就不能给你涨薪喽

YourBatman

spring Spring Boot Spring Framework @Configuration Spring配置类

区块链或将成为整治形式官僚主义的“大杀器”

CECBC区块链专委会

智能合约 去中心 防篡改 服务高效性

计算机操作系统基础(十六)---进程同步之共享内存

书旅

php laravel 操作系统 进程 线程’

Week5作业

王志祥

极客大学架构师训练营

第五周作业

好名字

滴滴的防疫口罩识别技术和视觉比赛进展-InfoQ