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

黑客网站模拟器搜索引擎营销优化诊断训练

黑客网站模拟器,搜索引擎营销优化诊断训练,wordpress的qq邮件列表qq邮件列表订阅rss源地址怎么找,山东省住房城乡建设厅网站首页部署之后模型的运算基本上能快5倍。本地部署之后,联网都不需要,数据和隐私不像在网上那样容易泄露了。 模型部署的通用流程 各大厂商都有自己的推理工具。 训练的归训练,部署的归部署,人工智能也分训练端和部署端,每一…

在这里插入图片描述

在这里插入图片描述

部署之后模型的运算基本上能快5倍。本地部署之后,联网都不需要,数据和隐私不像在网上那样容易泄露了。

模型部署的通用流程

在这里插入图片描述
在这里插入图片描述

各大厂商都有自己的推理工具。
训练的归训练,部署的归部署,人工智能也分训练端和部署端,每一个端操心自己事就好了。

ONNX

在这里插入图片描述

1.安装ONNX需要的环境

# 如果Pytorch已经安装,请忽略下一步
# pip3 install torch torchvision --extra-index-url https://download.pytorch.org/whl/cu113# 安装工具
# pip install numpy pandas matplotlib tqdm opencv-python pillow -i https://pypi.tuna.tsinghua.edu.cn/simple# 安装onnx和onnxruntime
# pip install onnx -i https://pypi.tuna.tsinghua.edu.cn/simple
# pip install onnxruntime -i https://pypi.tuna.tsinghua.edu.cn/simpleimport onnx
print('ONNX 版本', onnx.__version__)import onnxruntime as ort
print('ONNX Runtime 版本', ort.__version__)

2.将训练好的模型转换为ONNX格式

import torch
from torchvision import models# 有 GPU 就用 GPU,没有就用 CPU
device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
print('device', device)# 导入训练好的模型
model = torch.load('../checkpoint/best_0.727.pth')
model = model.eval().to(device)# Pytorch模型转ONNX模型
x = torch.randn(1, 3, 256, 256).to(device)with torch.no_grad():torch.onnx.export(model,                   # 要转换的模型x,                       # 模型的任意一组输入'resnet18_fruit30.onnx', # 导出的 ONNX 文件名opset_version=11,        # ONNX 算子集版本input_names=['input'],   # 输入 Tensor 的名称(自己起名字)output_names=['output']  # 输出 Tensor 的名称(自己起名字)) 

3.验证onnx模型导出成功

import onnx# 读取 ONNX 模型
onnx_model = onnx.load('resnet18_shizi.onnx')# 检查模型格式是否正确
onnx.checker.check_model(onnx_model)print('无报错,onnx模型载入成功')# 以可读的形式打印计算图
print(onnx.helper.printable_graph(onnx_model.graph))

4.连接摄像头使用ONNX Runtime格式的模型进行推理

'''
FPS为 40左右,为什么比没有部署前少了10个fps左右
'''
import osimport cv2
import numpy as np
import pandas as pd
import timefrom tqdm import tqdm # 进度条import torch
import torch.nn.functional as F
from torchvision import transformsimport onnxruntimefrom PIL import Image, ImageFont, ImageDrawimport matplotlib.pyplot as plt# 导入中文字体,指定字体大小
font = ImageFont.truetype('/opt/software/computer_vision/codes/My_codes/obeject_detection/tongjizhihaoxiong/data/SimHei.ttf', 32)# 载入onnx模型
model = onnxruntime.InferenceSession('resnet18_shizi.onnx')# 载入类别名称 和 ID索引号 的映射字典
idx_to_labels = np.load('/opt/software/computer_vision/codes/My_codes/obeject_detection/tongjizhihaoxiong/recognize_shizi/idx_to_labels.npy', allow_pickle=True).item()
# 获得类别名称
classes = list(idx_to_labels.values())# 测试集图像预处理-RCTN:缩放裁剪、转 Tensor、归一化
test_transform = transforms.Compose([transforms.Resize(256),transforms.CenterCrop(256),transforms.ToTensor(),transforms.Normalize(mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225])])# 处理帧函数
def process_frame(img_bgr):# 记录该帧开始处理的时间start_time = time.time()img_rgb = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)  # BGR转RGBimg_pil = Image.fromarray(img_rgb)  # array 转 PIL## 预处理input_img = test_transform(img_pil)  # 预处理input_tensor = input_img.unsqueeze(0).numpy()## onnx runtime 预测ort_inputs = {'input': input_tensor}  # onnx runtime 输入pred_logits = model.run(['output'], ort_inputs)[0]  # onnx runtime 输出pred_logits = torch.tensor(pred_logits)pred_softmax = F.softmax(pred_logits, dim=1)  # 对 logit 分数做 softmax 运算## 解析图像分类预测结果n = 5top_n = torch.topk(pred_softmax, n)  # 取置信度最大的 n 个结果pred_ids = top_n[1].cpu().detach().numpy().squeeze()  # 解析出类别confs = top_n[0].cpu().detach().numpy().squeeze()  # 解析出置信度## 在图像上写中文draw = ImageDraw.Draw(img_pil)for i in range(len(confs)):pred_class = idx_to_labels[pred_ids[i]]# 写中文:文字坐标,中文字符串,字体,rgba颜色text = '{:<15} {:>.3f}'.format(pred_class, confs[i])  # 中文字符串draw.text((50, 100 + 50 * i), text, font=font, fill=(255, 0, 0, 1))img_rgb = np.array(img_pil)  # PIL 转 arrayimg_bgr = cv2.cvtColor(img_rgb, cv2.COLOR_RGB2BGR)  # RGB转BGR# 记录该帧处理完毕的时间end_time = time.time()# 计算每秒处理图像帧数FPSFPS = 1 / (end_time - start_time)# 图片,添加的文字,左上角坐标,字体,字体大小,颜色,线宽,线型img_bgr = cv2.putText(img_bgr, 'FPS  ' + str(int(FPS)), (50, 80), cv2.FONT_HERSHEY_SIMPLEX, 2, (255, 0, 255), 4,cv2.LINE_AA)return img_bgrdef view_video(video_path):# 设置显示窗口的大小width,height = 800,600video = cv2.VideoCapture(video_path)'''把摄像头设置为1980 x 1080'''video.set(cv2.CAP_PROP_FRAME_WIDTH,1920)video.set(cv2.CAP_PROP_FRAME_HEIGHT,1080)video.set(cv2.CAP_PROP_FOURCC,cv2.VideoWriter.fourcc('M','J','P','G'))if video.isOpened():'''video.read() 一帧一帧地读取open 得到的是一个布尔值,就是 True 或者 Falseframe 得到当前这一帧的图像'''open, frame = video.read()else:open = Falsewhile open:ret, frame = video.read()# 如果读到的帧数不为空,那么就继续读取,如果为空,就退出if frame is None:breakif ret == True:# !!!处理帧函数frame = process_frame(frame)cv2.namedWindow('video',cv2.WINDOW_NORMAL)cv2.imshow("video", frame)# 50毫秒内判断是否受到esc按键的信息if cv2.waitKey(50) & 0xFF == 27:breakvideo.release()cv2.destroyAllWindows()if __name__ == '__main__':# 取前1个参数 和 摄像头的Idcamera_id = 0view_video(camera_id)

TensorRT和ONNX的区别

TensorRT和ONNX是深度学习模型优化和跨平台移植方面两个各有优势的工具。TensorRT是NVIDIA推出的用于深度学习模型优化的高性能库,旨在最大程度地提高深度学习推理的效率和吞吐量。
它可以将训练好的神经网络模型转换为高度优化的代码,以便在GPU上进行实时推理。
TensorRT针对不同类型的层使用了一系列高效的算法和技巧来加速计算,并且可以通过与CUDA和cuDNN等NVIDIA库的集成,以及利用GPU硬件加速来进一步提高性能。ONNX(Open Neural Network Exchange)是由微软、Facebook和亚马逊等科技公司联合开发的跨平台深度学习框架,
它借助中间表示的方式将深度学习框架之间的模型和权重参数相互转换,使得用户可以方便地将自己训练好的模型迁移到其他框架或硬件平台上使用。
相比之下,ONNX主要关注的是模型的跨平台移植性,使得用户可以方便地在不同的硬件平台上部署模型,并且支持多种硬件平台,包括CPU、GPU和FPGA等。
http://www.hengruixuexiao.com/news/23551.html

相关文章:

  • 常熟网站数字营销包括哪六种方式
  • 邢台网站建设服务百度指数批量查询工具
  • 做网站推广需要什么专业网站建设优化的技巧
  • 印刷报价网站源码推广团队
  • 公司的网站推广怎么做如何联系百度人工客服电话
  • 电商网站网址大全深圳百度推广开户
  • 台州自助建站在线咨询营业推广方案怎么写
  • 如何做视频购物网站百度后台推广登录
  • 潍坊网站建设推广报价搜索引擎优化的七个步骤
  • 怎么用editplus做网站seo搜索引擎优化案例
  • 组织建设 湖南省直工会网站给公司做网站的公司
  • 这个网站的建设流程长春seo整站优化
  • 北京昌平网站建设360优化大师最新版下载
  • 工程项目编号查询系统seo技术介绍
  • 企业网站用香港空间seo推广排名
  • wap网站建设设计软文是什么东西
  • 怎么模板建站常见的网站推广方法有哪些
  • 在招聘网站做电话销售怎么样东营优化路网
  • 东莞网站系统后缀app拉新渠道
  • 重庆云阳网站建设价格新媒体营销六种方式
  • 微信公众号和网站建设方案整合营销传播
  • 网站开发有几种十大网络舆情案例
  • 中国万网网站建设过程长尾词挖掘工具
  • 北苑网站建设介绍网络营销的短文
  • 做网站编辑需要看什么书北京百度网讯人工客服电话
  • 深圳建设企业aso优化分析
  • 免费送网站建立一个网站需要多少钱
  • 政府网站的做百度网页高级搜索
  • 用 asp net 做 的网站2023年8月疫情爆发
  • 基本型电子商务网站seo优化一般包括哪些内容