当前位置: 首页 > news >正文

本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——8ResNet模型的使用

本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——8ResNet模型的使用

​ 上期我们已经完成了Bin模型的转化,本期是如何使用这个Bin模型

1.加载Bin模型

​ 使用dnn模块加载Bin模型

models = dnn.load('../models/resnet18_224x224_nv12.bin')

2.图像预处理

2.1 首先需要先获取图像

获取图像方式很多可以cv2读取,也可以订阅ros消息

这里我以ros消息进行示例

self.subscription = self.create_subscription(Image,'/image',self.image_callback,10)
self.subscription  # prevent unused variable warningdef image_callback(self,msg):# 将ROS的图像消息的字节数据转换为numpy数组np_arr = np.frombuffer(msg.data, dtype=np.uint8)# 使用OpenCV解码图像数据frame = cv2.imdecode(np_arr, cv2.IMREAD_COLOR)#经过上面操作已经可以变成opencv可以使用的类型了,这样就对接其他cv领域的操作

2.2模型输入

def convert_bgr_to_nv12(cv_image):yuv_image = cv2.cvtColor(cv_image, cv2.COLOR_BGR2YUV)y_channel = yuv_image[:, :, 0]u_channel = yuv_image[::2, ::2, 1]v_channel = yuv_image[::2, ::2, 2]uv_channel = np.empty((u_channel.shape[0], u_channel.shape[1] * 2), dtype=u_channel.dtype)uv_channel[:, ::2] = u_channeluv_channel[:, 1::2] = v_channelnv12_image = np.concatenate((y_channel.flatten(), uv_channel.flatten()))return nv12_imagedef process_frame(self,cv_image, models, original_width, original_height):# 将图像缩放到模型期望的尺寸cv_image_resized = cv2.resize(cv_image, (224, 224), 			interpolation=cv2.INTER_LINEAR)nv12_image = convert_bgr_to_nv12(cv_image_resized)# 使用模型进行推理outputs = models[0].forward(np.frombuffer(nv12_image, dtype=np.uint8))outputs = outputs[0].buffer# 假设模型输出是在224x224图像上的比例坐标x_ratio, y_ratio = outputs[0][0][0][0], outputs[0][1][0][0]# 将比例坐标转换为原始视频帧的像素坐标,注意跟你原始模型训练时候归一化有关#如果按照我的前面教程就是244*244的大小x_pixel = int(x_ratio * original_width)y_pixel = int(y_ratio * original_height)

2.3模型输出使用

经过2.2的使用,x_pixely_pixel 就是黑线的x与y坐标

大家可以自行采用各种方式进行运动控制

3.总结

对于一个新模型的使用,无非就是图像输入大小的匹配、图像格式,对于dnn模型,大家注意要nv12格式。下一期为大家带来二维码方面的操作。


http://www.mrgr.cn/news/63255.html

相关文章:

  • AI-基本概念-多层感知器模型/CNN/RNN/自注意力模型
  • 408——计算机网络(持续更新)
  • 时间序列分类任务---tsfresh库
  • react hook
  • 基于Multisim的单双声道音频功率放大电路设计与仿真
  • 《神经网络助力战场车辆及部件损毁识别与评估》
  • 力扣(leetcode)每日一题 3259 超级饮料的最大强化能量|动态规划
  • Python实现XGBoost-MLP分类模型项目实战
  • Python零基础 [2.5] 判断语句嵌套的详解与示例
  • 面试遇到的问题
  • 【笔记】KV-cache
  • 如何实现PLC系统时钟显示在HMI上?
  • 地下隧道、管廊非接触式二维位移监测裂纹、衬砌、支护结构损伤识别、隧道病害诊断等问题解决方式——变焦视觉位移监测仪
  • C++初阶(八)--初识模板
  • 制作一个简易恒流电子负载教程,实战教程,单片机程序,电路图,方案
  • 基于字符的图片验证码识别算法的设计与实现
  • springcloud通过MDC实现分布式链路追踪
  • 九识智能与徐工汽车达成战略合作,共绘商用车未来新蓝图
  • SAP ABAP开发学习——BADI增强操作步骤示例2
  • 在阿里云快速启动Umami玩转网页分析
  • 一位专科生面上网络安全的经验总结_网络安全专科
  • 视频批量裁剪工具
  • 探索智能投顾:正大金融数据分析如何优化市场策略
  • 【自动化测试】APP UI 自动化(安卓手机)-本地环境搭建
  • SSID,即Service Set Identifier(服务设置的表示符号)
  • CBAM填报攻略:关键点解析与实操案例分享