会员登录 - 用户注册 - 设为首页 - 加入收藏 - 网站地图 根据RK3576开发板的安全帽检测算法!

根据RK3576开发板的安全帽检测算法

时间:2025-05-21 06:16:59 来源:锐评时讯 作者:女性 阅读:622次

1. 安全帽检测简介。

安全帽佩带检测是工地、出产安全、安防的重中之重,但人为片面检测的方法时效性差且不能全程监控。AI技能。的日渐老练催生了安全帽佩带检测计划,成为了监督佩带安全帽的利器。本安全帽检测。算法。是一种根据。深度学习。的对人进行检测定位的方针检测,能有效用于产品落地。

本安全帽检测算法在数据集体现如下所示:

安全帽检测算法。mAP0.5。
HELMET。0.93。

根据EASY-E。AI。-Orin-nano硬件主板的运转功率:

算法品种。运转功率。
helmet_detect。57ms。

2. 快速上手。

假如您。初度阅览此文档。,请阅览:《入门攻略/源码办理及。编程。介绍/源码工程办理》,按需办理自己工程源码(注:此文档必看,并主张选用。【长途挂载办理】。方法,不然有代码丢掉危险!!!)。

2.1 开源码工程下载。

先在PC虚拟机定位到nfs服务目录,再在目录中创立寄存源码库房的办理目录:

cd ~/nfsrootmkdir GitHubcd GitHub。

再经过git东西,在办理目录内克隆长途库房(需求设备能对外网进行拜访)。

git clone https://github.com/EASY-EAI/EASY-EAI-Toolkit-3576.git。

注:

* 此处可能会因网络原因形成卡顿,请耐性等候。

* 假如真实要在gitHub网页上下载,也要把整个库房下载下来,不能独自下载本实例对应的目录。

2.2 开发环境建立。

经过。ad。b shell进入板卡开发环境,如下图所示。

经过以下指令,把nfs目录挂载上nfs服务器。

mount -t nfs -o nolock。 < nfs server ip >:。< nfs path in server >/home/orin-nano/Desktop/nfs/。

2.3 例程编译。

然后定位到板卡的nfs的挂载目录(依照实践挂载目录),进入到对应的例程目录履行编译操作,详细指令如下所示:

cd EASY-EAI-Toolkit-3576/Demos/algorithm-helmet/./build.sh。

2.4 模型布置。

要完结算法Demo的履行,需求先下载安全帽检测算法模型。

百度网盘链接为:https://pan.baidu.com/s/1VQGznN3Htq_F_bUn3KAWYQ?pwd=1234 (提取码:1234 )。

一起需求把下载的安全帽检测算法模型复制粘贴到Release/目录:

2.5 例程运转及作用。

进入开发板Release目录,履行下方指令,运转示例程序:

cd Release/./。te。st-helmet_detect helmet_detect.model test.jpg。

运转例程指令如下所示:

成果图片如下所示:

A。PI。的详细阐明,以及API的调用(本例程源码),详细信息见下方阐明。

3. 安全帽检测API阐明。

3.1 引证方法。

为便利客户在本地工程中直接调用咱们的EASY EAI api库,此处列出工程中需求链接的库以及头文件等,便利用户直接增加。

选项。描绘。
头文件目录。easyeai-api/algorithm/helmet_detect。
库文件目录。easyeai-api/algorithm/helmet_detect。
库链接参数。-lhelmet_detect。

3.2 安全帽检测初始化函数。

安全帽检测初始化函数原型如下所示。

int helmet_detect_init(rknn_context *ctx, const char * path)。

详细介绍如下所示。

函数名: helmet_detect_init()。
头文件。helmet_detect.h。
输入参数。ctx:rknn_context句柄。
输入参数。path:算法模型的途径。
回来值。成功回来:0。
失利回来:-1。
注意事项。无。

3.3 安全帽检测运转函数。

安全帽检测运转函数helmet_detect_run原型如下所示。

int helmet_detect_run(rknn_context ctx, cv::Mat input_image, detect_result_group_t *detect_result_group)。

详细介绍如下所示。

函数名:helmet_detect_run()。
头文件。helmet_detect.h。
输入参数。ctx: rknn_context句柄。
输入参数。input_image:图画数据输入(cv::Mat是Opencv的类型)。
输出参数。output_dets:方针检测框输出。
回来值。成功回来:0。
失利回来:-1。
注意事项。无。

3.4 安全帽检测开释函数。

安全帽检测开释函数原型如下所示。

int helmet_detect_release(rknn_context ctx)。

详细介绍如下所示。

函数名:helmet_detect_release ()。
头文件。helmet_detect.h。
输入参数。ctx: rknn_context句柄。
回来值。成功回来:0。
失利回来:-1。
注意事项。无。

4. 安全帽检测算法例程。

例程目录为Demos/algorithm-helmet/test-helmet_detect.cpp,操作流程如下。

参阅例程如下所示。

#include。 < opencv2/opencv.hpp >#include。 < stdio.h >#include。 < sys/time.h >#include"helmet_detect.h"using namesp。ac。e cv;using namespace std;static Scalar co。lorA。rray[10]={    Scalar(255, 0, 0, 255),    Scalar(0, 255, 0, 255),    Scalar(0,0,139,255),    Scalar(0,100,0,255),    Scalar(139,139,0,255),    Scalar(209,206,0,255),    Scalar(0,127,255,255),    Scalar(139,61,72,255),    Scalar(0,255,0,255),    Scalar(255,0,0,255),};int plot_one_box(Mat src, int x1, int x2, int y1, int y2, char *label, char colour){    int tl = round(0.002 * (src.rows + src.cols) / 2) + 1;    rectangle(src, cv::Point(x1, y1), cv::Point(x2, y2), colorArray[(unsigned char)colour], 3);    int。 tf。= max(tl -1, 1);    int base_line = 0;    cv::Size t_size = getTextSize(label, FONT_HE。RS。HEY_。SIM。PLEX, (float)tl/3, tf, &base_line);    int x3 = x1 + t_size.width;    int y3 = y1 - t_size.height - 3;    rectangle(src, cv::Point(x1, y1), cv::Point(x3, y3), colorArray[(unsigned char)colour], -1);    putText(src, label, cv::Point(x1, y1 - 2), FONT_HERSHEY_SIMPLEX, (float)tl/3, cv::Scalar(255, 255, 255, 255), tf, 8);    return 0;}int main(int argc, char **argv){	if (argc != 3)    {        printf("%s。 < model_path >< image_path >n", argv[0]);        return -1;    }    const char *model_path = argv[1];    const char *image_path = argv[2];	/* 参数初始化 */	detect_result_group_t detect_result_group;	/* 算法模型初始化 */	rknn_context ctx;	helmet_detect_init(&ctx, model_path);	/* 算法运转 */	cv::Mat src;	src = cv::imread(image_path, 1);	struct。 ti。meval start;	struct timeval end;	float time_use=0;	gettimeofday(&start,NULL); 	helmet_detect_run(ctx, src, &detect_result_group);	gettimeofday(&end,NULL);	time_use=(end.tv_sec-start.tv_sec)*1000000+(end.tv_usec-start.tv_usec);//微秒	printf("time_use is %fn",time_use/1000);	/* 算法成果在图画中画出并保存 */	// Draw Objects	char text[256];	for (int i = 0; i。 < detect_result_group.count; i++) 	{		detect_result_t* det_result = &(detect_result_group.results[i]);		if( det_result- >prop。 < 0.4)		{			continue;		}		sprintf(text, "%s %.1f%%", det_result- >name, det_result->prop * 100);		printf("%s  (%d %d %d %d) %fn", det_result->name, det_result->box.left, det_result->box.top,			   det_result->box.right, det_result->box.bottom, det_result->prop);		int x1 = det_result->box.left;		int y1 = det_result->box.top;		int x2 = det_result->box.right;		int y2 = det_result->box.bottom;		/*		rectangle(src, cv::Point(x1, y1), cv::Point(x2, y2), cv::Scalar(255, 0, 0, 255), 3);		putText(src, text, cv::Point(x1, y1 + 12), cv::FONT_HERSHEY_SIMPLEX, 0.5, cv::Scalar(0, 0, 0));		*/		plot_one_box(src, x1, x2, y1, y2, text, i%10);	} 	cv::imwrite("result.jpg", src);		/* 算法模型空间开释 */	helmet_detect_release(ctx);	return 0;}。


审阅修改 黄宇。

内容来源:https://hoangkimngan.com/app-1/mobat mb,http://chatbotjud.saude.mg.gov.br/app-1/criar-jogos

(责任编辑:人文)

    系统发生错误

    系统发生错误

    您可以选择 [ 重试 ] [ 返回 ] 或者 [ 回到首页 ]

    [ 错误信息 ]

    页面发生异常错误,系统设置开启调试模式后,刷新本页查看具体错误!