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

做网站的费用如何写分录易语言跳到指定网站怎么做

做网站的费用如何写分录,易语言跳到指定网站怎么做,应持续抓好二级网站的建设工作,做平面免费接单网站前言 tensorflow官方有个姿态估计项目#xff0c;这个输入和openpose还有点不一样#xff0c;这里写个单人情况下的模型输出解析方案。 国际惯例#xff0c;参考博客#xff1a; 博客: 使用 TensorFlow.js 在浏览器端上实现实时人体姿势检测 tensorflow中posnet的IOS代…前言 tensorflow官方有个姿态估计项目这个输入和openpose还有点不一样这里写个单人情况下的模型输出解析方案。 国际惯例参考博客 博客: 使用 TensorFlow.js 在浏览器端上实现实时人体姿势检测 tensorflow中posnet的IOS代码 解析 不要下载官方overview网址下的posenet模型multi_person_mobilenet_v1_075_float.tflite要去下载IOS端的posenet_mobilenet_v1_100_257x257_multi_kpt_stripped.tflite模型在github上一搜有一堆文末放网盘下载地址。 读取模型 先载入必要的工具包 import numpy as np import tensorflow as tf import cv2 as cv import matplotlib.pyplot as plt import time使用tflite载入模型文件 model tf.lite.Interpreter(posenet_mobilenet_v1_100_257x257_multi_kpt_stripped.tflite) model.allocate_tensors() input_details model.get_input_details() output_details model.get_output_details()看看输入输出分别是什么 print(input_details) print(output_details)[{name: sub_2, index: 93, shape: array([ 1, 257, 257, 3], dtypeint32), dtype: class numpy.float32, quantization: (0.0, 0)}] [{name: MobilenetV1/heatmap_2/BiasAdd, index: 87, shape: array([ 1, 9, 9, 17], dtypeint32), dtype: class numpy.float32, quantization: (0.0, 0)}, {name: MobilenetV1/offset_2/BiasAdd, index: 90, shape: array([ 1, 9, 9, 34], dtypeint32), dtype: class numpy.float32, quantization: (0.0, 0)}, {name: MobilenetV1/displacement_fwd_2/BiasAdd, index: 84, shape: array([ 1, 9, 9, 32], dtypeint32), dtype: class numpy.float32, quantization: (0.0, 0)}, {name: MobilenetV1/displacement_bwd_2/BiasAdd, index: 81, shape: array([ 1, 9, 9, 32], dtypeint32), dtype: class numpy.float32, quantization: (0.0, 0)}]很容易看出输入是(257,257)尺寸的彩色图像。 输出就比较麻烦了有两块(9,9,17)的称为heatmap的热度图(9,9,34)的称为offset的偏移图。其实想想也能知道热度图定位关节的大概位置用偏移图做进一步的矫正。接下来逐步分析怎么利用这两个输出将关节位置定位的。 输入图像推断 必须将图像resize一下再丢进去但是tensorflowjs里面说不用resize的方法我还没试过。 img cv.imread(../../photo/1.jpeg) input_img tf.reshape(tf.image.resize(img, [257,257]), [1,257,257,3]) floating_model input_details[0][dtype] np.float32 if floating_model:input_img (np.float32(input_img) - 127.5) / 127.5 model.set_tensor(input_details[0][index], input_img) start time.time() model.invoke() print(time:,time.time()-start) output_data model.get_tensor(output_details[0][index]) offset_data model.get_tensor(output_details[1][index]) heatmaps np.squeeze(output_data) offsets np.squeeze(offset_data) print(output shape: {}.format(output_data.shape))time: 0.12212681770324707 output shape: (1, 9, 9, 17)可视化变换后的图 show_img np.squeeze((input_img.copy()*127.5127.5)/255.0)[:,:,::-1] show_img np.array(show_img*255,np.uint8) plt.imshow(show_img) plt.axis(off)解析输出 一句话概括原理热度图将图像划分网格每个网格的得分代表当前关节在此网格点附近的概率偏移图代表xy两个坐标相对于网格点的偏移情况。 假设提取第2个关节的坐标位置 先得到最可能的网格点 i1 joint_heatmap heatmaps[...,i] max_val_pos np.squeeze(np.argwhere(joint_heatmapnp.max(joint_heatmap))) remap_pos np.array(max_val_pos/8*257,dtypenp.int32)把offset加上去前1-17是x坐标偏移后18-34是y坐标偏移 refine_pos np.zeros((2),dtypeint) refine_pos[0] int(remap_pos[0] offsets[max_val_pos[0],max_val_pos[1],i]) refine_pos[1] int(remap_pos[1] offsets[max_val_pos[0],max_val_pos[1],iheatmaps.shape[-1]])可视化看看 show_img np.squeeze((input_img.copy()*127.5127.5)/255.0)[:,:,::-1] show_img np.array(show_img*255,np.uint8) plt.figure(figsize(8,8)) plt.imshow(cv.circle(show_img,(refine_pos[1],refine_pos[0]),2,(0,255,0),-1))映射原图 因为上面是把原图resize乘(257,257)以后的坐标所以根据原图的缩放系数重新映射回去 ratio_x img.shape[0]/257 ratio_y img.shape[1]/257 refine_pos[0]refine_pos[0]*ratio_x refine_pos[1]refine_pos[1]*ratio_y可视化 show_img1 img[:,:,::-1] plt.figure(figsize(8,8)) plt.imshow(cv.circle(show_img1.copy(),(refine_pos[1],refine_pos[0]),2,(0,255,0),-1))封装函数 上面是提取单个关节的写成函数提取所有关节的坐标就是 def parse_output(heatmap_data,offset_data):joint_num heatmap_data.shape[-1]pose_kps np.zeros((joint_num,2),np.uint8)for i in range(heatmap_data.shape[-1]):joint_heatmap heatmap_data[...,i]max_val_pos np.squeeze(np.argwhere(joint_heatmapnp.max(joint_heatmap)))remap_pos np.array(max_val_pos/8*257,dtypenp.int32)pose_kps[i,0] int(remap_pos[0] offset_data[max_val_pos[0],max_val_pos[1],i])pose_kps[i,1] int(remap_pos[1] offset_data[max_val_pos[0],max_val_pos[1],ijoint_num])return pose_kps画图的函数也很容易 def draw_kps(show_img,kps):for i in range(kps.shape[0]):cv.circle(show_img,(kps[i,1],kps[i,0]),2,(0,255,0),-1)return show_img画出来瞅瞅 kps parse_output(heatmaps,offsets) plt.figure(figsize(8,8)) plt.imshow(draw_kps(show_img.copy(),kps)) plt.axis(off)后记 模型文件链接:https://pan.baidu.com/s/1heRKFFz28yvpAmvFqDeAXw 密码:5tuw 博客代码链接:https://pan.baidu.com/s/1Y7WXfQ4WC9QyOGkkN2-kUQ 密码:ono0 本文已经同步到微信公众号中公众号与本博客将持续同步更新运动捕捉、机器学习、深度学习、计算机视觉算法敬请关注
http://www.yutouwan.com/news/211693/

相关文章:

  • 网站开发的项目总结用软件做网站
  • 自己的电脑建网站开发网站需要什么硬件
  • 做企业网站的费用软件开发行业市场分析
  • 重庆荣昌网站建设公司网站首页制作方案
  • 一个备案号多个网站简述建设一个网站的具体过程
  • 网站权重排行WordPress访问mysql慢
  • 深圳专业手机网站建设输入关键词自动生成标题
  • 连云港网站关键字优化市场网站右下角图片广告代码
  • 温州自助模板建站买国外空间哪个网站好
  • 网站投票怎么做某景区网站建设策划书
  • 网站建设期末试题天猫店铺申请条件及费用
  • 石家庄哪里能做门户网站的想学设计师首先要学什么
  • 番禺高端网站建设网站优化 图片
  • 安徽制作网站专业公司wordpress登录可见
  • 南通企业网站公司策划是做什么的
  • 在线销售型网站产品蓬莱做网站那家好
  • 网站同时使用asp php钢结构招聘网最新招聘信息
  • 微网站是免费的吗页面跳转自动更新
  • 怎么给网站做链接屏蔽微信网址
  • 青岛大型门户网站建设推广南京房地产网站建设
  • 张家口北京网站建设打不开网站怎么办
  • 郑州网站建设费用滴道网站建设
  • 网站开发自学网校园文化建设
  • 东莞网站建设效果淘宝网网页版登录官网登录
  • 怎么从网站知道谁做的公司网站网页设计
  • 厦门无忧网站建设有限公司六安网络推广
  • 如何做网站咨询wordpress 上传类型
  • 上海做外贸建站的专业公司pc端自定义页设计与制作
  • 网站设计欣赏移动h5页面制作工具 软件
  • 淘宝网站怎么做的苏州建网站要多少钱