1.本发明涉及一种无人天车作业区域人员检测方法,属于冶金自动化生产方法技术领域。
背景技术:2.无人天车是以全自动天车运行代替人工操作天车的一种全新的天车作业方式。无人天车控制方法是随企业物流的发展,信息化的逐步完善的产物,无人天车自动化技术的提高,可以显著提高生产及运输效率。而无人天车系统存在无法判断作业区域是否有人员逗留的问题,在无人天车作业区范围内有人员流动的情况下进行无人天车作业,有可能会造成人员伤害的问题隐患。
技术实现要素:3.本发明目的是提供一种无人天车作业区域人员检测方法,通过在厂区及无人天车下方加装摄像头,获取作业区域摄像头捕获的实时视频流,通过基于深度学习的人体检测方法,采用快速识别的循环神经网络模型,利用人体检测数据集进行目标检测模型的训练,利用厂区摄像头采集的样本数据进行模型的微调,使检测模型能够准确实时地识别出作业范围内的人员,及时对天车发出预警信息并对逗留人员发出报警,避免发生人车碰撞事故,实现全方位的智能安防监控,保障厂区作业安全,有效地解决了背景技术中存在的上述问题。
4.本发明的技术方案是:一种无人天车作业区域人员检测方法,包含以下步骤:在厂区及无人天车下方加装摄像头,实时获取作业区域监控视频信息,使用卷积神经网络直接预测不同目标的类别与位置,当天车需要经过某作业区域时,向方法发送检测信号,方法通过人体检测算法判断是否有人员停留在该作业区域,如果作业区域有人员停留,及时为天车提供预警,避免发生人车碰撞事故。
5.具体步骤如下:步骤a、在图像输入后,采用基于非线性降维的图像识别技术,对图像进行处理;步骤b、利用darknet特征提取网络对图像进行特征提取;应用darknet框架,darknet是一个深度学习框架,把基础文件部署在src文件夹,把检测和分类函数部署在example文件夹,直接对源代码进行查看和修改, darknet框架部署到机器本地根据机器情况,使用cpu和gpu进行检测识别任务的本地端部署;步骤c、对特征进行多次下采样并加入残差结构,保障在网络结构很深的情况下仍能收敛;应用tensorrt模块,在部署推理模型时,gpu启动不同的cuda核心对每个层都进行运算,tensorrt通过对层间的纵向合并,减少层数,占用少量cuda核心来完成相同的运算,大幅提高计算效率,节省计算时间,及时做出响应;步骤d、根据任务的需求,输出不同尺度的特征图,每个特征图对应3种锚框,用作
预测不同大小的目标;训练工作在高性能gpu或多cpu服务器上进行,完成设定目标后将模型部署到含有边缘计算能力的摄像头上投入实际使用,完成实现摄像头数据采集-》人员检测-》发出报警的检测流程,进行难例数据的采集和上传,当采集到一定数据量时,由操作人员自行决定是否进行模型更新,模型迭代训练及评估等由服务器提供服务,待服务器训练完毕后通过无线网络连接摄像头进行模型迭代升级,保证检测模型的持续优化,为安全作业保驾护航;步骤e、进行结果预测,采用多个独立的逻辑分类器来计算属于特定标签的可能性,得出结论天车下方是否有作业人员;步骤f、天车系统根据ai系统输出的信号来确定下一步动作,是保持静止还是继续执行。
6.使用二元交叉熵损失函数进行计算,交叉熵损失函数是分类目标函数,二元交叉熵损失函数的大间隔损失函数和中心损失函数从增大类间距离、减小类内距离的角度不仅提高了分类准确性,而且还提高了特征的分辨能力,二元交叉熵损失函数的坡道损失函数处理分类问题目,提高了系统的抗噪特性。
7.本发明的有益效果是:通过在厂区及无人天车下方加装摄像头,获取作业区域摄像头捕获的实时视频流,通过基于深度学习的人体检测方法,采用快速识别的循环神经网络模型,利用人体检测数据集进行目标检测模型的训练,利用厂区摄像头采集的样本数据进行模型的微调,使检测模型能够准确实时地识别出作业范围内的人员,及时对天车发出预警信息并对逗留人员发出报警,避免发生人车碰撞事故,实现全方位的智能安防监控,保障厂区作业安全。
附图说明
8.图1是本发明的工作流程图;图2是本发明的实物图。
具体实施方式
9.为了使发明实施案例的目的、技术方案和优点更加清楚,下面将结合实施案例中的附图,对本发明实施案例中的技术方案进行清晰的、完整的描述,显然,所表述的实施案例是本发明一小部分实施案例,而不是全部的实施案例,基于本发明中的实施案例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施案例,都属于本发明保护范围。
10.一种无人天车作业区域人员检测方法,包含以下步骤:在厂区及无人天车下方加装摄像头,实时获取作业区域监控视频信息,使用卷积神经网络直接预测不同目标的类别与位置,当天车需要经过某作业区域时,向方法发送检测信号,方法通过人体检测算法判断是否有人员停留在该作业区域,如果作业区域有人员停留,及时为天车提供预警,避免发生人车碰撞事故。
11.具体步骤如下:步骤a、在图像输入后,采用基于非线性降维的图像识别技术,对图像进行处理;步骤b、利用darknet特征提取网络对图像进行特征提取;
应用darknet框架,darknet是一个深度学习框架,把基础文件部署在src文件夹,把检测和分类函数部署在example文件夹,直接对源代码进行查看和修改, darknet框架部署到机器本地根据机器情况,使用cpu和gpu进行检测识别任务的本地端部署;步骤c、对特征进行多次下采样并加入残差结构,保障在网络结构很深的情况下仍能收敛;应用tensorrt模块,在部署推理模型时,gpu启动不同的cuda核心对每个层都进行运算,tensorrt通过对层间的纵向合并,减少层数,占用少量cuda核心来完成相同的运算,大幅提高计算效率,节省计算时间,及时做出响应;步骤d、根据任务的需求,输出不同尺度的特征图,每个特征图对应3种锚框,用作预测不同大小的目标;训练工作在高性能gpu或多cpu服务器上进行,完成设定目标后将模型部署到含有边缘计算能力的摄像头上投入实际使用,完成实现摄像头数据采集-》人员检测-》发出报警的检测流程,进行难例数据的采集和上传,当采集到一定数据量时,由操作人员自行决定是否进行模型更新,模型迭代训练及评估等由服务器提供服务,待服务器训练完毕后通过无线网络连接摄像头进行模型迭代升级,保证检测模型的持续优化,为安全作业保驾护航;步骤e、进行结果预测,采用多个独立的逻辑分类器来计算属于特定标签的可能性,得出结论天车下方是否有作业人员;步骤f、天车系统根据ai系统输出的信号来确定下一步动作,是保持静止还是继续执行。
12.使用二元交叉熵损失函数进行计算,交叉熵损失函数是分类目标函数,二元交叉熵损失函数的大间隔损失函数和中心损失函数从增大类间距离、减小类内距离的角度不仅提高了分类准确性,而且还提高了特征的分辨能力,二元交叉熵损失函数的坡道损失函数处理分类问题目,提高了系统的抗噪特性。
13.在实际应用中,本发明实时获取作业区域监控视频信息,使用卷积神经网络直接预测不同目标的类别与位置,当天车需要经过某作业区域时,向方法发送检测信号,方法通过人体检测算法判断是否有人员停留在该作业区域,如果作业区域有人员停留,及时为天车提供预警,避免发生人车碰撞事故。
14.包括如下步骤:步骤a、图像输入后,采用基于非线性降维的图像识别技术,对图像进行处理。
15.步骤b、利用darknet特征提取网络对图像进行特征提取。
16.本发明应用darknet框架,darknet是一个深度学习框架,把基础文件部署在src文件夹,把检测、分类函数部署在example文件夹,直接对源代码进行查看和修改, darknet框架部署到机器本地根据机器情况,使用cpu和gpu进行检测识别任务的本地端部署。
17.步骤c、对特征进行多次下采样并加入残差结构,保障在网络结构很深的情况下仍能收敛。
18.本发明应用了tensorrt模块。tensorrt是一个为深度学习提供低延迟,高吞吐率的推理优化器,可以为大数据处理深度学习模型提供推理加速,减小模型运行时间,提高速度。模型中包含很多层网络,在部署推理模型时,gpu启动不同的cuda核心对每个层都要进行运算。tensorrt通过对层间的纵向合并,减少层数,这样可以占用少量cuda核心来完成相
同的运算,大幅提高计算效率,节省计算时间,及时做出响应。
19.步骤d、根据任务的需求,输出不同尺度的特征图,每个特征图对应3种锚框,用作预测不同大小的目标。
20.训练工作在高性能gpu或多cpu服务器上进行,完成设定目标后将模型部署到含有边缘计算能力的摄像头上投入实际使用,完成实现摄像头数据采集-》人员检测-》发出报警的检测流程,进行难例数据的采集和上传,当采集到一定数据量时,由操作人员自行决定是否进行模型更新,模型迭代训练及评估等由服务器提供服务,待服务器训练完毕后通过无线网络连接摄像头进行模型迭代升级,保证检测模型的持续优化,为安全作业保驾护航。
21.步骤e、进行结果预测,采用多个独立的逻辑分类器来计算属于特定标签的可能性,得出结论天车下方是否有作业人员。
22.步骤f、天车系统根据ai系统输出的信号来确定下一步动作,是保持静止还是继续执行。
23.主要代码如下:if ( strncmp( (char *)qmsg, gc104, 8) == 0 ){memset(&plcgc104, 0x00, sizeof(plcgc104));memcpy(&plcgc104, qmsg, sizeof(plcgc104));crid = _getcraneid(plcgc104.cr_head.cr_no);vas_dong = gm-》basic.set_cr[crid].cr_nm[4]
ꢀ‑ꢀ
'0';sprintf(logfp, "work order checking start");_log_print(appname, 'i', "deque", logfp);if(gm-》crane[crid].stat.plc_coil_yn == '0')//no load{from_dx = gm-》crane[crid].dx;from_dy = gm-》crane[crid].dy;to_dx = _atoi(plcgc104.cr_up_dx, 7);to_dy = _atoi(plcgc104.cr_up_dy, 7);stat_gbn = 1;re_pass = jpasspnt();if(re_pass《 0){sprintf(logfp, "jpasspnt address error return line[%d]", __line__);_log_print(appname, 'i', "deque", logfp);}re_pass = safe_jpasspnt();if(re_pass《 0){if(re_pass==-1)sprintf(logfp, "passpointgbn[%d] counts out quantity 》 5",stat_gbn);
elsesprintf(logfp, "safe_jpasspnt address error return line[%d]", __line__);log_print(appname, 'i', "deque", logfp);return;}}else if(gm-》crane[crid].stat.plc_coil_yn == '1'){sprintf(logfp, "coil loading");log_print(appname, 'i', "deque", logfp);}else{sprintf(logfp, "coil sensor error line[%d]", __line__);log_print(appname, 'i', "deque", logfp);sprintf(logfp, "crane coil sensing information error");trkmsg(gm-》basic.set_cr[crid].cr_nm, logfp, jpasspnt, 238);vasmsgdbupdate( jpasspnt, 1, 1, gm-》basic.set_cr[crid].cr_nm, vas_dong, 8965 ); return;
ꢀꢀ
}if(gm-》crane[crid].stat.plc_coil_yn == '0'){from_dx = _atoi(plcgc104.cr_up_dx, 7);from_dy = _atoi(plcgc104.cr_up_dy, 7);to_dx = _atoi(plcgc104.cr_dn_dx, 7);to_dy = _atoi(plcgc104.cr_dn_dy, 7);stat_gbn = 2;}else if(gm-》crane[crid].stat.plc_coil_yn == '1'){from_dx = gm-》crane[crid].dx;from_dy = gm-》crane[crid].dy;to_dx = _atoi(plcgc104.cr_dn_dx, 7);to_dy = _atoi(plcgc104.cr_dn_dy, 7);stat_gbn = 2;}else
{sprintf(logfp, "coil sensor error line[%d]", __line__); _log_print(appname, 'i', "deque", logfp);sprintf(logfp, "crane coil sensing information error");trkmsg(gm-》basic.set_cr[crid].cr_nm, logfp, crrcvxxx+crid, 238);vasmsgdbupdate( jpasspnt, 1, 1, gm-》basic.set_cr[crid].cr_nm, vas_dong, 8965 );return;}re_pass = jpasspnt();if(re_pass《 0){sprintf(logfp, "jpasspnt address error return line[%d]", __line__);log_print(appname, 'i', "deque", logfp);return;}re_pass = safe_jpasspnt();if(re_pass《 0){if(re_pass==-1)sprintf(logfp, "passpointgbn[%d] counts out quantity 》 5",stat_gbn);elsesprintf(logfp, "safe_jpasspnt address error return line[%d]", __line__);_log_print(appname, 'i', "deque", logfp);return;}data_set(1);memset(test, 0x00, sizeof(test));memcpy(test, &plcgc104, sizeof(plcgc104));(void)_msg_snd(q_crane[crid], jpasspnt, (uchar *)&plcgc104, sizeof(plcgc104));sprintf(logfp,"send data[%s], crid[%d]", test, crid );_log_print(appname, 'i', "deque", logfp); }else if ( strncmp( (char *)qmsg, gc301, 8) == 0 ) {memset(&plcgc301, 0x00, sizeof(plcgc301));memcpy(&plcgc301, qmsg, sizeof(plcgc301));
crid = _getcraneid(plcgc301.cr_head.cr_no);if(plcgc301.cr_move_command == '1') //home move{from_dx = gm-》crane[crid].dx;from_dy = gm-》crane[crid].dy;to_dx = _atoi(plcgc301.cr_x_phy, 6);to_dy = _atoi(plcgc301.cr_y_phy, 5);if(gm-》crane[crid].stat.plc_coil_yn == '1'){stat_gbn = 2;}else if(gm-》crane[crid].stat.plc_coil_yn == '0'){stat_gbn = 1;}else{sprintf(logfp, "coil sensor error line[%d]", __line__);log_print(appname, 'i', "deque", logfp);sprintf(logfp, "crane coil sensing information error");trkmsg(gm-》basic.set_cr[crid].cr_nm, logfp, jpasspnt, 238);vasmsgdbupdate( jpasspnt, 1, 1, gm-》basic.set_cr[crid].cr_nm, vas_dong, 8965 );return;}re_pass = jpasspnt();if(re_pass《 0){sprintf(logfp, "jpasspnt address error return line[%d]", __line__);_log_print(appname, 'i', "deque", logfp);return;}re_pass = safe_jpasspnt();if(re_pass《 0){if(re_pass==-1)sprintf(logfp, "gc301 home move passpointgbn[%d] counts out quantity 》 5",stat_gbn);elsesprintf(logfp, "safe_jpasspnt address error return line[%d]", __
line__);_log_print(appname, 'i', "deque", logfp);return;}}else if(plcgc301.cr_move_command == '2')//simple move{from_dx = gm-》crane[crid].dx;from_dy = gm-》crane[crid].dy;to_dx = _atoi(plcgc301.cr_x_phy, 6);to_dy = _atoi(plcgc301.cr_y_phy, 5);re_dy = before_dy_chk(to_dx, to_dy);if(re_dy》 0){sprintf(temp, "%05d", re_dy);memcpy(plcgc301.cr_y_phy, temp, 5);to_dy = re_dy;}else if(re_dy《 0){sprintf(logfp,"target error dy[%d]", t_dy);log_print(appname, 'i', "deque", logfp);return;}if(gm-》crane[crid].stat.plc_coil_yn == '1'){stat_gbn = 2;}else if(gm-》crane[crid].stat.plc_coil_yn == '0'){ stat_gbn = 1;}else{sprintf(logfp, "coil sensor error line[%d]", __line__);log_print(appname, 'i', "deque", logfp);sprintf(logfp, "crane coil sensing information error");trkmsg(gm-》basic.set_cr[crid].cr_nm, logfp, jpasspnt, 238);vasmsgdbupdate( jpasspnt, 1, 1, gm-》basic.set_cr[crid].cr_nm, vas_dong, 8965 );return;}re_pass = jpasspnt();
if(re_pass《 0){sprintf(logfp, "jpasspnt address error return line[%d]", __line__);_log_print(appname, 'i', "deque", logfp);return;步骤f、天车系统根据ai系统输出的信号来确定下一步动作,是保持静止还是继续执行。
[0024]
主要代码如下:if job_sch_db.bautomode thenif ( job_sch_db.wlocusstatus = 2 or job_sch_db.wlocusstatus = 3 or job_sch_db.wlocusstatus = 4 ) and("gisangguk_comm_error" or "gisangguk_comm_error2" or ("tl_anticol_left_warn" and "tl_ctrl_db".bleftdir) or("tl_anticol_right_warn" and "tl_ctrl_db".brightdir) or "crane_locked" ) thenwork_msg.opcommand := 3;if "crane_locked" thenjob_sch_db.wpausecausecode := 2;elsif ("tl_anticol_left_warn" and "tl_ctrl_db".bleftdir) or ("tl_anticol_right_warn" and "tl_ctrl_db".brightdir) thenjob_sch_db.wpausecausecode := 4;elsif "gisangguk_comm_error" or "gisangguk_comm_error2" thenjob_sch_db.wpausecausecode := 5;elsejob_sch_db.wpausecausecode := 0;end_if;end_if;if ("job_sch_db".wselflocus = 2 or "job_sch_db".wselflocus = 3 or "job_sch_db".wselflocus = 4 ) and ("gc104".conv_job = 1 or "gc104".conv_job = 3) and"work_msg".opcommand《》 1 and "work_msg".opcommand《》 5 and "job_sch_db".bpausecmd = false and "job_sch_db".bemgstopcmd = false and((abs(tl_ctrl_db.dcurpos
ꢀ‑ꢀ
"gc104".cr_up_dx) 《 100 and abs(ts_ctrl_db.dcurpos
ꢀ‑ꢀ
"gc104".cr_up_dy) 《 100) or(abs(tl_ctrl_db.dcurpos
ꢀ‑ꢀ
"gc104".cr_up_dx) 《 "tl_set_db".w3axisdndistpickup and abs(ts_ctrl_db.dcurpos
ꢀ‑ꢀ
"gc104".cr_up_dy) 《 "ts_set_db".w3axisdndistpickup and hs_ctrl_db.dcurpos《 4500)) then"work_msg".opcommand := 3;"job_sch_db".bconvlockpause := true;
job_sch_db.wpausecausecode := 3;elsif ("job_sch_db".wselflocus = 12 or "job_sch_db".wselflocus = 13 or "job_sch_db".wselflocus = 14 ) and ("gc104".conv_job = 2 or "gc104".conv_job = 3 ) and"work_msg".opcommand《》 1 and "work_msg".opcommand《》 5 and "job_sch_db".bpausecmd = false and "job_sch_db".bemgstopcmd = false and((abs(tl_ctrl_db.dcurpos
ꢀ‑ꢀ
"gc104".cr_dn_dx) 《 100 and abs(ts_ctrl_db.dcurpos
ꢀ‑ꢀ
"gc104".cr_dn_dy) 《 100) or(abs(tl_ctrl_db.dcurpos
ꢀ‑ꢀ
"gc104".cr_dn_dx) 《 "tl_set_db".w3axisdndistplace and abs(ts_ctrl_db.dcurpos
ꢀ‑ꢀ
"gc104".cr_dn_dy) 《 "ts_set_db".w3axisdndistplace and hs_ctrl_db.dcurpos《 4500)) then"work_msg".opcommand := 3; "job_sch_db".bconvlockpause := true;job_sch_db.wpausecausecode := 3;end_if;if "job_sch_db".wopcommand = 3 thenif "tl_ctrl_db".wpointqty》 1 thenif ("tl_ctrl_db".dpasspoint[0] 《 "tl_ctrl_db".dpasspoint[1]) (("tl_ctrl_db".dpasspoint["job_sch_db".wjobseqno] + 100 ) 《 "tl_ctrl_db".dcurpos) thenfor i := 0 to 4
ꢀꢀꢀꢀ
do"work_msg_temp".up_point_dx[i] := 0;"work_msg_temp".up_point_dy[i] := 0;"work_msg_temp".dn_point_dx[i] := 0;"work_msg_temp".dn_point_dy[i] := 0;end_for;"job_sch_db".wjobseqno := "job_sch_db".wjobseqno + 1 ;if lf_ctrl_db.bloading = false thenif work_msg.up_point_qty《》 0 thenfor i := 0 to
ꢀꢀ
( work_msg.up_point_qty
ꢀ‑ꢀ
job_sch_db.wjobseqno
ꢀꢀꢀꢀ
do "work_msg_temp".up_point_dx[i] :="work_msg".up_point_dx[i+job_sch_db.wjobseqno];"work_msg_temp".up_point_dy[i] :="work_msg".up_point_dy[i+job_sch_db.wjobseqno];end_for;up_point_qty := 0;for i := 0 to 4 do"work_msg".up_point_dx[i] := "work_msg_temp".up_point_dx[i];"work_msg".up_point_dy[i] := "work_msg_temp".up_point_dy[i];
if "work_msg_temp".up_point_dx[i] 《》 0 thenup_point_qty := up_point_qty + 1; end_if;end_for;"work_msg".up_point_qty := up_point_qty;end_if;elseif work_msg.dn_point_qty《》 0 thenfor i := 0 to
ꢀꢀ
( work_msg.dn_point_qty
ꢀ‑ꢀ
1 )
ꢀ‑ꢀ
job_sch_db.wjobseqno
ꢀꢀꢀꢀ
do "work_msg_temp".dn_point_dx[i] := "work_msg".dn_point_dx[i+job_sch_db.wjobseqno];
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"work_msg_temp".dn_point_dy[i] :=
ꢀꢀꢀ
"work_msg".dn_point_dy[i+job_sch_db.wjobseqno];end_for;dn_point_qty := 0;for i := 0 to 4 do "work_msg".dn_point_dx[i] := "work_msg_temp".dn_point_dx[i];"work_msg".dn_point_dy[i] := "work_msg_temp".dn_point_dy[i];if "work_msg_temp".dn_point_dx[i] 《》 0 thendn_point_qty := dn_point_qty + 1;end_if;end_for; "work_msg".dn_point_qty := dn_point_qty;end_if;end_if;if lf_ctrl_db.bloading = false thens_insert_work (bflag := false);elses_insert_work (bflag := true);end_if。
技术特征:1.一种无人天车作业区域人员检测方法,其特征在于包含以下步骤:在厂区及无人天车下方加装摄像头,实时获取作业区域监控视频信息,使用卷积神经网络直接预测不同目标的类别与位置,当天车需要经过某作业区域时,向方法发送检测信号,方法通过人体检测算法判断是否有人员停留在该作业区域,如果作业区域有人员停留,及时为天车提供预警,避免发生人车碰撞事故。2.根据权利要求1所述的一种无人天车作业区域人员检测方法,其特征在于:具体步骤如下:步骤a、在图像输入后,采用基于非线性降维的图像识别技术,对图像进行处理;步骤b、利用darknet特征提取网络对图像进行特征提取;应用darknet框架,darknet是一个深度学习框架,把基础文件部署在src文件夹,把检测和分类函数部署在example文件夹,直接对源代码进行查看和修改, darknet框架部署到机器本地根据机器情况,使用cpu和gpu进行检测识别任务的本地端部署;步骤c、对特征进行多次下采样并加入残差结构,保障在网络结构很深的情况下仍能收敛;应用tensorrt模块,在部署推理模型时,gpu启动不同的cuda核心对每个层都进行运算,tensorrt通过对层间的纵向合并,减少层数,占用少量cuda核心来完成相同的运算,大幅提高计算效率,节省计算时间,及时做出响应;步骤d、根据任务的需求,输出不同尺度的特征图,每个特征图对应3种锚框,用作预测不同大小的目标;训练工作在高性能gpu或多cpu服务器上进行,完成设定目标后将模型部署到含有边缘计算能力的摄像头上投入实际使用,完成实现摄像头数据采集->人员检测->发出报警的检测流程,进行难例数据的采集和上传,当采集到一定数据量时,由操作人员自行决定是否进行模型更新,模型迭代训练及评估等由服务器提供服务,待服务器训练完毕后通过无线网络连接摄像头进行模型迭代升级,保证检测模型的持续优化,为安全作业保驾护航;步骤e、进行结果预测,采用多个独立的逻辑分类器来计算属于特定标签的可能性,得出结论天车下方是否有作业人员;步骤f、天车系统根据ai系统输出的信号来确定下一步动作,是保持静止还是继续执行。3.根据权利要求2所述的一种无人天车作业区域人员检测方法,其特征在于:使用二元交叉熵损失函数进行计算,交叉熵损失函数是分类目标函数,二元交叉熵损失函数的大间隔损失函数和中心损失函数从增大类间距离、减小类内距离的角度不仅提高了分类准确性,而且还提高了特征的分辨能力,二元交叉熵损失函数的坡道损失函数处理分类问题目,提高了系统的抗噪特性。
技术总结本发明涉及一种无人天车作业区域人员检测方法,属于冶金自动化生产方法技术领域。本发明的技术方案是:在厂区及无人天车下方加装摄像头,实时获取作业区域监控视频信息,使用卷积神经网络直接预测不同目标的类别与位置,当天车需要经过某作业区域时,向方法发送检测信号,方法通过人体检测算法判断是否有人员停留在该作业区域,如果作业区域有人员停留,及时为天车提供预警,避免发生人车碰撞事故。本发明的有益效果是:通过在厂区及无人天车下方加装摄像头,利用摄像头实时捕获的视频流进行若干安全状态的判定,避免发生人车碰撞事故,实现全方位的智能安防监控,保障厂区作业安全。全。全。
技术研发人员:张科科 王映红 李明宇 侯利 孙博 盛琪 李福印 朱立新 周杨
受保护的技术使用者:河钢乐亭钢铁有限公司 河钢股份有限公司唐山分公司
技术研发日:2022.09.02
技术公布日:2023/1/6