概念
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. 为点 线信息时, 按模型说明处理
AI封装库篇
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吧 ,
tensorflow GitHub - NVIDIA/TensorRT: NVIDIA® TensorRT™ is an SDK for high-performance deep learnin