CN109670555B - 基于深度学习的实例级行人检测和行人重识别*** - Google Patents

基于深度学习的实例级行人检测和行人重识别*** Download PDF

Info

Publication number
CN109670555B
CN109670555B CN201811615544.3A CN201811615544A CN109670555B CN 109670555 B CN109670555 B CN 109670555B CN 201811615544 A CN201811615544 A CN 201811615544A CN 109670555 B CN109670555 B CN 109670555B
Authority
CN
China
Prior art keywords
size
layer
inputting
channels
stride
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811615544.3A
Other languages
English (en)
Other versions
CN109670555A (zh
Inventor
李文辉
刘家伦
王莹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jilin University
Original Assignee
Jilin University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jilin University filed Critical Jilin University
Priority to CN201811615544.3A priority Critical patent/CN109670555B/zh
Publication of CN109670555A publication Critical patent/CN109670555A/zh
Application granted granted Critical
Publication of CN109670555B publication Critical patent/CN109670555B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/30Scenes; Scene-specific elements in albums, collections or shared content, e.g. social network photos or video
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02TCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
    • Y02T10/00Road transport of goods or passengers
    • Y02T10/10Internal combustion engine [ICE] based vehicles
    • Y02T10/40Engine management systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Image Analysis (AREA)

Abstract

本发明涉及视频监控技术领域,公开了基于深度学习的实例级行人检测和行人重识别***,选择ResNet‑50作为CNN模型的网络结构,利用conv1到conv4_3作为stem CNN部分,给定一张输入图像,stem产生1024个通道的conv feature maps;将获得的conv feature maps输入到pedestrian proposal net中;将上述步骤得到的feature maps和proposals输入到ROI Align中,根据proposals的坐标位置在feature maps中将相应的区域池化为固定尺寸的特征图;将ROIAlign得到的固定大小的feature maps输入到Identification Net中,IdentificationNet由ResNet‑50的conv4_4值conv5_3组成,获得最终的feature maps;在ROIAlign后接入FCIS语意分割网络,对feature maps进行上采样,获得最终的实例级语意分割的结果;经过global average pooling获得2048维度的特征向量,经过Softmax分类器和线性回归获得行人的位置。本发明实现了端到端的行人实例级检测和行人再识别功能。

Description

基于深度学习的实例级行人检测和行人重识别***
技术领域
本发明涉及视频监控技术领域,特别涉及基于深度学习的实例级行人检测和行人重识别***。
背景技术
在公共场所,例如:机场、商场、公园广场等行人相对密集的场景,为了识别不同视角的非重叠监控场景下的行人身份,行人重识别技术得到广泛发展,尤其是在监控视频领域。由于不同监控场景下同一行人存在背景、光照、朝向等差异大的问题,在行人相对密集的场所如何对行人实例级检测和行人再识别,在检索库中检索难度较大。
发明内容
发明的目的在于提供基于深度学习的实例级行人检测和行人重识别***,通过行人再识别部分计算待查询图像与行人检索库中所有行人的相似度,按照相似度从高到低返回包含检索库中行人的图像帧,实现端到端的行人实例级检测和行人再识别功能,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:
基于深度学习的实例级行人检测和行人重识别***,包括如下步骤:
S1:选择ResNet-50作为CNN模型的网络结构,其具有的conv1和四个blocks(conv2_x to conv5_x)每个blocks包含3,4,6,3个残差单元,利用conv1到conv4_3作为stem CNN部分,给定一张输入图像,stem产生1024个通道的conv feature maps;
S2:将获得的conv feature maps输入到pedestrian proposal net中,在每个feature map的每个位置上利用anchor机制和Softmax分类器判断前景和背景,同时采用线性回归调整anchor的位置,经过非极大值抑制,保留128个调整后的bbox作为proposals;
S3:将S2得到的feature maps和proposals输入到ROI Align中,根据proposals的坐标位置在feature maps中将相应的区域池化为固定尺寸的特征图,方便后续的分类和包围盒回归操作,遍历每个proposal,将proposal分割成k*k个单元,利用双线性内插法计算四个坐标值,最后进行最大池化;
S4:将ROIAlign得到的固定大小的feature maps输入到Identification Net中,Identification Net由ResNet-50的conv4_4值conv5_3组成,获得最终的feature maps;
S5:为了获得实例级的语意分割,在ROIAlign后接入FCIS语意分割网络,对feature maps进行上采样,获得最终的实例级语意分割的结果,在COCO数据上预训练的网络模型,该数据集中有81类,只关注行人这一类,直接拿过来使用,不分布参与训练;
S6:利用S4获得的feature maps,经过global average pooling获得2048维度的特征向量,经过Softmax分类器和线性回归获得行人的位置,将通过S4操作获得2048通道feature maps,输入到一层global average pooling层中,获得一个2048维度的特征向量,为了获取精度更高的分类和Bounding box效果,再次使用Softmax分类器和线性回归获得行人的位置;
S7:将S6获得的2048维的特征向量投影到经过L2正则化后的256维向量子空间中,获得256维度的特征向量,用于行人的匹配。
进一步地,S1包括如下步骤:
S1-1:数据经过一层kernel_size为7*7,channel数为64,padding_size为3,stride为2的卷积,产生64通道的feature maps,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,最后经过一层pooling层,采用Max_pooling操作,kernel_size大小为3*3,stride为2;
S1-2:将经过S1-1操作处理后获得的64通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为64,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-3:将经过S1-2操作处理后获得的64通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为64,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-4:将经过S1-3操作处理后获得的64通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1获得256通道的feature maps,将经过S1-1操作处理后获得的64通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,获得256通道的feature maps,将这两个256通道的feature maps相加,获得256通道的feature maps,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-5:将经过S1-4操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为64,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-6:将经过S1-5操作处理后获得的64通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为64,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-7:将经过S1-6操作处理后获得的64通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,将S1-4获得的256通道的feature maps与这256通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得256通道的feature maps;
S1-8:将经过S1-7操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为64,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-9:将经过S1-8操作处理后获得的64通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为64,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-10:将经过S1-9操作处理后获得的64通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,将S1-8获得的256通道的feature maps与这256通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得256通道的feature maps;
S1-11:将经过S1-10操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为128,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-12:将经过S1-11操作处理后获得的128通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为128,padding_size为1,stride为2,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-13:将经过S1-12操作处理后获得的128通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-14:将经过S1-10操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为2,将经过S1-13操作获得的512通道的feature与这512通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得512通道的feature maps;
S1-15:将经过S1-14操作获得的512通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为128,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-16:将经过S1-15操作获得的128通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为128,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-17:将经过S1-16操作处理后获得的128通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为1,将经过S1-14操作获得的512通道的feature与这512通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得512通道的feature maps;
S1-18:将经过S1-17操作处理后获得的512通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为128,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-19:将经过S1-18操作获得的128通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为128,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-20:将经过S1-19操作处理后获得的128通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为1,将经过S1-17操作获得的512通道的feature与这512通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得512通道的feature maps;
S1-21:将经过S1-20操作处理后获得的512通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为128,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-22:将经过S1-21操作获得的128通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为128,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-23:将经过S1-22操作处理后获得的128通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为1,将经过S1-20操作获得的512通道的feature与这512通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得512通道的feature maps;
S1-24:将经过S1-23操作处理后获得的512通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-25:将经过S1-24操作获得的256通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为128,padding_size为1,stride为2,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-26:将经过S1-25操作获得的128通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为1024,padding_size为0,stride为1,将经过S1-23操作获得的512通道的feature,输入到到卷积层,kernel_size为1*1,channel数为1024,padding_size为0,stride为2,将这两个1024通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得1024通道的feature maps;
S1-27:将经过S1-26操作处理后获得的1024通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-28:将经过S1-27操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为256,padding_size为1,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-29:将经过S1-28操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为1024,padding_size为0,stride为1,将经过S1-26操作获得的1024通道的feature与这1024通道的feature maps对应元素相加,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得1024通道的feature maps;
S1-30:将经过S1-29操作处理后获得的1024通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-31:将经过S1-30操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为256,padding_size为1,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-32:将经过S1-31操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为1024,padding_size为0,stride为1,将经过S1-29操作获得的1024通道的feature与这1024通道的feature maps对应元素相加,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得1024通道的feature maps;
进一步地,S2包括如下步骤:
S2-1:为了获得大量的目标候选框,使用RPN网络,对于通过第一步获得featuremaps首先经过一个卷积层kernel_size为3*3,channel数为512,padding_size为1,stride为1,获得的512通道的feature maps中的每个位置,考虑9个可能的候选框:三种面积[128,256,512]×三种比例[1:1,1:2,2:1];
S2-2:利用Softmax分类器分类器判断前景和背景;
S2-3:对S2-2获得anchor的bbox使用线性回归对anchor的边界进行修正;
S2-4:将修正后的anchor映射回原图,判断anchor是否大范围超过边界,剔除严重超出边界anchor,进行nms再次按照nms后的softmax分类scores由大到小排序fg anchors,提取前128结果作为proposal输出。
进一步地,S3包括如下步骤:
S3-1:将S2获得的proposals映射到feature maps上;
S3-2:将proposal区域分割成k*k个单元;
S3-3:在每个单元中选择采样4个点,把这个单元平均分割成四个小方块以后它们分别的中心点;
S3-4:为计算每一个点的位置,利用这个点周围的feature map上的4个点结合双线性插值计算出每个采样点的准确位置;
S3-5:利用max_pooling采样得到1024通道14*14固定大小feature maps。
进一步地,S4包括如下步骤:
S4-1:将经过S3操作处理后获得的1024通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-2:将经过S4-1操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为256,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-3:将经过S4-2操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为1024,padding_size为0,stride为1,将3.获得的1024通道的feature maps与这1024通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得1024通道的feature maps;
S4-4:将经过S4-3操作处理后获得的1024通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-5:将经过S4-4操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为256,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-6:将经过S4-5操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为1024,padding_size为0,stride为1,将S4-3获得的1024通道的feature maps与这1024通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得1024通道的feature maps;
S4-7:将经过S4-6操作处理后获得的1024通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-8:将经过S4-7操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为256,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-9:将经过S4-8操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为1024,padding_size为0,stride为1,将S4-6获得的1024通道的feature maps与这1024通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得1024通道的feature maps;
S4-10:将经过S4-9操作处理后获得的1024通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-11:将经过S4-10操作处理后获得的512通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为512,padding_size为1,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-12:将经过S4-11操作处理后获得的512通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为2048,padding_size为0,stride为1,将S4-9获得的1024通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为2048,padding_size为0,stride为2与这两个2048通道的feature maps对应元素相加,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得2048通道的feature maps;
S4-13:将经过S4-12操作处理后获得的2048通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-14:将经过S4-13操作处理后获得的512通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为512,padding_size为1,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-15:将经过S4-14操作处理后获得的512通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为2048,padding_size为0,stride为1,将S4-12获得的2048通道的feature maps与该2048通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得2048通道的feature maps;
S4-16:将经过S4-15操作处理后获得的2048通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-17:将经过S4-16操作处理后获得的512通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为512,padding_size为1,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-18:将经过S4-17操作处理后获得的512通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为2048,padding_size为0,stride为1,将S4-15获得的2048通道的feature maps与该2048通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得2048通道的feature maps;
S4-19:将经过S4-18操作处理后获得的2048通道的feature maps输入到下一个池化层中,采用AVE pooling操作,kernel_size为7*7,padding_size为0,stride为1。
进一步地,S5包括如下步骤:
S5-1:将S3通过RPN和ROIAlign获得的1024通道14*14大小的feature maps输入到FCIS网络中,进行kernel_size为3,stride为1的padding操作;
S5-2:将经过S5-1获得的feature maps输入到一个卷积层,kernel_size为3*3,channel数为256,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S5-3:将经过S5-2获得的256通道的feature maps输入到一个卷积层,结构同S5-2一致;
S5-4:将经过S5-3获得的256通道的feature maps输入到一个卷积层,结构同S5-2一致;
S5-5:将经过S5-4获得的feature maps输入到一个反卷积层,kernel_size为2*2,channel数为256,stride为1;
S5-6:将经过S5-5获得的feature maps输入到一个卷积层,kernel_size为1*1,channel数为num_class,stride为1,经过一层激活层,激活函数使用sigmoid;
S5-7:输出每个proposal中目标的类别mask.实现实例级的语意分割。
与现有技术相比,本发明的有益效果是:本发明提出的基于深度学习的实例级行人检测和行人重识别***,将得到的feature maps和proposals输入到ROI Align中,根据proposals的坐标位置在feature maps中将相应的区域池化为固定尺寸的特征图,方便后续的分类和包围盒回归操作,遍历每个proposal,将proposal分割成k*k个单元,利用双线性内插法计算四个坐标值,最后进行最大池化,在ROIAlign后接入FCIS语意分割网络,对feature maps进行上采样,获得最终的实例级语意分割的结果,根据行人检测部分获得当前场景下的所有行人实例,构建行人检索库;输入待查询行人图像,通过行人再识别部分计算待查询图像与行人检索库中所有行人的相似度,按照相似度从高到低返回包含检索库中行人的图像帧,实现一种端到端的行人实例级检测和行人再识别功能,可以适用于公共场景。
附图说明
图1为本发明的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,基于深度学习的实例级行人检测和行人重识别***,包括如下步骤:
S1:选择ResNet-50作为CNN模型的网络结构,其具有的conv1和四个blocks(conv2_xtoconv5_x)每个blocks包含3,4,6,3个残差单元,利用conv1到conv4_3作为stemCNN部分,给定一张输入图像,stem产生1024个通道的conv feature maps;具体步骤如下:
S1-1:数据经过一层kernel_size为7*7,channel数为64,padding_size为3,stride为2的卷积,产生64通道的feature maps,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,最后经过一层pooling层,采用Max_pooling操作,kernel_size大小为3*3,stride为2;
S1-2:将经过S1-1操作处理后获得的64通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为64,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-3:将经过S1-2操作处理后获得的64通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为64,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-4:将经过S1-3操作处理后获得的64通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1获得256通道的feature maps,将经过S1-1操作处理后获得的64通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,获得256通道的feature maps,将这两个256通道的feature maps相加,获得256通道的feature maps,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-5:将经过S1-4操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为64,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-6:将经过S1-5操作处理后获得的64通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为64,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-7:将经过S1-6操作处理后获得的64通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,将S1-4获得的256通道的feature maps与这256通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得256通道的feature maps;
S1-8:将经过S1-7操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为64,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-9:将经过S1-8操作处理后获得的64通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为64,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-10:将经过S1-9操作处理后获得的64通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,将S1-8获得的256通道的feature maps与这256通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得256通道的feature maps;
S1-11:将经过S1-10操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为128,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-12:将经过S1-11操作处理后获得的128通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为128,padding_size为1,stride为2,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-13:将经过S1-12操作处理后获得的128通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-14:将经过S1-10操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为2,将经过S1-13操作获得的512通道的feature与这512通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得512通道的feature maps;
S1-15:将经过S1-14操作获得的512通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为128,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-16:将经过S1-15操作获得的128通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为128,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-17:将经过S1-16操作处理后获得的128通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为1,将经过S1-14操作获得的512通道的feature与这512通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得512通道的feature maps;
S1-18:将经过S1-17操作处理后获得的512通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为128,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-19:将经过S1-18操作获得的128通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为128,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-20:将经过S1-19操作处理后获得的128通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为1,将经过S1-17操作获得的512通道的feature与这512通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得512通道的feature maps;
S1-21:将经过S1-20操作处理后获得的512通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为128,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-22:将经过S1-21操作获得的128通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为128,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-23:将经过S1-22操作处理后获得的128通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为1,将经过S1-20操作获得的512通道的feature与这512通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得512通道的feature maps;
S1-24:将经过S1-23操作处理后获得的512通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-25:将经过S1-24操作获得的256通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为128,padding_size为1,stride为2,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-26:将经过S1-25操作获得的128通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为1024,padding_size为0,stride为1,将经过S1-23操作获得的512通道的feature,输入到到卷积层,kernel_size为1*1,channel数为1024,padding_size为0,stride为2,将这两个1024通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得1024通道的feature maps;
S1-27:将经过S1-26操作处理后获得的1024通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-28:将经过S1-27操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为256,padding_size为1,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-29:将经过S1-28操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为1024,padding_size为0,stride为1,将经过S1-26操作获得的1024通道的feature与这1024通道的feature maps对应元素相加,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得1024通道的feature maps;
S1-30:将经过S1-29操作处理后获得的1024通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-31:将经过S1-30操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为256,padding_size为1,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-32:将经过S1-31操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为1024,padding_size为0,stride为1,将经过S1-29操作获得的1024通道的feature与这1024通道的feature maps对应元素相加,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得1024通道的feature maps。
S2:将获得的conv feature maps输入到pedestrian proposal net中,在每个feature map的每个位置上利用anchor机制(9个)和Softmax分类器判断前景和背景,同时采用线性回归调整anchor的位置,经过非极大值抑制,保留128个调整后的bbox作为proposals;具体步骤如下:
S2-1:为了获得大量的目标候选框,使用RPN网络,对于通过第一步获得featuremaps首先经过一个卷积层kernel_size为3*3,channel数为512,padding_size为1,stride为1,获得的512通道的feature maps中的每个位置,考虑9个可能的候选框:三种面积[128,256,512]×三种比例[1:1,1:2,2:1];
S2-2:利用Softmax分类器分类器判断前景和背景;判断规则:1)假如某anchor与Ground Truth的任一目标区域的IoU最大,则该anchor判定为有目标;2)假如某anchor与Ground Truth的任一目标区域的IoU>0.7,则判定为有目标;3)假如某anchor与GroundTruth的任一目标区域的IoU<0.3,则判定为背景。所谓IoU,就是预测box和真实box的覆盖率,其值等于两个box的交集除以两个box的并集。通过softmax分类器提取出的前景anchor作为初步候选anchor;
S2-3:对S2-2获得anchor的bbox使用线性回归对anchor的边界进行修正;通过学习一组变换
Figure BDA0001925748220000201
其中Φ(A)是对应anchor的feature map组成的特征向量,w是需要学习的参数,d(A)是得到的预测值(*表示x,y,w,h,anchor中心点的坐标x,y,anchor的宽高w,h也就是每一个变换对应一个上述目标函数),分别得到x,y,w,h的预测值,为了让预测值与真实值最小,得到损失函数:/>
Figure BDA0001925748220000202
通过训练使这个Loss达到最小,N为anchor的个数,t*为Ground Truth的(x,y,w,h)。
S2-4:将修正后的anchor映射回原图,判断anchor是否大范围超过边界,剔除严重超出边界anchor,进行nms(nonmaximum suppression,非极大值抑制)再次按照nms后的softmax分类scores由大到小排序fg anchors,提取前128结果作为proposal输出。
S3:将S2得到的feature maps和proposals输入到ROI Align中,根据proposals的坐标位置在feature maps中将相应的区域池化为固定尺寸的特征图,方便后续的分类和包围盒回归操作,遍历每个proposal,将proposal分割成k*k个单元,利用双线性内插法计算四个坐标值,最后进行最大池化;具体步骤如下:
S3-1:将S2获得的proposals映射到feature maps上;
S3-2:将proposal区域分割成k*k个单元(bin);
S3-3:在每个单元中选择采样4个点,把这个单元平均分割成四个小方块以后它们分别的中心点;
S3-4:为计算每一个点的位置,利用这个点周围的feature map上的4个点结合双线性插值计算出每个采样点的准确位置;
S3-5:利用max_pooling采样得到1024通道14*14固定大小feature maps。
S4:将ROIAlign得到的固定大小的feature maps输入到Identification Net中,Identification Net由ResNet-50的conv4_4值conv5_3组成,获得最终的feature maps;具体步骤如下:
S4-1:将经过S3操作处理后获得的1024通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-2:将经过S4-1操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为256,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-3:将经过S4-2操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为1024,padding_size为0,stride为1,将3.获得的1024通道的feature maps与这1024通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得1024通道的feature maps;
S4-4:将经过S4-3操作处理后获得的1024通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-5:将经过S4-4操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为256,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-6:将经过S4-5操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为1024,padding_size为0,stride为1,将S4-3获得的1024通道的feature maps与这1024通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得1024通道的feature maps;
S4-7:将经过S4-6操作处理后获得的1024通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-8:将经过S4-7操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为256,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-9:将经过S4-8操作处理后获得的256通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为1024,padding_size为0,stride为1,将S4-6获得的1024通道的feature maps与这1024通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得1024通道的feature maps;
S4-10:将经过S4-9操作处理后获得的1024通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-11:将经过S4-10操作处理后获得的512通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为512,padding_size为1,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-12:将经过S4-11操作处理后获得的512通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为2048,padding_size为0,stride为1,将S4-9获得的1024通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为2048,padding_size为0,stride为2与这两个2048通道的feature maps对应元素相加,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得2048通道的feature maps;
S4-13:将经过S4-12操作处理后获得的2048通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-14:将经过S4-13操作处理后获得的512通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为512,padding_size为1,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-15:将经过S4-14操作处理后获得的512通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为2048,padding_size为0,stride为1,将S4-12获得的2048通道的feature maps与该2048通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得2048通道的feature maps;
S4-16:将经过S4-15操作处理后获得的2048通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-17:将经过S4-16操作处理后获得的512通道的feature maps输入到下一个卷积层中,kernel_size为3*3,channel数为512,padding_size为1,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-18:将经过S4-17操作处理后获得的512通道的feature maps输入到下一个卷积层中,kernel_size为1*1,channel数为2048,padding_size为0,stride为1,将S4-15获得的2048通道的feature maps与该2048通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得2048通道的feature maps;
S4-19:将经过S4-18操作处理后获得的2048通道的feature maps输入到下一个池化层中,采用AVE pooling操作,kernel_size为7*7,padding_size为0,stride为1。
S5:为了获得实例级的语意分割,在ROIAlign后接入FCIS语意分割网络,对feature maps进行上采样,获得最终的实例级语意分割的结果,在COCO数据上预训练的网络模型,该数据集中有81类,只关注行人这一类,直接拿过来使用,不分布参与训练;
S5-1:将S3通过RPN和ROIAlign获得的1024通道14*14大小的feature maps输入到FCIS(Fully Convolutional Instance-aware Semantic Segmentation)网络中,进行kernel_size为3,stride为1的padding操作;
S5-2:将经过S5-1获得的feature maps输入到一个卷积层,kernel_size为3*3,channel数为256,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S5-3:将经过S5-2获得的256通道的feature maps输入到一个卷积层,结构同S5-2一致;
S5-4:将经过S5-3获得的256通道的feature maps输入到一个卷积层,结构同S5-2一致;
S5-5:将经过S5-4获得的feature maps输入到一个反卷积层,kernel_size为2*2,channel数为256,stride为1;
S5-6:将经过S5-5获得的feature maps输入到一个卷积层,kernel_size为1*1,channel数为num_class(81类),stride为1,经过一层激活层,激活函数使用sigmoid;
S5-7:输出每个proposal中目标的类别mask.实现实例级的语意分割。
S6:利用S4获得的feature maps,经过global average pooling获得2048维度的特征向量,经过Softmax分类器和线性回归获得行人的位置,将通过S4操作获得2048通道feature maps,输入到一层global average pooling层中,获得一个2048维度的特征向量,为了获取精度更高的分类和Bounding box效果,再次使用Softmax分类器和线性回归获得行人的位置;
S7:将S6获得的2048维的特征向量投影到经过L2正则化后的256维向量子空间中,获得256维度的特征向量,用于行人的匹配。
1)在训练过程中,利用OIMLoss,主要关注两种类型的对象,labeled identity:与目标行人相吻合的proposal;unlabeled identities:包含行人但不是目标行人的proposal。维护一个查找表T和一个循环队列CQ,在网络训练的过程中,mini-batch中一个labeled identity的特征被记为记为x(x是D维特征向量,这里是256维度),保留一个T记录所有labeled identity的特征(D×L维矩阵,L是不同目标行人的个数),T中的一个labeledidentity的特征被记为记为v。在前向传播中,计算mini-batch中样本与所有labeledidentities之间的的余弦相似度(v转置后乘上x)。在后向传播过程中,如果目标行人的分类标签是t,那么就可以利用如下公式来更新T中的第t个特征:
Figure BDA0001925748220000262
γ∈[0;1];
2)除了labeled identities之外,利用CQ来保存那些unlabeled identities的特征,用u来表示(D×Q维矩阵,Q是queue的大小),同样也可以计算u与mini-batch样本之间的余弦相似度。每一轮迭代过后,将新的特征向量压入队列中,并剔除那些过时的;
3)特征向量x被视为第i类的行人的概率为:
Figure BDA0001925748220000261
其中T控制了概率分布的平缓程度。同样的,在CQ中,x被视为第i类unlabeledidentity的概率:
Figure BDA0001925748220000271
OIM最终目标是使得期望似然函数
Figure BDA0001925748220000272
最大化,即令L=-Ex[logpt],最小化。
模型训练的基本参数:1)最大迭代次数50000;2)使用resnet-50在imagenet上的与训练模型初始化网络模型参数;3)基础学习率为0.001;4)权重衰减率为0.0005;5)batch_size为16;6)训练数据集采用了SSM,18184张图像,8432个人的身份,96143个bounding box标注。
本发明采用的深度学习框架是pytorch版本4.0,将3通道图片resize到224*224的大小,将数据转换为tensor类型;对于查询图像query是一张已经切割好的行人的图像,将该图像输入到已经训练好的网络模型中,将该query图像进行前向计算,由于该图像是一个已经裁剪好的图像,因此在进行前向计算的时候不经过Pedestrain Proposal Net部分,对这个切割好的行人图像进行mask编码没有意义,因此在进行前向计算的时候也不经过FCIS部分,最后通过前向计算,提取出该行人256维的特征向量v_query;对于检索库中的图像gallery,是包含行人的图像帧,将这些图像依次输入到已经训练好的网络模型中,将该图像在网络模型中进行前向计算,经历模型的每个阶段,获得每一帧中行人准确的边界框bounding box,类别,mask以及256维的特征向量;计算gallery图像中行人的特征和query行人的余弦相似度。通过相似度从大到小返回包含该query行人所在的前5帧图像。
本发明与现有技术的区别在于:
1、将得到的feature maps和proposals输入到ROI Align中,根据proposals的坐标位置在feature maps中将相应的区域池化为固定尺寸的特征图,方便后续的分类和包围盒回归操作,遍历每个proposal,将proposal分割成k*k个单元,利用双线性内插法计算四个坐标值,最后进行最大池化。具体步骤如下:
a)将S2获得的proposals映射到feature maps上;
b)将proposal区域分割成k*k个单元(bin);
c)在每个单元中选择采样4个点,把这个单元平均分割成四个小方块以后它们分别的中心点;
d)为计算每一个点的位置,利用这个点周围的feature map上的4个点结合双线性插值计算出每个采样点的准确位置;
e)利用max_pooling采样得到1024通道14*14固定大小feature maps。
2、为了获得实例级的语意分割,在ROIAlign后接入FCIS语意分割网络,对featuremaps进行上采样,获得最终的实例级语意分割的结果。使用的是在COCO数据上预训练的网络模型,该数据集中有81类,只关注行人这一类,直接拿过来使用,这不分布参与训练,具体步骤如下:
a)将S3通过RPN和ROIAlign获得的1024通道14*14大小的featuremaps输入到FCIS(Fully Convolutional Instance-aware Semantic Segmentation)网络中,进行kernel_size为3,stride为1的padding操作;
b)将经过a)获得的feature maps输入到一个卷积层,kernel_size为3*3,channel数为256,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
c)将经过b)获得的256通道的feature maps输入到一个卷积层,结构同S5-2一致;
d)将经过c)获得的256通道的feature maps输入到一个卷积层,结构同S5-2一致;
e)将经过d)获得的feature maps输入到一个反卷积层,kernel_size为2*2,channel数为256,stride为1;
f)将经过e)获得的feature maps输入到一个卷积层,kernel_size为1*1,channel数为num_class(81类),stride为1,经过一层激活层,激活函数使用sigmoid;
g)输出每个proposal中目标的类别mask,实现实例级的语意分割,实现一种端到端的行人实例级检测和行人再识别功能,可以适用于公共场景。
综上所述,本发明提出的基于深度学习的实例级行人检测和行人重识别***,将得到的feature maps和proposals输入到ROI Align中,根据proposals的坐标位置在feature maps中将相应的区域池化为固定尺寸的特征图,方便后续的分类和包围盒回归操作,遍历每个proposal,将proposal分割成k*k个单元,利用双线性内插法计算四个坐标值,最后进行最大池化,在ROIAlign后接入FCIS语意分割网络,对feature maps进行上采样,获得最终的实例级语意分割的结果,根据行人检测部分获得当前场景下的所有行人实例,构建行人检索库;输入待查询行人图像,通过行人再识别部分计算待查询图像与行人检索库中所有行人的相似度,按照相似度从高到低返回包含检索库中行人的图像帧,实现一种端到端的行人实例级检测和行人再识别功能,可以适用于公共场景。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

Claims (6)

1.基于深度学习的实例级行人检测和行人重识别***,其特征在于,包括如下步骤:
S1:选择ResNet-50作为CNN模型的网络结构,其具有conv1和四个blocks,四个blocks包括conv2_x、conv3_x、conv4_x、conv5_x,每个blocks包含3,4,6,3个残差单元,利用conv1到conv4_3作为stemCNN部分,给定一张输入图像,stem产生1024个通道的convfeaturemaps;
S2:将获得的convfeaturemaps输入到pedestrianproposalnet中,在每个featuremap的每个位置上利用anchor机制和Softmax分类器判断前景和背景,同时采用线性回归调整anchor的位置,经过非极大值抑制,保留128个调整后的bbox作为proposals;
S3:将S2得到的featuremaps和proposals输入到ROIAlign中,根据proposals的坐标位置在featuremaps中将相应的区域池化为固定尺寸的特征图,方便后续的分类和包围盒回归操作,遍历每个proposal,将proposal分割成k*k个单元,利用双线性内插法计算四个坐标值,最后进行最大池化;
S4:将ROIAlign得到的固定大小的featuremaps输入到IdentificationNet中,IdentificationNet由ResNet-50的conv4_4至conv5_3组成,获得最终的featuremaps;
S5:为了获得实例级的语意分割,在ROIAlign后接入FCIS语意分割网络,对featuremaps进行上采样,获得最终的实例级语意分割的结果,在COCO数据上预训练的网络模型,该数据集中有81类,只关注行人这一类,直接拿过来使用,不分布参与训练;
S6:利用S4获得的featuremaps,经过globalaveragepooling获得2048维度的特征向量,经过Softmax分类器和线性回归获得行人的位置,将通过S4操作获得2048通道featuremaps,输入到一层globalaveragepooling层中,获得一个2048维度的特征向量,为了获取精度更高的分类和Boundingbox效果,再次使用Softmax分类器和线性回归获得行人的位置;
S7:将S6获得的2048维的特征向量投影到经过L2正则化后的256维向量子空间中,获得256维度的特征向量,用于行人的匹配。
2.根据权利要求1所述的基于深度学习的实例级行人检测和行人重识别***,其特征在于,S1包括如下步骤:
S1-1:数据经过一层kernel_size为7*7,channel数为64,padding_size为3,stride为2的卷积,产生64通道的featuremaps,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,最后经过一层pooling层,采用Max_pooling操作,kernel_size大小为3*3,stride为2;
S1-2:将经过S1-1操作处理后获得的64通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为64,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-3:将经过S1-2操作处理后获得的64通道的featuremaps输入到下一个卷积层中,kernel_size为3*3,channel数为64,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-4:将经过S1-3操作处理后获得的64通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1获得256通道的featuremaps,将经过S1-1操作处理后获得的64通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,获得256通道的featuremaps,将这两个256通道的featuremaps相加,获得256通道的featuremaps,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-5:将经过S1-4操作处理后获得的256通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为64,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-6:将经过S1-5操作处理后获得的64通道的featuremaps输入到下一个卷积层中,kernel_size为3*3,channel数为64,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-7:将经过S1-6操作处理后获得的64通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,将S1-4获得的256通道的featuremaps与这256通道的featuremaps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得256通道的featuremaps;
S1-8:将经过S1-7操作处理后获得的256通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为64,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-9:将经过S1-8操作处理后获得的64通道的featuremaps输入到下一个卷积层中,kernel_size为3*3,channel数为64,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-10:将经过S1-9操作处理后获得的64通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,将S1-8获得的256通道的featuremaps与这256通道的featuremaps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得256通道的featuremaps;
S1-11:将经过S1-10操作处理后获得的256通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为128,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-12:将经过S1-11操作处理后获得的128通道的featuremaps输入到下一个卷积层中,kernel_size为3*3,channel数为128,padding_size为1,stride为2,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-13:将经过S1-12操作处理后获得的128通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-14:将经过S1-10操作处理后获得的256通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为2,将经过S1-13操作获得的512通道的feature与这512通道的featuremaps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得512通道的featuremaps;
S1-15:将经过S1-14操作获得的512通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为128,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-16:将经过S1-15操作获得的128通道的featuremaps输入到下一个卷积层中,kernel_size为3*3,channel数为128,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-17:将经过S1-16操作处理后获得的128通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为1,将经过S1-14操作获得的512通道的feature与这512通道的featuremaps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得512通道的featuremaps;
S1-18:将经过S1-17操作处理后获得的512通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为128,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-19:将经过S1-18操作获得的128通道的featuremaps输入到下一个卷积层中,kernel_size为3*3,channel数为128,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-20:将经过S1-19操作处理后获得的128通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为1,将经过S1-17操作获得的512通道的feature与这512通道的featuremaps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得512通道的featuremaps;
S1-21:将经过S1-20操作处理后获得的512通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为128,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-22:将经过S1-21操作获得的128通道的featuremaps输入到下一个卷积层中,kernel_size为3*3,channel数为128,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-23:将经过S1-22操作处理后获得的128通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为1,将经过S1-20操作获得的512通道的feature与这512通道的featuremaps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得512通道的featuremaps;
S1-24:将经过S1-23操作处理后获得的512通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-25:将经过S1-24操作获得的256通道的featuremaps输入到下一个卷积层中,kernel_size为3*3,channel数为128,padding_size为1,stride为2,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-26:将经过S1-25操作获得的128通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为1024,padding_size为0,stride为1,将经过S1-23操作获得的512通道的feature,输入到卷积层,kernel_size为1*1,channel数为1024,padding_size为0,stride为2,将这两个1024通道的featuremaps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得1024通道的feature maps;
S1-27:将经过S1-26操作处理后获得的1024通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-28:将经过S1-27操作处理后获得的256通道的featuremaps输入到下一个卷积层中,kernel_size为3*3,channel数为256,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-29:将经过S1-28操作处理后获得的256通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为1024,padding_size为0,stride为1,将经过S1-26操作获得的1024通道的feature与这1024通道的featuremaps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得1024通道的featuremaps;
S1-30:将经过S1-29操作处理后获得的1024通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-31:将经过S1-30操作处理后获得的256通道的featuremaps输入到下一个卷积层中,kernel_size为3*3,channel数为256,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S1-32:将经过S1-31操作处理后获得的256通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为1024,padding_size为0,stride为1,将经过S1-29操作获得的1024通道的feature与这1024通道的featuremaps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得1024通道的featuremaps。
3.根据权利要求1所述的基于深度学习的实例级行人检测和行人重识别***,其特征在于,S2包括如下步骤:
S2-1:为了获得大量的目标候选框,使用RPN网络,对于通过第一步获得featuremaps首先经过一个卷积层kernel_size为3*3,channel数为512,padding_size为1,stride为1,获得的512通道的featuremaps中的每个位置,考虑9个可能的候选框:三种面积[128,256,512]×三种比例[1:1,1:2,2:1];
S2-2:利用Softmax分类器判断前景和背景;
S2-3:对S2-2获得anchor的bbox使用线性回归对anchor的边界进行修正;
S2-4:将修正后的anchor映射回原图,判断anchor是否大范围超过边界,剔除严重超出边界anchor,进行nms再次按照nms后的softmax分类scores由大到小排序fganchors,提取前128结果作为proposal输出。
4.根据权利要求1所述的基于深度学习的实例级行人检测和行人重识别***,其特征在于,S3包括如下步骤:
S3-1:将S2获得的proposals映射到featuremaps上;
S3-2:将proposal区域分割成k*k个单元;
S3-3:在每个单元中选择采样4个点,把这个单元平均分割成四个小方块以后它们分别的中心点;
S3-4:为计算每一个点的位置,利用这个点周围的featuremap上的4个点结合双线性插值计算出每个采样点的准确位置;
S3-5:利用max_pooling采样得到1024通道14*14固定大小featuremaps。
5.根据权利要求1所述的基于深度学习的实例级行人检测和行人重识别***,其特征在于,S4包括如下步骤:
S4-1:将经过S3操作处理后获得的1024通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-2:将经过S4-1操作处理后获得的256通道的featuremaps输入到下一个卷积层中,kernel_size为3*3,channel数为256,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-3:将经过S4-2操作处理后获得的256通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为1024,padding_size为0,stride为1,将3.获得的1024通道的featuremaps与这1024通道的featuremaps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得1024通道的featuremaps;
S4-4:将经过S4-3操作处理后获得的1024通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-5:将经过S4-4操作处理后获得的256通道的featuremaps输入到下一个卷积层中,kernel_size为3*3,channel数为256,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-6:将经过S4-5操作处理后获得的256通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为1024,padding_size为0,stride为1,将S4-3获得的1024通道的featuremaps与这1024通道的featuremaps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得1024通道的featuremaps;
S4-7:将经过S4-6操作处理后获得的1024通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为256,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-8:将经过S4-7操作处理后获得的256通道的featuremaps输入到下一个卷积层中,kernel_size为3*3,channel数为256,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-9:将经过S4-8操作处理后获得的256通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为1024,padding_size为0,stride为1,将S4-6获得的1024通道的featuremaps与这1024通道的featuremaps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得1024通道的featuremaps;
S4-10:将经过S4-9操作处理后获得的1024通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-11:将经过S4-10操作处理后获得的512通道的featuremaps输入到下一个卷积层中,kernel_size为3*3,channel数为512,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-12:将经过S4-11操作处理后获得的512通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为2048,padding_size为0,stride为1,将S4-9获得的1024通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为2048,padding_size为0,stride为2与这两个2048通道的featuremaps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得2048通道的featuremaps;
S4-13:将经过S4-12操作处理后获得的2048通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-14:将经过S4-13操作处理后获得的512通道的featuremaps输入到下一个卷积层中,kernel_size为3*3,channel数为512,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-15:将经过S4-14操作处理后获得的512通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为2048,padding_size为0,stride为1,将S4-12获得的2048通道的featuremaps与该2048通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得2048通道的featuremaps;
S4-16:将经过S4-15操作处理后获得的2048通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为512,padding_size为0,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-17:将经过S4-16操作处理后获得的512通道的featuremaps输入到下一个卷积层中,kernel_size为3*3,channel数为512,padding_size为1,stride为1,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S4-18:将经过S4-17操作处理后获得的512通道的featuremaps输入到下一个卷积层中,kernel_size为1*1,channel数为2048,padding_size为0,stride为1,将S4-15获得的2048通道的featuremaps与该2048通道的feature maps对应元素相加,经过一层BatchNormalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu,获得2048通道的featuremaps;
S4-19:将经过S4-18操作处理后获得的2048通道的featuremaps输入到下一个池化层中,采用AVEpooling操作,kernel_size为7*7,padding_size为0,stride为1。
6.根据权利要求1所述的基于深度学习的实例级行人检测和行人重识别***,其特征在于,S5包括如下步骤:
S5-1:将S3通过RPN和ROIAlign获得的1024通道14*14大小的feature maps输入到FCIS网络中,进行kernel_size为3,stride为1的padding操作;
S5-2:将经过S5-1获得的featuremaps输入到一个卷积层,kernel_size为3*3,channel数为256,padding_size为0,stride为1,经过一层Batch Normalization层对数据进行标准化操作,经过一层激活层,激活函数使用ReLu;
S5-3:将经过S5-2获得的256通道的featuremaps输入到一个卷积层,结构同S5-2一致;
S5-4:将经过S5-3获得的256通道的featuremaps输入到一个卷积层,结构同S5-2一致;
S5-5:将经过S5-4获得的featuremaps输入到一个反卷积层,kernel_size为2*2,channel数为256,stride为1;
S5-6:将经过S5-5获得的featuremaps输入到一个卷积层,kernel_size为1*1,channel数为num_class,stride为1,经过一层激活层,激活函数使用sigmoid;
S5-7:输出每个proposal中目标的类别mask实现实例级的语意分割。
CN201811615544.3A 2018-12-27 2018-12-27 基于深度学习的实例级行人检测和行人重识别*** Active CN109670555B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811615544.3A CN109670555B (zh) 2018-12-27 2018-12-27 基于深度学习的实例级行人检测和行人重识别***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811615544.3A CN109670555B (zh) 2018-12-27 2018-12-27 基于深度学习的实例级行人检测和行人重识别***

Publications (2)

Publication Number Publication Date
CN109670555A CN109670555A (zh) 2019-04-23
CN109670555B true CN109670555B (zh) 2023-07-07

Family

ID=66147325

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811615544.3A Active CN109670555B (zh) 2018-12-27 2018-12-27 基于深度学习的实例级行人检测和行人重识别***

Country Status (1)

Country Link
CN (1) CN109670555B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110378278B (zh) * 2019-07-16 2021-11-02 北京地平线机器人技术研发有限公司 神经网络的训练方法、对象搜索方法、装置以及电子设备
US11610391B2 (en) 2019-12-30 2023-03-21 Industrial Technology Research Institute Cross-domain image comparison method and system using semantic segmentation
CN112580786B (zh) * 2020-12-22 2021-09-28 之江实验室 一种用于ReID的神经网络构造方法及其训练方法
CN113392740B (zh) * 2021-06-03 2022-06-28 吉林大学 一种基于双重注意力机制的行人重识别***
CN116524602B (zh) * 2023-07-03 2023-09-19 华东交通大学 基于步态特征的换衣行人重识别方法及***

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106971178A (zh) * 2017-05-11 2017-07-21 北京旷视科技有限公司 行人检测和再识别的方法及装置
CN107909027A (zh) * 2017-11-14 2018-04-13 电子科技大学 一种具有遮挡处理的快速人体目标检测方法
CN108171184A (zh) * 2018-01-03 2018-06-15 南京理工大学 基于Siamese网络的用于行人重识别的方法
CN108280411A (zh) * 2018-01-10 2018-07-13 上海交通大学 一种具有空间变换能力的行人搜索方法
CN108830205A (zh) * 2018-06-04 2018-11-16 江南大学 基于改进全卷积网络的多尺度感知行人检测方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106971178A (zh) * 2017-05-11 2017-07-21 北京旷视科技有限公司 行人检测和再识别的方法及装置
CN107909027A (zh) * 2017-11-14 2018-04-13 电子科技大学 一种具有遮挡处理的快速人体目标检测方法
CN108171184A (zh) * 2018-01-03 2018-06-15 南京理工大学 基于Siamese网络的用于行人重识别的方法
CN108280411A (zh) * 2018-01-10 2018-07-13 上海交通大学 一种具有空间变换能力的行人搜索方法
CN108830205A (zh) * 2018-06-04 2018-11-16 江南大学 基于改进全卷积网络的多尺度感知行人检测方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
卷积神经网络——输入层、卷积层、激活函数、池化层、全连接层;yjl9122;《CSDN博客》;20170416;全文 *
面向真实场景的行人检测技术研究;李耀斌;《中国优秀硕士学位论文全文数据库》;20180930;全文 *

Also Published As

Publication number Publication date
CN109670555A (zh) 2019-04-23

Similar Documents

Publication Publication Date Title
CN109670555B (zh) 基于深度学习的实例级行人检测和行人重识别***
CN109859190B (zh) 一种基于深度学习的目标区域检测方法
CN109902677B (zh) 一种基于深度学习的车辆检测方法
CN110598610B (zh) 一种基于神经选择注意的目标显著性检测方法
CN114202672A (zh) 一种基于注意力机制的小目标检测方法
CN109359559B (zh) 一种基于动态遮挡样本的行人再识别方法
CN111027493B (zh) 一种基于深度学习多网络软融合的行人检测方法
CN109711463B (zh) 基于注意力的重要对象检测方法
CN114220035A (zh) 一种基于改进yolo v4的快速害虫检测方法
CN110728200A (zh) 一种基于深度学习的实时行人检测方法及***
CN111079739B (zh) 一种多尺度注意力特征检测方法
CN111310773A (zh) 一种高效的卷积神经网络的车牌定位方法
CN111597920B (zh) 一种自然场景下的全卷积单阶段的人体实例分割方法
CN114049381A (zh) 一种融合多层语义信息的孪生交叉目标跟踪方法
Lyu et al. Small object recognition algorithm of grain pests based on SSD feature fusion
CN112861970B (zh) 一种基于特征融合的细粒度图像分类方法
CN113066089B (zh) 一种基于注意力引导机制的实时图像语义分割方法
CN111008979A (zh) 一种鲁棒的夜晚图像语义分割方法
CN117079163A (zh) 一种基于改进yolox-s的航拍图像小目标检测方法
CN116229452B (zh) 一种基于改进的多尺度特征融合的点云三维目标检测方法
CN110517270A (zh) 一种基于超像素深度网络的室内场景语义分割方法
CN115861619A (zh) 一种递归残差双注意力核点卷积网络的机载LiDAR城市点云语义分割方法与***
CN114005085A (zh) 一种视频中密集人群分布检测与计数方法
CN114037640A (zh) 图像生成方法及装置
CN116092179A (zh) 一种改进的yolox跌倒检测***

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant