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

购物网站类型宁波seo关键词优化教程

购物网站类型,宁波seo关键词优化教程,网站备案每年一次,网站搜索引擎优化报告本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——13使用Resnet-Bin ​ 根据前面的内容,目前已经可以获取到resnet的bin模型 1 .Resnet的bin测试 ​ 这里给大家一个测试视频里面黑线的demo,大家可以用来测试自己的黑线识别精度 …

本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——13使用Resnet-Bin

​ 根据前面的内容,目前已经可以获取到resnet的bin模型

1 .Resnet的bin测试

​ 这里给大家一个测试视频里面黑线的demo,大家可以用来测试自己的黑线识别精度

import cv2
import numpy as np
from hobot_dnn import pyeasy_dnn as dnndef 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(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]# 将比例坐标转换为原始视频帧的像素坐标x_pixel = int(x_ratio * original_width)y_pixel = int(y_ratio * original_height)return x_pixel, y_pixeldef main():models = dnn.load('/root/model/resnet18_224x224_nv12.bin')cap = cv2.VideoCapture("/root/model/03.avi")# 确定视频编解码器和创建VideoWriter对象fourcc = cv2.VideoWriter_fourcc(*'XVID')out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))while cap.isOpened():ret, frame = cap.read()if not ret:breakx, y = process_frame(frame, models,640,480)cv2.circle(frame, (x, y), radius=5, color=(0, 0, 255), thickness=-1)# 写入帧到输出文件out.write(frame)# cv2.imshow('Frame', frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()out.release()  # 释放VideoWriter对象cv2.destroyAllWindows()if __name__ == "__main__":main()

2.Resnet的bin使用

​ 如果按照前文的Resnet训练转化过程,这里唯一需要注意的就是加载时候,对于图片大小的244控制以及对于输出反归一化,

​ 下面把代码给大家大家有需要可以使用

#!/usr/bin/env python3
# -*- coding: utf-8 -*-import rclpy
from rclpy.node import Node
from geometry_msgs.msg import Twist
from sensor_msgs.msg import Image
import cv2
import numpy as np
from hobot_dnn import pyeasy_dnn as dnn
def convert_bgr_to_nv12(cv_image):# 首先将BGR图像转换为YUV格式yuv_image = cv2.cvtColor(cv_image, cv2.COLOR_BGR2YUV)# 提取Y通道y_channel = yuv_image[:, :, 0]# 对U和V通道进行下采样u_channel = yuv_image[::2, ::2, 1]v_channel = yuv_image[::2, ::2, 2]# 交错U和V通道以形成UV通道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_channel# 将Y通道和UV通道合并为NV12格式nv12_image = np.concatenate((y_channel.flatten(), uv_channel.flatten()))return nv12_image
class ResNetControlNode(Node):def __init__(self, name):super().__init__(name)self.cmd_vel_pub = self.create_publisher(Twist, "/cmd_vel", 10)self.subscription = self.create_subscription(Image, "/image", self.image_callback, 10)self.models = dnn.load('/root/model/resnet18_224x224_nv12.bin')# 微调PID参数self.Kp = 0.8  # 提高比例系数以增加对偏差的反应速度self.Kd = 0.5  # 减少微分系数以避免过冲self.Ki = 0.1  # 引入积分系数以帮助消除稳态误差(如果之前未使用)self.Target_value = 320.0self.last_Err = 0.0self.total_Err = 0.0self.output = 0.0self.twist = Twist()def image_callback(self, msg):# 使用CvBridge将ROS图像消息转换为OpenCV图像np_arr = np.frombuffer(msg.data, np.uint8)# 使用OpenCV解码MJPG数据image_np = cv2.imdecode(np_arr, cv2.IMREAD_COLOR)# 假设模型需要224x224大小的图像cv_image_resized = cv2.resize(image_np, (224, 224), interpolation=cv2.INTER_LINEAR)nv12_image = convert_bgr_to_nv12(cv_image_resized)# 转换图像格式以符合模型输入要求(如果需要)# 模型推理outputs = self.models[0].forward(np.frombuffer(nv12_image, dtype=np.uint8))outputs = outputs[0].bufferx, y = int(640 * outputs[0][0][0][0]), int(480 * outputs[0][1][0][0])# print(x,y)# PID控制逻辑self.Error = self.Target_value - xself.total_Err += self.Errorself.output = self.Kp * self.Error + self.Kd * (self.Error - self.last_Err)self.last_Err = self.Errorself.twist.linear.x = 0.4self.twist.angular.z = self.output / 100self.cmd_vel_pub.publish(self.twist)print(f"( {x}, {y} )  output = {int(self.output)}")def main(args=None):rclpy.init(args=args)node = ResNetControlNode("resnet_control_node")rclpy.spin(node)node.destroy_node()rclpy.shutdown()if __name__ == "__main__":main()

3.总结

​ 到目前为止整个智能车地平线组的单个拆分任务已经结束了,下面就是编写总控制进行逻辑的判断了

​ 下一节给大家分享一下,我再摸索过程中看到大佬的以及交流得到的思路。

http://www.yayakq.cn/news/953300/

相关文章:

  • 微信公众号做网站如何做网站给女朋友
  • 做网站免责声明云匠网接单能信吗
  • 门户网站采用较多的模式是免费的网站有哪些
  • 网站百度推广怎么做的医院网站建设网站
  • 哪个网站有介绍拿到家做的手工活个人网站主页设计教程
  • 外国工业设计网站网络营销的功能
  • 怎么实现网站建设报价方案制作招聘海报的app
  • app网站开发的特点深圳 网站设计公司排名
  • 网站中图片加水印市场推广方案和思路
  • wordpress如何设置用户浏览权限如何做网站优化并快速提高权重
  • 文创设计网站网站建设系统设计
  • 建设工程施工安全网站深圳网站设计多少钱
  • 建立网站的详细步骤图解耳机 东莞网站建设
  • 网站增加关键字网站建设中应注意的问题
  • 建站之星管理中心上海公司名字大全
  • asp.net做电商网站哪里做网站比较稳定
  • 移动网站的开发流程超详细的wordpress主题
  • 网站开发流程aspwordpress不同背景
  • 杭州房产网官网企业网站优化工具
  • 怎么做快三一模一样的网站个人做公司网站
  • 盐城网站建设推广代码优化
  • 网站备案 接入商备案搜索引擎优化排名关键字广告
  • 这样做网站三丰云怎么做网站
  • 郑州区块链数字钱包网站开发方案外贸是做什么的 怎么做
  • 有什么彩票网站做代理好点html代码自动生成
  • 建设网站需要租赁主机吗wordpress 3.1 下载
  • 网站做端口映射济南经三路专业做网站
  • 上海品质网站建设北仑做网站
  • 绿植租摆网站建设国际市场营销案例100例
  • 如何做网盟推广网站建设工程合同司法解释