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

免费的站外推广2021年室内设计公司全国排名百强

免费的站外推广,2021年室内设计公司全国排名百强,html5手机网站开发,网站正在建设中 html源码目录 一、关键点预测 二、图像预处理 二、推理 三、后处理与可视化 3.1、后处理 3.2、特征点可视化 四、完整pytorch代码 yolov8-pose tensorrt 一、关键点预测 注#xff1a;本篇只是阐述推理流程#xff0c;tensorrt实现后续跟进。 yolov8-pose的tensorrt部署代码…目录 一、关键点预测 二、图像预处理 二、推理 三、后处理与可视化 3.1、后处理 3.2、特征点可视化 四、完整pytorch代码 yolov8-pose tensorrt 一、关键点预测 注本篇只是阐述推理流程tensorrt实现后续跟进。 yolov8-pose的tensorrt部署代码稍后更新还是在仓库GitHub - FeiYull/TensorRT-Alpha: TensorRT-Alpha supports YOLOv8、YOLOv7、YOLOv6、YOLOv5、YOLOv4、v3、YOLOX、YOLOR...CUDA IS ALL YOU NEED.It also supports end2end CUDA C acceleration and multi-batch inference. 也可以关注TensorRT系列教程-CSDN博客 以下是官方预测代码 from ultralytics import YOLO model YOLO(modelyolov8n-pose.pt) model.predict(sourced:/Data/1.jpg, saveTrue) 推理过程无非是图像预处理 - 推理 - 后处理 可视化这三个关键步骤在文件大概247行D:\CodePython\ultralytics\ultralytics\engine\predictor.py代码如下 # Preprocess with profilers[0]:im self.preprocess(im0s) # 图像预处理# Inference with profilers[1]:preds self.inference(im, *args, **kwargs) # 推理# Postprocess with profilers[2]:self.results self.postprocess(preds, im, im0s) # 后处理 二、图像预处理 通过debug进入上述self.preprocess函数看到代码实现如下。处理流程大概是padding满足矩形推理图像通道转换即BGR装RGB检查图像数据是否连续存储顺序有HWC转为CHW然后归一化。需要注意原始pytorch框架图像预处理的时候会将图像缩放padding为HxW的图像其中H、W为32倍数而导出tensorrt的时候为了高效推理H、W 固定为640x640。 def preprocess(self, im):Prepares input image before inference.Args:im (torch.Tensor | List(np.ndarray)): BCHW for tensor, [(HWC) x B] for list.not_tensor not isinstance(im, torch.Tensor)if not_tensor:im np.stack(self.pre_transform(im))im im[..., ::-1].transpose((0, 3, 1, 2)) # BGR to RGB, BHWC to BCHW, (n, 3, h, w)im np.ascontiguousarray(im) # contiguousim torch.from_numpy(im)img im.to(self.device)img img.half() if self.model.fp16 else img.float() # uint8 to fp16/32if not_tensor:img / 255 # 0 - 255 to 0.0 - 1.0return img 二、推理 图像预处理之后直接推理就行了这里是基于pytorch推理。 def inference(self, im, *args, **kwargs):visualize increment_path(self.save_dir / Path(self.batch[0][0]).stem,mkdirTrue) if self.args.visualize and (not self.source_type.tensor) else Falsereturn self.model(im, augmentself.args.augment, visualizevisualize) 三、后处理与可视化 3.1、后处理 网络推理输出特征图维度为56x8400其中 8400表示候选目标数量56  xywhc points * 17points的长度为3分别为xyc即特征点的坐标和置信度 尽管推理输出特征图中每一行既有bbox还有keypoints但是NMS的时候依然只作用于bbox下面代码作了NMS之后将筛选之后的目标中bbox、keypoints进行坐标值缩放缩放到原图尺寸坐标系。 def postprocess(self, preds, img, orig_imgs):Return detection results for a given input image or list of images.preds ops.non_max_suppression(preds,self.args.conf,self.args.iou,agnosticself.args.agnostic_nms,max_detself.args.max_det,classesself.args.classes,nclen(self.model.names))results []for i, pred in enumerate(preds):orig_img orig_imgs[i] if isinstance(orig_imgs, list) else orig_imgsshape orig_img.shapepred[:, :4] ops.scale_boxes(img.shape[2:], pred[:, :4], shape).round()pred_kpts pred[:, 6:].view(len(pred), *self.model.kpt_shape) if len(pred) else pred[:, 6:]pred_kpts ops.scale_coords(img.shape[2:], pred_kpts, shape)path self.batch[0]img_path path[i] if isinstance(path, list) else pathresults.append(Results(orig_imgorig_img,pathimg_path,namesself.model.names,boxespred[:, :6],keypointspred_kpts))return results 3.2、特征点可视化 bbox可视化没什么好说的说下17个特征点的可视化在文件D:\CodePython\ultralytics_fire_smoke\ultralytics\utils\plotting.py171行绘制特征点需要注意需要按照预定义的顺序绘制其中特征点置信度需要足够大。 def kpts(self, kpts, shape(640, 640), radius5, kpt_lineTrue):Plot keypoints on the image.Args:kpts (tensor): Predicted keypoints with shape [17, 3]. Each keypoint has (x, y, confidence).shape (tuple): Image shape as a tuple (h, w), where h is the height and w is the width.radius (int, optional): Radius of the drawn keypoints. Default is 5.kpt_line (bool, optional): If True, the function will draw lines connecting keypointsfor human pose. Default is True.Note: kpt_lineTrue currently only supports human pose plotting.if self.pil:# Convert to numpy firstself.im np.asarray(self.im).copy()nkpt, ndim kpts.shapeis_pose nkpt 17 and ndim 3kpt_line is_pose # kpt_lineTrue for now only supports human pose plotting# 绘制特征点for i, k in enumerate(kpts):color_k [int(x) for x in self.kpt_color[i]] if is_pose else colors(i)x_coord, y_coord k[0], k[1]if x_coord % shape[1] ! 0 and y_coord % shape[0] ! 0:if len(k) 3:conf k[2]if conf 0.5:continuecv2.circle(self.im, (int(x_coord), int(y_coord)), radius, color_k, -1, lineTypecv2.LINE_AA)# 绘制线段if kpt_line:ndim kpts.shape[-1]for i, sk in enumerate(self.skeleton):pos1 (int(kpts[(sk[0] - 1), 0]), int(kpts[(sk[0] - 1), 1]))pos2 (int(kpts[(sk[1] - 1), 0]), int(kpts[(sk[1] - 1), 1]))if ndim 3:conf1 kpts[(sk[0] - 1), 2]conf2 kpts[(sk[1] - 1), 2]if conf1 0.5 or conf2 0.5:continueif pos1[0] % shape[1] 0 or pos1[1] % shape[0] 0 or pos1[0] 0 or pos1[1] 0:continueif pos2[0] % shape[1] 0 or pos2[1] % shape[0] 0 or pos2[0] 0 or pos2[1] 0:continuecv2.line(self.im, pos1, pos2, [int(x) for x in self.limb_color[i]], thickness2, lineTypecv2.LINE_AA)if self.pil:# Convert im back to PIL and update drawself.fromarray(self.im) 这里给一张特征点顺序图 四、完整pytorch代码 将以上流程合并起来并加以修改完整代码如下 import torch import cv2 as cv import numpy as np from ultralytics.data.augment import LetterBox from ultralytics.utils import ops from ultralytics.engine.results import Results import copy# path d:/Data/1.jpg path d:/Data/6406402.jpg device cuda:0 conf 0.25 iou 0.7# preprocess im cv.imread(path) # letterbox im [im] orig_imgs copy.deepcopy(im) im [LetterBox([640, 640], autoTrue, stride32)(imagex) for x in im] im im[0][None] # im np.stack(im) im im[..., ::-1].transpose((0, 3, 1, 2)) # BGR to RGB, BHWC to BCHW, (n, 3, h, w) im np.ascontiguousarray(im) # contiguous im torch.from_numpy(im) img im.to(device) img img.float() img / 255 # load model pt ckpt torch.load(yolov8n-pose.pt, map_locationcpu) model ckpt[model].to(device).float() # FP32 model model.eval()# inference preds model(img) prediction ops.non_max_suppression(preds, conf, iou, agnosticFalse, max_det300, classesNone, nclen(model.names))results [] for i, pred in enumerate(prediction):orig_img orig_imgs[i] if isinstance(orig_imgs, list) else orig_imgsshape orig_img.shapepred[:, :4] ops.scale_boxes(img.shape[2:], pred[:, :4], shape).round()pred_kpts pred[:, 6:].view(len(pred), *model.kpt_shape) if len(pred) else pred[:, 6:]pred_kpts ops.scale_coords(img.shape[2:], pred_kpts, shape)img_path pathresults.append(Results(orig_imgorig_img,pathimg_path,namesmodel.names,boxespred[:, :6],keypointspred_kpts))# show plot_args {line_width: None,boxes: True,conf: True, labels: True} plot_args[im_gpu] img[0] result results[0] plotted_img result.plot(**plot_args) cv.imshow(plotted_img, plotted_img) cv.waitKey(0) cv.destroyAllWindows() print()
http://www.hkea.cn/news/14521813/

相关文章:

  • 网站源代码下载工具什么关键词可以搜到那种
  • 新网站建设的工作各大网站流量排名
  • 手机网站导航栏特效网站排名突然下降解决
  • 蜂蜜做的好网站或案例沈阳新民网站建设
  • 如何制作家具网站网站建设策划书 范文
  • 四川城乡建设网网站昆明优化广告公司
  • 建设网站的价格是多少钱郑州 发布会
  • 购物网站建设课程设计网站开发发送短信
  • 百度推广帮做网站建设厅网站174号文
  • 江苏省建设工人考勤网站在线qq登录无需下载
  • 平顶山北京网站建设自己怎么做网站购买空间
  • 电子商务网站的后台管理系统关键词排名优化公司成都
  • 上海网站建设规划嘉兴网站建设咨询
  • 福田做网站价格网站建设公司公司我我提供一个平台
  • 国际贸易网站有哪些美丽乡村 网站建设
  • 怎么使用wordpress建站wordpress做微信登录页面模板
  • 手机网站开发session邯山手机网站建设
  • 企业网站php模板eclipse怎么做网页
  • 网站建设网站软件有哪些方面设计师互联网
  • 网站设计项目海南网址
  • 动态asp.net网站开发植物染企业解决方案
  • 广州模板网站建设wordpress怎么加栏目
  • 保山市网站建设wordpress开发商
  • 别人恶意点击我们竞价网站中国建设银行舟山分行网站
  • 中企高呈网站建设报考项目经理证需要什么条件
  • 建材 网站 模板洛阳网站建设启辰网络
  • 平度网站建设ld4wordpress主题安装目录
  • 台州网站制作自己做烘焙的网站
  • 小学校园门户网站建设方案php网站开发平台
  • 减肥网站源码城乡建设杂志网站