大数跨境

高端复杂场景和快速应用要求下的嵌入式视觉检测及嵌入式视觉识别

高端复杂场景和快速应用要求下的嵌入式视觉检测及嵌入式视觉识别 锐英源软件
2026-08-19
2
导读:锐英源软件针对嵌入式视觉检测和嵌入式视觉识别,有两套体系。一套是高端体系,整合郑州大学的技术实力从事复杂场景下的平台开发。另外一套是普通场景的快速应用开发,使用LuckFox平台,LuckFox Pi
嵌入式视觉检测和嵌入式视觉识别

嵌入式视觉检测和嵌入式视觉识别技术运行在嵌入式操作系统下,在数据现场以极小的空间代价支持视觉识别。嵌入式操作系统有Linux、鸿蒙和安卓等等,手机平台也可以应用于嵌入式环境下,一般是特制功能手机,不是大众用的功能全价格贵手机。

随着现在台式机的微型化,嵌入式环境的定义逐渐模糊,像全新Mac mini的尺寸仅为12.7厘米见方,在某些现场环境里,完全可以代替自研板卡嵌入系统和软件的平台。

大部分嵌入式平台有成本的要求,一般的嵌入式板卡常见是几百元的,有的甚至几十元,虽然小且便宜,但是功能齐全,能满足应用开发。

锐英源软件针对嵌入式视觉检测和嵌入式视觉识别,有两套体系。一套是高端体系,整合郑州大学的技术实力从事复杂场景下的平台开发。另外一套是普通场景的快速应用开发,使用LuckFox平台,LuckFox Pico Max是基于瑞芯微 RV1106 G3芯片。LuckFox Pico Pro 是基于瑞芯微 RV1106 G2芯片。左图就是LuckFox平台RV1106板卡。

郑州大学的技术实力

现在国家对于大学技术实现先免费使用一年,后续年份再付费政策,因为锐英源软件在郑州大学校区内办公,以前在郑州威科姆公司工作时委派参加郑州大学产学研交流会,所以有过多次实质交流。郑州大学擅长基础平台研发,锐英源软件擅长整合技术进行产品化,这里列举郑州大学相关的技术优势点,如果各位朋友觉得在行业内解决问题有对接可能性,欢迎洽谈。

在华为ICT比赛上获奖,获奖项目综合运用华为昇思MindSpore、CANN、鸿蒙等技术开发,聚焦国产算力工程化能力,在昇腾+鲲鹏平台积累了一定经验。

郑州大学团队创新性地提出了基于实例特征缓存的CD-FSOD方法(IFC),该方法通过构建目标域实例的动态特征缓存库及其检索更新机制,有效克服了跨域差异带来的知识迁移障碍,在三个高挑战性测试集上均以显著优势夺得闭源赛道第一名,超越了众多国际顶尖参赛队伍。

在由华为技术有限公司举办的2022昇腾AI创新大赛河南赛区决赛中,该团队参赛项目“嵩山·慧目”汽车零部件质检大模型脱颖而出摘取金奖。10月,该项目又经过激烈角逐,从全国16个赛区中推荐的众多优秀项目中胜出,成功晋级2022昇腾AI创新大赛应用赛道全国总决赛,争夺百万奖金池。

LuckFox平台应用开发

LuckFox平台非常成熟,应用开发方便,可以使用C++语言开发,锐英源软件专注C++开发20多年,对于各类平台下的C++开发产品化能力有独到之处。

LuckFox Pico Max是基于瑞芯微 RV1106 G3芯片。LuckFox Pico Pro 是基于瑞芯微 RV1106 G2芯片。

RV1106 是一款专门用于人工智能相关应用的高度集成 IPC 视觉处理器 SoC。它基于单核 ARM Cortex-A7 32 位内核,集成了 NEON 和 FPU,并内置 NPU 支持 INT4 / INT8 / INT16 混合运算,计算能力高达 0.5TOPs。

此外,它采用了全新的基于硬件的 ISP,支持多种算法加速器,如 HDR、3A、LSC、3DNR、2DNR、锐化、去雾、伽马校正等。同时,它还具有内置的16位DRAM DDR3L,可维持要求苛刻的内存带宽,以及内置的 POR,RTC,音频编解码器和 MAC PHY。

开发板支持多个接口,包括 GPIO、UART、SPI、I2C、USB 等,方便开发者进行快速开发和调试。值得注意的是,Luckfox Pico 全系列开发板支持 buildroot 和 Ubuntu22.04系统,让开发者根据项目需求选择合适的系统,更灵活满足特定应用要求。

LuckFox平台应用开发主要步骤:。

· 硬件准备。

· 操作系统准备。

· 模拟开发环境准备。

· 开发编写代码,模拟测试通过。

· 应用编译和嵌入式环境部署。

· 现场联调。

LuckFox平台应用开发C++代码重点介绍,下载代码后,看到各类Demo应用的main函数,里面的代码,比如和AI大模型相关的调用,如下代码:

			cv::Mat letterboxImage = letterbox(frame);	 			memcpy(rknn_app_ctx.input_mems[0]->virt_addr, letterboxImage.data, model_width*model_height*3);		 			inference_yolov5_model(&rknn_app_ctx, &od_results);  			for(int i = 0; i < od_results.count; i++) 			{					 				if(od_results.count >= 1) 				{ 					object_detect_result *det_result = &(od_results.results[i]); 	 					sX = (int)(det_result->box.left   );	 					sY = (int)(det_result->box.top 	  );	 					eX = (int)(det_result->box.right  );	 					eY = (int)(det_result->box.bottom ); 					mapCoordinates(&sX,&sY); 					mapCoordinates(&eX,&eY); 					 					printf("%s @ (%d %d %d %d) %.3f\n", coco_cls_to_name(det_result->cls_id), 							 sX, sY, eX, eY, det_result->prop);  					cv::rectangle(frame,cv::Point(sX ,sY), 								        cv::Point(eX ,eY), 										cv::Scalar(0,255,0),3); 					sprintf(text, "%s %.1f%%", coco_cls_to_name(det_result->cls_id), det_result->prop * 100); 					cv::putText(frame,text,cv::Point(sX, sY - 8), 										   cv::FONT_HERSHEY_SIMPLEX,1, 										   cv::Scalar(0,255,0),2); 				} 			}

model是调用大模型的通用方法,od_results.results里是识别结果,cv::rectangle是绘制矩形,cv::putText是绘制文本。先对基本原理代码理解,再进行后续应用开发。


【声明】内容源于网络
0
0
锐英源软件
1234
内容 43
粉丝 0
锐英源软件 1234
总阅读32
粉丝0
内容43