CN113963436A - 基于深度学习的安全帽识别增量学习与角色判定方法 - Google Patents

基于深度学习的安全帽识别增量学习与角色判定方法 Download PDF

Info

Publication number
CN113963436A
CN113963436A CN202111196326.2A CN202111196326A CN113963436A CN 113963436 A CN113963436 A CN 113963436A CN 202111196326 A CN202111196326 A CN 202111196326A CN 113963436 A CN113963436 A CN 113963436A
Authority
CN
China
Prior art keywords
module
learning
frame
role
safety
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.)
Pending
Application number
CN202111196326.2A
Other languages
English (en)
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.)
Shenzhen Meilun Engineering Technology Co ltd
Shandong University
Original Assignee
Shenzhen Meilun Engineering Technology Co ltd
Shandong 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 Shenzhen Meilun Engineering Technology Co ltd, Shandong University filed Critical Shenzhen Meilun Engineering Technology Co ltd
Priority to CN202111196326.2A priority Critical patent/CN113963436A/zh
Publication of CN113963436A publication Critical patent/CN113963436A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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

Landscapes

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

Abstract

本发明公开了基于深度学习的安全帽识别增量学习与角色判定方法,通过RTSP对摄像头进行取流操作,然后对采集到的视频跳帧处理。记录训练数据加入数据集的批次信息,在新的训练数据加入后对网络微调实现增量学习;根据批次确定学习规则,避免灾难性遗忘。对视频中不同颜色安全帽以及不戴安全帽的情况进行检测识别,在判定不戴安全帽不安全行为的同时,对戴安全帽的人员通过安全帽颜色确定人员角色。本发明将目标检测技术与工厂的安全机制相结合,完成风险检测预警***,在节省了大量人力物力的同时,提高了工厂的安全防护机制,完善了工厂管理制度,维护了人员的生命健康安全。

Description

基于深度学习的安全帽识别增量学习与角色判定方法
技术领域
本发明属于计算机视觉技术领域,涉及基于深度学习的监控视频增量学习方法,对安全帽佩戴情况的识别以及对安全帽颜色的区分,判断人物角色和报警***设计。
背景技术
在许多工厂中,佩戴安全帽已经成为硬性规定,必不可少。安全帽可以有效的防止突然飞来物体对头部的打击,防止头部遭电击,以及可以防止头发被卷进机器里或暴露在粉尘中。但是其重要性容易被一些工作人员忽视,从而产生安全事故。
依靠保安等工作人员人为检查安全帽的佩戴情况,识别不安全行为,存在着非常大的不稳定性和主观性,同时难以实时无死角的进行监控。同时,安全帽的不同颜色代表不同的角色,在实际场景下,不同的工作需要不同人员来进行,此时依靠安全帽的颜色就可以正确的判定人员角色,以确定某些操作是否可以执行,防止无权限角色人员的进入和操作,这项工程依靠人力分辨具有很大的局限性和不稳定性。
目前,深度学习在目标检测领域发挥的作用越来越大,其利用先进的卷积神经理论、深度置信网、神经网络等构建一个多层次的学习***,能够实现特征检测、目标检测等,提高了机器学习的准确性、可靠性和先进性。尤其是YOLO v5的出现,促进了目标检测的准确率和精确度。视觉算法在应用领域,经常因为新类别(比如新的颜色的安全帽)出现、完全不同的新场景出现等,造成识别算法失效,如果从头训练一个模型代价很高。为解决这个问题,需要进行增量学习,而增量学习中,灾难性遗忘是主要要避免的情况。本方案针对这一技术问题进行解决。
发明内容
本发明的目的在于提供基于深度学习的安全帽识别增量学习与角色判定方法,解决了如何提升工厂安全防护机制的技术问题,通过提供一种能够及时获取摄像头视频,通过对视频进行处理,识别出工作人员安全帽的佩戴状态,以及通过安全帽的不同颜色分辨工作人员角色,及时检测出没有佩戴安全帽的不安全行为、是否符合安全生产规定的方法,此外,还能支持增量学习、避免灾难性遗忘。
本发明采用增量学习和角色映射的思想,提出一种基于深度学习的安全帽识别增量学习与角色判定方法,不仅能进行安全帽检测,实现安监自动督察;同时可以实现角色识别,为后续业务提供技术支持。考虑到实际工厂环境经常性新增类别和场景的问题,采用增量学习避免高代价的零起点学习,同时采用批次方式避免增量学习中的灾难性遗忘。***包括:训练模块、摄像头调度模块、GPU调度模块、人员检测模块、角色映射模块、风险上报和记录模块;其中:
训练模块:负责收集训练数据,建立学习规则,实现增量学习,并避免灾难性遗忘。
摄像头调度模块:基于RTSP实现对正在工作的摄像头取流,通过轮询摄像头并抽帧,将数据存入待检测缓冲区。
GPU调度模块:每个GPU上都设有控制器,每个控制器探知待检测缓冲区图像数量,当数量达到一定阈值后,就组成一个批次进行预测,然后再通过队列推送回预测结果,提高模型效率和精度。
人员检测模块:基于改进的YOLO v5目标检测模型,检测并识别是否佩戴安全帽,以及安全帽颜色。
角色映射模块:通过检测的人员安全帽颜色,映射到人员角色。
风险上报和记录模块:负责将检测到的未佩戴安全帽的人员信息及照片证据上传、存储、告警,并提供历史记录和证据查询。
所述的训练模块的具体实现方法如下:
在原有训练集基础上,收集新增类别的图片,并对图片进行标注,标注的标签采用如下数据(I,x,y,w,h,c,b),其中I为图像的ID,x为标注框左上角x坐标,y为标注框左上角y坐标,w为标注框宽度,h为标注框高度,c为标注框类别标签,b为标注框批次。
关于标注框批次的确定,训练集初始化时批次均设定为1,后续新增图片批次增1。
增量学习中,在原训练模型基础上进行微调(fine-tuning),通过如下损失函数防止灾难性遗忘:
Figure BDA0003303102810000021
其中Iobj是指示函数,表示某个锚窗口负责这个类别时才参与计算;bi是第(1)步记录的批次信息,ci是类别标签,pj(ci)是预测的概率。
关于检测框回归,采用如下坐标计算:
Figure BDA0003303102810000031
Figure BDA0003303102810000032
其中x*和xa分别表示预测框和锚框的左上角x坐标,y,w,h类似,分别为左上角y坐标、框宽、框高;t为训练时得到框回归参数。回归采用CIOU损失函数。
所述的摄像头调度模块的实现方法如下:
构建一个全局图像链表,一个线程轮询所有摄像头;
对每个摄像头,基于RTSP取流,并抽当前帧;
对全局图像链表加锁,并将当前帧存入,解锁,过程如下:
if Is.Length<MaxLen
{
Lock(Is);
Is.Add(I);
Unlock(Is);
}
其中Is为全局图像链表,I为抽帧得到的当前图形,MaxLen为链表允许的最大长度。当链表达到最大长度,停止抽取图像,等待链表中的图像被GPU调度模块消费掉。
所述的GPU调度模块实现方法如下:
每个GPU调度模块独立检测全局图像链表长度是否超过一定阈值;
当检测超过阈值时,对全局链表加锁,获取阈值数量的图像,并从全局链表删除,再解锁;
将获取的图像组成一个批次,载入GPU进行训练。
过程如下:
if Is.Lenght>=MinLen
{
Lock(Is);
Batch=Is.Get(MinLen);
Is.Remove(MinLen);
Unlock(Is);
Pack(Batch);
}
其中MinLen是设定的GPU一个批次可以处理的数量阈值。
所述的人员检测模块的实现方法如下:
检测框计算如下:
Figure BDA0003303102810000041
检测框的类别:
Figure BDA0003303102810000042
,其中
Figure BDA0003303102810000043
为预测属于某个类的概率。
所述的角色映射模块的实现方法如下:
构建一个颜色-角色映射函数
Figure BDA0003303102810000044
其中
Figure BDA0003303102810000045
是安全帽颜色集合,
Figure BDA0003303102810000046
是角色集合。识别出安全帽颜色后,通过映射函数确定角色。
所述的风险上报和记录模块的实现方法如下:
人员检测模块检测到信息后,发送Kafka消息;
风险上报和记录模块收到Kafka消息后,把未佩戴安全帽情况判定为风险情况,并持久化证据等信息;
风险上报和记录模块弹出警报信息;
风险上报和记录模块提供后续查询功能。
本发明分成多个部分,每个部分都有自己的配置说明,改变不同的配置文件就可以对相应的配置进行修改,提高***灵活性和可扩展性。可使用配置文件对***进行个性化配置,以满足不同产品需求,具有未来可扩展性,同时提高易用性和易维护性。
本发明达成以下显著效果:
本发明将深度学习技术与工厂安全机制结合起来,在识别出安全帽的基础上进一步区分安全帽的颜色,从而区分工作人员的角色,并且对摄像头通过RTSP进行实时取流,及时监测不同颜色安全帽的工作人员活动状态,判定人员是否存在不安全行为,存在风险信息,当出现不安全行为时,及时上传风险图片,发出风险信息。在新增识别种类和场景时,可以实现增量学习,同时保存过去学习的记忆,保证该发明能够长期、安全、稳定、可靠、高效的运行。
附图说明
图1是本发明实施例中的***结构图。
图2是本发明实施例中的训练模型流程图。
图3是本发明实施例中的数据流程图。
具体实施方式
为了能更加清楚说明本方案的技术特点,下面通过具体实施方式,对本方案进行阐述。
本发明涉及一种基于深度学习的安全帽识别与角色判定方法。该发明主要可以分为训练和运行两个大的过程。
参见图1,训练模块负责模型训练,得到的数据模型为人员检测模块的智能识别提供基础。运行模块首先使用摄像头调度模块获取抽帧图像,存入全局图像链表。GPU调度模块不断检测图像链表,数据充足时组成打包成一个批次,送入人员检测模块进行安全帽识别。识别结果通过角色映射模块确定角色。同时,将风险信息记录到风险上报和记录模块,并留存证据。
参见图2,从原安防摄像机所属单位获取已有的视频资料及图像资料,挑取不同角度下,不同场景下,不同时间段,带多种颜色帽子的人员流动较大的情况下的视频及图像资料,或者是从摄像头直接通过RTSP协议进行取流操作,然后将获取的视频及图片资料传到本***。
在视频抽帧处理过程中,本***需要对获得的视频进行跳帧操作,为尽量贴近工厂现实情况,提高本发明的准确率,在进行跳帧处理时,选取间隔时间相同的帧,然后对获得图像进行必要的挑选。有些图像***不明显或者是图像上没有出现任何人员,以及图像上的人员模糊不清,对模型训练没有起到积极效果的这些图片进行相应的丢弃处理。将人员流动明显,安全帽颜色多样,人员近距离和远距离的拍摄情况都很全面的图像进行保留。
将获得的图片进行标注,主要依靠人力和相关标注软件同时进行。因为获取的数据有限,所以将获得的数据进行一系列数据增强操作,提高本发明的准确率,然后将戴有不同颜色安全帽的工作人员进行标注,同一颜色的安全帽标注为同一类别,不同颜色的安全帽标注为不同的类别,将不带安全帽的工作人员标注为不戴安全帽的类别。在标注过程中,有些安全帽是被工作人员拿在手中或者是举到身前,放在背后或者是举到头顶,安全帽已经脱离头部,这些情况按照规定都不属于正确佩戴安全帽的情况,所以全都被列为没有佩戴安全帽的情况。
数据标注完成后划分为训练集,验证集及测试集等,然后构建模型进行训练。通过前述的检测框回归和增量模型训练,得到最终的学习模型,该模型供给人员检测模块使用。
参见图3,所有图像数据存储在一个全局图像链表中,是运行时整个数据的存、取中心。该链表设置一个最大长度MaxLen和一个最小长度MinLen。
摄像头调度模块不断轮询摄像头,抽帧后判断链表长度是否小于MaxLen。如果不小于,则丢掉抽取的帧或持有帧但等待,直到链表长度小于MaxLen。如果小于,则对链表加锁,把图像***链表,解锁,继续轮询摄像机。
GPU调度模块不断探测全局图像链表,判断链表长度是否大于等于MinLen。如果小于,则等待5秒后继续探测。如果大于等于,则对链表加锁,获取前面MinLen个帧,并把这些帧从全局图像链表中删除,解锁。然后把获取的这些帧打包,送入GPU进行检测。
将图片检测完成后,就可以识别是否含有不带安全帽的不安全行为以及不同颜色安全帽代表的不同人员是否遵守相应的人员数量要求,避免本需要双人作业或者多人作业的工作只有一人实际操作,及时检测出不安全情况,存在的风险,然后上报风险***。
本***将检测到的风险资料,包括蕴含风险的视频和图像资料上传到存储服务器,方便事后查找和留存,将相应的风险信息上传到风险处理平台,然后依据实际情况对该风险进行处理,及时做出相应的解决措施。
本发明未经描述的技术特征可以通过或采用现有技术实现,在此不再赘述,当然,上述说明并非是对本发明的限制,本发明也并不仅限于上述举例,本技术领域的普通技术人员在本发明的实质范围内所做出的变化、改型、添加或替换,也应属于本发明的保护范围。

Claims (7)

1.基于深度学习的安全帽识别增量学习与角色判定方法,其特征在于,包括训练模块、摄像头调度模块、GPU调度模块、人员检测模块、角色映射模块、风险上报和记录模块;其中,
训练模块:负责收集训练数据,建立学习规则,实现增量学习,并避免灾难性遗忘;
摄像头调度模块:基于RTSP实现对正在工作的摄像头取流,通过轮询摄像头并抽帧,将数据存入待检测缓冲区;
GPU调度模块:每个GPU上都设有控制器,每个控制器探知待检测缓冲区图像数量,当数量达到一定阈值后,就组成一个批次进行预测,然后再通过队列推送回预测结果,提高模型效率和精度;
人员检测模块:基于改进的YOLO v5目标检测模型,检测并识别是否佩戴安全帽,以及安全帽颜色;
角色映射模块:通过检测的人员安全帽颜色,映射到人员角色;
风险上报和记录模块:负责将检测到的未佩戴安全帽的人员信息及照片证据上传、存储、告警,并提供历史记录和证据查询。
2.根据权利要求1所述的基于深度学习的安全帽识别增量学习与角色判定方法,其特征在于,训练模块的具体实现方法如下:
在原有训练集基础上,收集新增类别的图片,并对图片进行标注,标注的标签采用如下数据(I,x,y,w,h,c,b),其中I为图像的ID,x为标注框左上角x坐标,y为标注框左上角y坐标,w为标注框宽度,h为标注框高度,c为标注框类别标签,b为标注框批次;
关于标注框批次的确定,训练集初始化时批次均设定为1,后续新增图片批次增1;
增量学习中,在原训练模型基础上进行微调(fine-tuning),通过如下损失函数防止灾难性遗忘:
Figure FDA0003303102800000011
其中Iobj是指示函数,表示某个锚窗口负责这个类别时才参与计算;bi是第(1)步记录的批次信息,ci是类别标签,pj(ci)是预测的概率。
3.根据权利要求2所述的基于深度学习的安全帽识别增量学习与角色判定方法,其特征在于,摄像头调度模块的实现方法如下:
构建一个全局图像链表,一个线程轮询所有摄像头;
对每个摄像头,基于RTSP取流,并抽当前帧;
对全局图像链表加锁,并将当前帧存入,解锁。
4.根据权利要求3所述的基于深度学习的安全帽识别增量学习与角色判定方法,其特征在于,GPU调度模块实现方法如下:
每个GPU调度模块独立检测全局图像链表长度是否超过一定阈值;
当检测超过阈值时,对全局链表加锁,获取阈值数量的图像,并从全局链表删除,再解锁;
将获取的图像组成一个批次,载入GPU进行训练。
5.根据权利要求4所述的基于深度学习的安全帽识别增量学习与角色判定方法,其特征在于,人员检测模块的实现方法如下:
检测框计算如下:
Figure FDA0003303102800000021
其中x*和xa分别表示预测框和锚框的左上角x坐标,y,w,h类似,分别为左上角y坐标、框宽、框高;t为训练时得到框回归参数;
检测框的类别:
Figure FDA0003303102800000022
其中
Figure FDA0003303102800000023
为预测属于某个类的概率。
6.根据权利要求5所述的基于深度学习的安全帽识别增量学习与角色判定方法,其特征在于,角色映射模块的实现方法如下:
构建一个颜色-角色映射函数
Figure FDA0003303102800000024
其中
Figure FDA0003303102800000025
是安全帽颜色集合,
Figure FDA0003303102800000026
是角色集合。识别出安全帽颜色后,通过映射函数确定角色。
7.根据权利要求6所述的基于深度学习的安全帽识别增量学习与角色判定方法,其特征在于,风险上报和记录模块的实现方法如下:
人员检测模块检测到信息后,发送Kafka消息;
风险上报和记录模块收到Kafka消息后,把未佩戴安全帽情况判定为风险情况,并持久化证据等信息;
风险上报和记录模块弹出警报信息;
风险上报和记录模块提供后续查询功能。
CN202111196326.2A 2021-10-14 2021-10-14 基于深度学习的安全帽识别增量学习与角色判定方法 Pending CN113963436A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111196326.2A CN113963436A (zh) 2021-10-14 2021-10-14 基于深度学习的安全帽识别增量学习与角色判定方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111196326.2A CN113963436A (zh) 2021-10-14 2021-10-14 基于深度学习的安全帽识别增量学习与角色判定方法

Publications (1)

Publication Number Publication Date
CN113963436A true CN113963436A (zh) 2022-01-21

Family

ID=79464147

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111196326.2A Pending CN113963436A (zh) 2021-10-14 2021-10-14 基于深度学习的安全帽识别增量学习与角色判定方法

Country Status (1)

Country Link
CN (1) CN113963436A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115578605A (zh) * 2022-11-16 2023-01-06 北京阿丘科技有限公司 基于增量学习的数据分类方法、装置、设备及存储介质
CN117278696A (zh) * 2023-11-17 2023-12-22 西南交通大学 一种建造现场实时个人防护装备违规视频剪辑方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120310864A1 (en) * 2011-05-31 2012-12-06 Shayok Chakraborty Adaptive Batch Mode Active Learning for Evolving a Classifier
CN110188724A (zh) * 2019-06-05 2019-08-30 中冶赛迪重庆信息技术有限公司 基于深度学习的安全帽定位与颜色识别的方法及***
CN111079731A (zh) * 2019-12-03 2020-04-28 中冶赛迪重庆信息技术有限公司 基于安全帽识别监控***的配置***、方法、设备及介质
CN112488209A (zh) * 2020-11-25 2021-03-12 南京大学 一种基于半监督学习的增量式图片分类方法
CN112488073A (zh) * 2020-12-21 2021-03-12 苏州科达特种视讯有限公司 目标检测方法、***、设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120310864A1 (en) * 2011-05-31 2012-12-06 Shayok Chakraborty Adaptive Batch Mode Active Learning for Evolving a Classifier
CN110188724A (zh) * 2019-06-05 2019-08-30 中冶赛迪重庆信息技术有限公司 基于深度学习的安全帽定位与颜色识别的方法及***
CN111079731A (zh) * 2019-12-03 2020-04-28 中冶赛迪重庆信息技术有限公司 基于安全帽识别监控***的配置***、方法、设备及介质
CN112488209A (zh) * 2020-11-25 2021-03-12 南京大学 一种基于半监督学习的增量式图片分类方法
CN112488073A (zh) * 2020-12-21 2021-03-12 苏州科达特种视讯有限公司 目标检测方法、***、设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
伍吉修: "面向建筑工地人员安全防护的视觉检测研究", 《中国优秀硕士学位论文全文数据库工程科技Ⅰ辑》, no. 6, 15 June 2021 (2021-06-15), pages 1 - 49 *
金睿琦: "自主目标搜索无人机视觉***技术研究", 《万方》, 4 February 2021 (2021-02-04), pages 1 - 54 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115578605A (zh) * 2022-11-16 2023-01-06 北京阿丘科技有限公司 基于增量学习的数据分类方法、装置、设备及存储介质
CN117278696A (zh) * 2023-11-17 2023-12-22 西南交通大学 一种建造现场实时个人防护装备违规视频剪辑方法
CN117278696B (zh) * 2023-11-17 2024-01-26 西南交通大学 一种建造现场实时个人防护装备违规视频剪辑方法

Similar Documents

Publication Publication Date Title
CN113963436A (zh) 基于深度学习的安全帽识别增量学习与角色判定方法
CN110738135B (zh) 一种工人作业工步规范视觉识别判定与指导方法及***
CN110414400B (zh) 一种施工现场安全帽穿戴自动检测方法及***
CN111783744A (zh) 一种操作现场安全防护检测方法及装置
CN112766050B (zh) 着装及作业检查方法、计算机装置及存储介质
CN110889339B (zh) 基于头肩检测的危险区域分级预警方法与***
CN209543514U (zh) 基于人脸识别的监控与报警***
CN112396658A (zh) 一种基于视频的室内人员定位方法及定位***
CN113807240A (zh) 基于非配合式人脸识别的变电站人员着装智能监控方法
CN110458794B (zh) 用于轨道列车的配件质量检测方法及装置
CN113673495B (zh) 一种基于神经网络的智慧安防方法、***和可读存储介质
CN111601081A (zh) 一种吊篮作业的监控方法和装置
CN112434828A (zh) 一种5t运维中安全防护智能识别方法
CN117035419B (zh) 企业项目实施智能管理***及方法
CN115035088A (zh) 一种基于yolov5和姿态估计的安全帽佩戴检测方法
CN111191507A (zh) 智慧社区的安全预警分析方法及***
CN112434827A (zh) 一种5t运维中安全防护识别单元
CN111523488A (zh) 厨房工作人员行为实时监控方法
CN117114619B (zh) 一种基于大数据分析的项目安全管理***
CN116682034A (zh) 一种复杂生产作业场景下危险行为检测方法
CN111178198B (zh) 一种基于机器视觉的实验室危险品安全隐患自动监测方法
CN111055890A (zh) 一种铁路车辆防溜智能检测方法及检测***
CN109948550A (zh) 一种智慧火车站人流量监控***及方法
CN115147930A (zh) 一种基于人工智能的大数据视频ai分析***
CN114565870A (zh) 一种基于视觉的生产线管控方法及装置、***、电子设备

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