赞
踩
1. 数值,向量,矩阵,张量:
数值 x=0
向量 point=[1,1] point=[1,1,1]
矩阵 m=[
[1,1,1],
[1,1,1]
]
张量 tensor=[
[
[1,1,1],
[1,1,1]
],
[
[1,1,1],
[1,1,1]
]
] 三维或更高维度的就叫张量tensor ;矩阵也可以叫二维的张量,向量叫 一维的张量, 标量(数值)叫 零维的张量,但不习惯这样说。
例如: 1x2个像素的图像张量 以 1x高x宽x三通道写成
[
[
[ [ r1,g1,b1] ]
],
[
[ [r2,g2,b2] ]
]
]
即 [ [ [ [r1,g1,b1] ] ], [ [ [r2,g2,b2] ] ] ]
红色[]维度1 绿色[]维度为高 黑色[]维度为宽 橙色为3
2. PyTorch是一个基于Python的开源机器学习库,用于构建深度学习模型。先了解即可。
最好找到对应的GitHub 上找信息,如果没有介绍,才看模型输入输出猜
onnx查看网址:https://lutzroeder.github.io/netron 或
NetronVisualizer for neural network, deep learning and machine learning models.https://netron.app/
24年3月最新 exe 版下载https://github.com/lutzroeder/netron/releases/tag/v7.5.4https://github.com/lutzroeder/netron/releases/tag/v7.5.4,网页卡住的要本地看,本地也要等很久
caffe查看网址:http://ethereon.github.io/netscope/#/editor
预处理:
图像转输入张量
1.NCHW(Batch, Channels, Height, Width)排布 先排前面,通道则比像素优先, RGB三通道的R先排每个像素的,然后到G,B
2.若是NHWC(Batch, Height, Width, Channels), 即 每个像素的,RGB三通道排完再下一个像素的
有些要归一化(0~1)要除255.0f
范围 -1~1的 除127.5f 减 1
后处理:
输出张量转图片:
1. 输出张量 为图像 时, 可以逆转 预处理(预处理除了255.0f的 要乘回255.0f)
2. 输出张量 为抠图的透明度信息 时,
(1)每个像素的颜色=该像素点 被抠图的*透明度; 然后底部放背景图。
(2)如果要融合 每个像素的颜色=该像素点 被抠图的*透明度+ 背景的颜色*(最大透明度值-透明度)。如果255表示最大透明度,那就是255-透明度,是1 则是 1-透明度
3. 为点 线信息时, 按模型说明处理
NuGet :yolov5-net(物体识别)yolov7 yolov8 的
人脸处理:
GitHub : ViewFaceCore (都很方便使用,功能多,小部分人脸对比还是有缺陷)
语言转文字:
whisper.net
文生图:
GitHub - DarthAffe/StableDiffusion.NET: C# Wrapper for StableDiffusion.cpp
C# StableDiffusion StableDiffusionSharp 脱离python臃肿的环境-CSDN博客
Microsoft.ML.OnnxRuntime (使用其它运行时删掉这一项)
默认都是CPU, 速度慢
Microsoft.ML.OnnxRuntime.DirectML
.NET ML 框架 DML加速 Any CPU 改成x64 之后加速的相关配置才不报错(显卡要DirectX版本12以上,大部分电脑都有,大多不用安装加速推理的环境)
Microsoft.ML.OnnxRuntime.MKLML
.NET ML 框架 的DNN 加速 cuDNN 等环境 英特尔CPU(未测)
Microsoft.ML.OnnxRuntime.Gpu
.NET ML 框架 的GPU 加速 要对应显卡的 CUDA环境
https://www.cnblogs.com/zhuoss/p/17697706.html 安装CUDA过程,
cuDNN则到另一处下载,按上面的教程覆盖:
cuDNN Archive | NVIDIA Developer 登录后选择对应版本下载,覆盖
对应版本参考 NVIDIA - CUDA | onnxruntime
最后 报错 [ErrorCode:RuntimeException] D:\a\_work\1\s\onnxruntime\core\session\provider_bridge_ort.cc:1209 onnxruntime::ProviderLibrary::Get [ONNXRuntimeError] : 1 : FAIL : LoadLibrary failed with error 126 ""
1.13版本运行时也不行。
参考:
Windows版 CUDA安装_win cuda安装-CSDN博客 (安装只选CUDA,相对少选一些)
按照依赖工具测试,对应的 onnxruntime_providers_cuda.dll 缺超多dll,
直接放弃,CUDA12.2 还是换11.8吧 ,
结果配置时不报错,推理卡住 ,
查询资料,有些说1050Ti 以上,有些说要1060以上
我的1050Ti 还看到缺基本个dll, 11.8版到是不缺CUDA相关的dll而已。没程序崩溃信息,不知道是dll 还是 硬件问题。
去系统日志查看
发现是cuDNN的问题, 重新去看github上11.8对应的cuDNN, 不是官网对应的8.5.0, 是当前最新的8.9.7, 换了之后,成功解决!!!
速度对比
GPU(CUDA11.8) : 210~240ms,偶尔240~250ms ;第二次210~230ms,偶尔230~250ms
DML: 188~210ms, 一次217ms (没测试GPU加速前 速度250ms左右, DML 加速一直是个迷,有时会加快)
GPU(CUDA11.8) : 预热9000ms,开始速度215~240ms,偶尔240~250ms ;持续一分钟后数组上升到280ms
DML :预热270ms, 开始速度185~202ms, 持续一分钟后数值上升到250~260ms
使用
//GPU 的 onnx官方的配置1
var cudaProviderOptions = new OrtCUDAProviderOptions(); // Dispose this finally
var providerOptionsDict = new Dictionary<string, string>();
providerOptionsDict["device_id"] = "0";
providerOptionsDict["gpu_mem_limit"] = "3791728742"; //内存分配 2791728742=3G-256MB 2147483648=2G
providerOptionsDict["arena_extend_strategy"] = "kSameAsRequested";
providerOptionsDict["cudnn_conv_algo_search"] = "HEURISTIC"; //设置改为HEURISTIC或EXHAUSTIVE以寻找最优的卷积算法,EXHAUSTIVE 预热很久,DEFAULT默认
providerOptionsDict["do_copy_in_default_stream"] = "1";
providerOptionsDict["cudnn_conv_use_max_workspace"] = "1";
providerOptionsDict["cudnn_conv1d_pad_to_nc1d"] = "1";cudaProviderOptions.UpdateOptions(providerOptionsDict);
options = SessionOptions.MakeSessionOptionWithCudaProvider(cudaProviderOptions);
options.GraphOptimizationLevel = GraphOptimizationLevel.ORT_ENABLE_ALL;
GPU(CUDA11.8) : 只有预热加快到880~1000+ms,其它变化不大
值得注意的是 以下Python脚本是测试不到的,ML.NET 还是可以正常运行CUDA加速
import torch
def check_cuda_cudnn():
# 检查CUDA是否可用
if not torch.cuda.is_available():
print("CUDA is not available.")
else:
print(f"CUDA is available. Version: {torch.version.cuda}")# 检查cuDNN是否可用
if not torch.backends.cudnn.is_available():
print("cuDNN is not available.")
else:
print(f"cuDNN is available. Version: {torch.backends.cudnn.version()}")if __name__ == "__main__":
check_cuda_cudnn()
onpenvino 框架 gpu加速 要相关的几G软件 CUDA等安装, onnxruntime 官方查看具体资料
---------------------------------
onnx 地址合集:
1. C++ AI工具库, 关联的onnx模型,同时还分组了,模型有大有小的, 列出了链接,链接有介绍但不一定有onnx模型下载
https://github.com/DefTruth/lite.ai.toolkit/blob/main/docs/hub/lite.ai.toolkit.hub.onnx.md
2. github 官方 onnx 模型 ,很多,但没什么介绍,只分了文件夹
GitHub - onnx/models: A collection of pre-trained, state-of-the-art models in the ONNX format
3. onnx 搜索下载,英文页面,数量多 搜索方便,有些无详细说明
4. 其它环境下载:
(1)下载cmake-3.28.0-rc5-windows-x86_64.msi
https://cmake.org/download/
(2)下载 openVINO2021 环境
https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/download.html?VERSION=v_2021_4_2&ENVIRONMENT=DEV_TOOLS&OP_SYSTEM=WINDOWS&DISTRIBUTION=OFFLINE_INSTALLER
5. 其它onnx 免费下载, 参考篇的 11 12
6. 魔搭社区创客空间 RapidOCRDemo 包含onnx模型,Python代码,转C#后个别模型报错,改ch_ppocr_server_v2.0_rec_infer.onnx可用
封装的yolov5使用
1. net6下[WPF+yolov5+opencvsharp]:
https://www.cnblogs.com/hngyElectronic/archive/2023/10/04/17742907.html
2. winform 的 OpenCvSharp+Yolov5Net+Onnx 完整Demo
3. https://blog.csdn.net/lw112190/category_12285317.htmlhttps://blog.csdn.net/lw112190/category_12285317.html 这个大佬的 C#+AI专题文章
C# Onnx Yolov8 Detect 戴安全帽检测(未测)
LaMa Image Inpainting 图像修复 Onnx Demo(未测)
C# OpenVINO 百度PaddleSeg实时人像抠图PP-MattingV2:(已测,速度一般,1050Ti 110ms)
C# PaddleInference.PP-HumanSeg 人像分割 替换背景色_c# paddleseg 实时人像分割-CSDN博客
C# Onnx 百度PaddleSeg发布的实时人像抠图PP-MattingV2_抠图 onnx模型-CSDN博客
另外 :飞桨CSDN官方 后处理介绍 :
damoyolo (已测,速度不错, 1050Ti 能达到25~30FPS)
stable-diffusion(暂时运行不了,环境问题)
等
5. 基于C# WinForm平台部署Yolov8 (未测)
实例推理框架(OpaenVINP /TensorRT /ONNX Runtime/OpenCv)、推理模型(yoloV8-det yoloV8-seg yoloV8-cls yoloV8-pose)
https://github.com/guojin-yan/Csharp_deploy_Yolov8/tree/masterhttps://github.com/guojin-yan/Csharp_deploy_Yolov8/tree/master其附带的 Python方式下载和转换
https://github.com/guojin-yan/Csharp_deploy_Yolov8/blob/master/doc/Yolov8_download_conv.md
6. 基于C#和TensorRT部署Yolov8全系列模型 ,TensorRT加速也是要CUDA,(未测)
【Yolov8】基于C#和TensorRT部署Yolov8全系列模型_\tensorrtsharpexterm.dll-CSDN博客文章浏览阅读5k次,点赞18次,收藏68次。该项目主要基于TensorRT模型部署套件,在C#平台部署Yolov8模型,包括Yolov8系列的对象检测、图像分割、姿态识别和图像分类模型,实现C#平台推理加速Yolov8模型。_\tensorrtsharpexterm.dllhttps://blog.csdn.net/grape_yan/article/details/130241872对应 OpenVINO 【Yolov8】基于C#和OpenVINO部署Yolov8全系列模型_yolov8 openvino-CSDN博客文章浏览阅读3.2k次,点赞20次,收藏59次。该项目主要基于OpenVINO™模型部署套件,在C#平台部署Yolov8模型,包括Yolov8系列的对象检测、图像分割、姿态识别和图像分类模型,实现C#平台推理加速Yolov8模型。_yolov8 openvinohttps://blog.csdn.net/grape_yan/article/details/130240378【TensorRT】基于C#调用TensorRT 部署Yolov5模型 - 下篇:
9. GitHub mini-openvino-facedetection 项目 人脸检测 (源码可运行,速度很快,换模型不懂为何加载报错)
其使用的 face-detection-0200 模型的解释
https://github.com/openvinotoolkit/open_model_zoo/tree/master/models/intel/face-detection-0200https://github.com/openvinotoolkit/open_model_zoo/tree/master/models/intel/face-detection-020010. yolov7 CSDN 资源包下载: yolov7-tiny的c# 调用,vs2022使用opencvsharp推理(未测)
https://download.csdn.net/download/vokxchh/85993605
11. damo-yolo (已测,速度不错, 测试图像输入640x480的模型 ,1050Ti 能达到25~30FPS)
27个onnx模型, onnx文件需要从百度云盘下载。
链接:https://pan.baidu.com/s/10-5ke_fs2omqUMSgKTJV0Q 提取码:w9kp
GitHub 下载https://github.com/tinyvision/DAMO-YOLO/blob/master/README_cn.md
80个类名称顺序为:(GitHub上的Python代码)
class_names = ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train',
'truck', 'boat', 'traffic light', 'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog',
'horse', 'sheep', 'cow', 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase',
'frisbee', 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard',
'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', 'sandwich', 'orange',
'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', 'potted plant', 'bed', 'dining table', 'toilet',
'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book',
'clock', 'vase', 'scissors', 'teddy bear', 'hair drier', 'toothbrush']
基础程序制作参考:
C# Onnx 阿里达摩院开源DAMO-YOLO目标检测_damoyolo demo-CSDN博客
12. 字节跳动的 RobustVideoMatting (主要抠图人物,推理速度相对PP-MattingV2快一倍,精度高略好一点,抠图还不是完全稳定,但是是目前最佳)
https://github.com/PeterL1n/RobustVideoMatting/blob/master/README_zh_Hans.md
src
, r1i
, r2i
, r3i
, r4i
, downsample_ratio
].
src
:输入帧,RGB 通道,形状为 [B, C, H, W]
,范围为0~1
。rXi
:记忆输入,初始值是是形状为 [1, 1, 1, 1]
的零张量。downsample_ratio
下采样比,张量形状为 [1]
。downsample_ratio
必须是 FP32
,其他输入必须和加载的模型使用一样的 dtype
。fgr
, pha
, r1o
, r2o
, r3o
, r4o
]
fgr, pha
:前景和透明度通道输出,范围为 0~1
。rXo
:记忆输出。下采样比:
模型在内部将高分辨率输入缩小做初步的处理,然后再放大做细分处理。
建议设置 downsample_ratio
使缩小后的分辨率维持在 256 到 512 像素之间. 例如,1920x1080
的输入用 downsample_ratio=0.25
,缩小后的分辨率 480x270
在 256 到 512 像素之间。
根据视频内容调整 downsample_ratio
。若视频是上身人像,低 downsample_ratio
足矣。若视频是全身像,建议尝试更高的 downsample_ratio
。但注意,过高的 downsample_ratio
反而会降低效果。
13. 其它语言版参考,部分有onnx模型
(1)Python 版本的 卡通化
GAN动漫人像生成实现(附带源码)_漫画风格迁移 c++-CSDN博客
扩展:
代码放在GitHub上的:
https://github.com/hahahappyboy/Pytorch-and-CPP-OnnxRuntime
训练好的模型以及导出的onnx模型在这:
链接:https://pan.baidu.com/s/1m35zq0wqTeaOZ5rj2L2dKA
提取码:iimp
原文链接:https://blog.csdn.net/iiiiiiimp/article/details/120621682
(2) Python 版本的 photo2cartoon 一个普通的卡通化的
GitHub - minivision-ai/photo2cartoon: 人像卡通化探索项目 (photo-to-cartoon translation project)
(3)C++ 版本的 pix2pix( 效果普通,免费提供百度onnx格式模型)
C++和PytorchOnnxRuntime使用方法(附代码)_windows安装onnxruntime-gpu c++-CSDN博客
(4)Python 版本的 AnimeGANv2-ONNX-Sample( 有onnx格式模型下载,还行的人物油画化,C#运行速度一般,无法实时化)
(5)Python和C++ 版本的 很多例子介绍,github链接提供百度网盘下载onnx模型
(6) Python版本的模型资料总结,内容很多,但无onnx模型
(7)Python版本的, 很多模型,并分类,部分往下点到具体说明,可以看到onnx的网址,删减后成了下载地址! Unity版本的ailia模型存储库, 无WPF的
①其中 找到 风格转换(Style transfer)类的beauty_gan,两图互换风格。测试效果也不怎么样,AI说对抗神经网络不怎么理想GitHub - axinc-ai/ailia-models: The collection of pre-trained, state-of-the-art AI models for ailia SDK
②其中 年龄变化 0~100,输入1图,出各个年龄图 (未测)https://github.com/axinc-ai/ailia-models/tree/master/generative_adversarial_networks/sam
③其中 去雾霾 效果看着还行(未测,csdn有相应C#应用的)
https://github.com/axinc-ai/ailia-models/tree/master/image_manipulation/dehamer
④其中 降噪,去虚影。效果看着还行(未测)
https://github.com/axinc-ai/ailia-models/tree/master/image_restoration/nafnet
(8) AnimeGANv2Python版本的 动漫化 AnimeGANv2 ,有V3 V2版本的onnx模型下载
14. H5,ONNX.JS ONNX.js 是一个在浏览器上运行 ONNX 模型的库,它采用了 WebAssembly 和 WebGL 技术,并在 CPU 或 GPU 上推理 ONNX 格式的预训练模型。
https://zhuanlan.zhihu.com/p/51387600
演示地址:https://microsoft.github.io/onnxjs-demo/#/yolo 本地做了一个加载其它的,结果不兼容int64, 只能转换 或 把这个地址的onnx下载来测试
推理速度对比
https://www.bilibili.com/video/BV11u411N7ji/?spm_id_from=333.337.search-card.all.click&vd_source=7131bd5d24cfefde3fce7ab6d1686c4d
H5 浏览器推理介绍:
这里列出三个常见的推理引擎 对比
tensorflow.js(下面简称为tfjs)
ONNX.js
WebDNN
https://zhuanlan.zhihu.com/p/349500443
react with onnxjs demo
https://github.com/Narsil/face
15. JAVA 安卓
GitHub - ZTMIDGO/Anime: 基于DCT-Net:用于肖像风格化的Android应用程序
16. 线上API 体验:
(1)百度 飞桨
①在线应用体验
https://aistudio.baidu.com/application/center
②另外 ,.net 部署,非onnx模型, 是封装好的飞桨人像分割, GPU加速收费,
doc/UseInCsharp.md · 明月心/PaddleSegSharp - Gitee.com
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "*.*|*.bmp;*.jpg;*.jpeg;*.tiff;*.tiff;*.png";
if (ofd.ShowDialog() == true)
{
string modelPath = null;
//参数
MattingParameter parameter = new MattingParameter();
//初始化引擎
PaddleSegMattingEngine engine = new PaddleSegMattingEngine();
parameter.use_gpu = true; //提示要购买
parameter.gpu_id = 0;
parameter.Enable_mkldnn = true;
parameter.outbgfile = false; //是否 输出黑白前后背景图,当为true,输出路径为seg第三个参数。
parameter.bgtransparent = false; //是否背景透明,当为true时,Setbackground,SetbackgroundFile都无效。
engine.Init(modelPath, parameter); //初始化引擎
engine.Setbackground(45, 145, 255); //设置背景颜色
engine.SetbackgroundFile(Environment.CurrentDirectory+@"/images/bg.png"); //与Setbackground互斥,SetbackgroundFile优先
string outfile = System.IO.Path.Combine(Environment.CurrentDirectory + @"/images/bgOut.png"); //分割后的文件
Console.WriteLine($"{outfile} {ofd.FileName}");
engine.Seg(ofd.FileName, outfile, "输出黑白前后背景图路径,parameter.outbgfile为true时有效");
}
else
{
// 用户取消操作
return;
}
(2)阿里 线上API 有很多,图片风格处理,视频换脸等
https://vision.aliyun.com/?crowd=personal&spm=a2cvz.27725973.J_8228568030.1.9a4250b5s7f0ak
(3)字节跳动 的 火山引擎API调用,暂没发现AI模型分享
https://cv-api.bytedance.com/doc/openapi/1818/readme
(4)软虹 虹软视觉开放平台—以免费人脸识别技术为核心的人脸识别算法开放平台 ,C++SDK, 没C#
1. onnx量化 是啥?
yolov8 Onnx 模型的静态量化和动态量化:
https://lw112190.blog.csdn.net/article/details/133030553
2.C# Sdcb.Paddle2Onnx Paddle(飞桨)模型通过C#转换为ONNX模型(C#完整demo):
https://lw112190.blog.csdn.net/article/details/131696894
3.飞桨模型导出?未测:
4.C# OpenVINO 直接读取百度Paddle模型实现物体检测( yolov3_darknet):
https://lw112190.blog.csdn.net/article/details/134770797
5. C# EmguCV bitmap 转 Mat
https://lw112190.blog.csdn.net/article/details/132080975
6. 在线 模型转换网址,不能其它格式转onnx格式:
一键转换 Caffe, ONNX, TensorFlow 到 NCNN, MNN, Tengine
7. yolov8 官方转换代码
pose 模型转换参考官方:
Pose - Ultralytics YOLOv8 Docs
from ultralytics import YOLO
# Load a model
model = YOLO('yolov8n-pose.pt') # load an official model
#model = YOLO('path/to/best.pt') # load a custom trained model 我注释掉这句才能运行# Export the model
model.export(format='onnx')
下载 YOLOk库,之后执行 Python yolo.py predict model=yolov8n-pose.onnx
会下载和转换模型
8. 魔塔转换onnx
部分支持而已,官网文档中心有具体列举的,不用案例的ID, 导出异常,地址无对应文件夹无法导出
参考:
# 导出模型
from modelscope.models import Model from modelscope.exporters import Exporter model_id = 'damo/nlp_structbert_sentence-similarity_chinese-base'
model = Model.from_pretrained(model_id) output_files = Exporter.from_model(model).export_onnx(opset=13, output_dir='/tmp', shape=(2, 256)) print(output_files)
将 DCTNet 模型转换为 ONNX 格式:
官方文档没有,搜索到 dctnet模型如何转onnx格式_问答-阿里云开发者社区
不过魔塔上3D动漫化的模型是pb格式,是 Tensorflow使用的格式,以下代码未测:
- import onnx
- from dctnet import DCTNet
-
- # 加载DCTNet模型
- model = DCTNet()
- model.load_state_dict(torch.load('dctnet.pth'))
- model.eval()
-
- input_shape = (1, 3, 224, 224)
- input_data = torch.randn(input_shape)
-
- # 导出模型为ONNX格式
- nx_model = onnx.export(model, input_data, 'dctnet.onnx', verbose=True)
9. C# 步骤有些多的NHWC 转 NCHW ,(10~13ms, 还行,但不如多线程操作指针 或 操作Mat复制重排 的耗时1~5ms)
安装 NumSharp +NumsharpOpencvSharpConvertor 加上之前的OpenCVSharp4
public DenseTensor<float> ProcessImage(Mat image)
{
// 确保图像是8位无符号整数类型
if (image.Type() != MatType.CV_8UC3)
{
throw new InvalidOperationException("图像类型必须是8位无符号整数(CV_8UC3)");
}// 将图像从BGR转换为RGB
Cv2.CvtColor(image, image, ColorConversionCodes.BGR2RGB);// 转换Mat到NDArray ,先复制数据
byte[] imageData = new byte[image.Rows*image.Cols* 3];
Marshal.Copy(image.Data, imageData,0,imageData.Length);
var ndArray = np.array(imageData).astype(np.float32).reshape(image.Height, image.Width, 3); ;
// NDArray ndArray = image.ToNdArray(); //0.20.5 版本可以0.30.0报错不全调整维度顺序从[H, W, C]到[C, H, W]
int[] dims = { 2, 0, 1 };
ndArray = ndArray.transpose(dims);展平NDArray到1D
var flattenedArray = ndArray.flatten().ToArray<float>();
// float[] flattenedArray = ndArray.ToArray<float>();
// 创建DenseTensor
var inputTensor = new DenseTensor<float>(flattenedArray, new[] { 1, 3, image.Height, image.Width });return inputTensor;
}
GitHub - zhangchaosd/ModelInferBench: For testing model inference speed
PC/batch_size | 1 | 4 | 128 |
---|---|---|---|
Python PyTorch CPU | 172 ms | 514 ms | * |
Python ONNX Runtime CPU | 12 ms | 30 ms | * |
Python OpenVINO CPU | 11 ms | 29 ms | * |
C++ ONNX Runtime CPU | 10 ms | 34 ms | 3800 ms |
C++ OpenVINO CPU | 10 ms | 26 ms | * |
C# ONNX Runtime CPU | 170 ms | 473 ms | 3876 ms |
Python PyTorch 1070Ti | 11 ms | 23 ms | * |
Python ONNX Runtime 1070Ti | 7 ms | 18 ms | 430 ms |
Python OpenVINO 1070Ti | 49 ms | * | * |
C++ ONNX Runtime 1070Ti | 7 ms | 17 ms | 424 ms |
C# ONNX Runtime 1070Ti | 7 ms | 17 ms | 427 ms |
C# DirectML 1070Ti | 12 ms | 31 ms | 812 ms |
Python OpenVINO A770 | 10 ms | 15 ms | 919 ms |
C++ OpenVINO A770 | 7 ms | 10 ms | 870 ms |
C# DirectML A770 | 9 ms | 19 ms | 485 ms |
看了 A 卡的DX12 性能比 相对突出,使用DML 推理相对快 。
-------------------------------------------------------------------
DML加速时使用DX12, Graphics_1使用率上升。
另外有时实践中 DML 加速有些迷,
情况1: 某个模型突然再运行,速度提升了,情况不明
情况2: 抠图模型1,循环推理60ms, 开发应用抠图模型2的程序,回来运行抠图模型1的程序,发现速度提升了
情况3:图像增强(修复)模型1 和 2 也类似情况2
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。