Skip to content

Module_Examples_zh

cyclone_dll edited this page Oct 1, 2026 · 7 revisions

当前位置 : 首页/示例

示例 - Examples

仓库根目录下的 Examples/ 文件夹包含独立可运行的示例工程。这些项目引用主库 Vorcyc.Mathematics(targets/dotNET10_Portable),用于演示如何在真实场景中使用各模块 API;不包含在 NuGet 包内,需从源码编译运行。

工程 路径 主要模块 说明
音频 WAV + MFCC Examples/Audio_example/ SignalProcessing、DeepLearning、NAudio NAudio 读/写 WAV、MFCC 分析、训练与推理
核心 / 线代 / 统计 Examples/Core_example/ ComputingContext、LinearAlgebra、Statistics 矩阵乘、Span 统计、VectorSpan、作用域解析
机器学习 Examples/MachineLearning_example/ MachineLearning 0.9 分类/回归流水线、树/森林、集成学习、CV/网格搜索
图像上色 Examples/Colorization_example/ DeepLearning、LinearAlgebra ColorNet / ChromaGAN 黑白图上色
信号处理 Examples/SignalProcessing_example/ SignalProcessing Signal 合成、FFT、滤波、MFCC、音效、并行特征
深度学习 Examples/DeepLearning_example/ DeepLearning XOR/批训练/CNN+MLP/音频分类、序列化、MlpRegressor 曲线拟合
微积分 Examples/Calculus_example/ Calculus 积分、导数、ODE、求根、级数

📒目录


目录结构约定

Examples/
└── <示例名>_example/
    ├── <示例名>_example.csproj   # 引用 dotNET10_Portable
    ├── Program.cs                # CLI 入口
    ├── models/                   # 导出的 .vmdl(可选,随构建复制到输出目录)
    └── …                         # 模型定义、序列化、图像 IO 等

新增示例时建议:

  1. 在 Examples/ 下创建独立 .csproj,TargetFramework 与主库一致(net10.0)。
  2. 将工程加入 Vorcyc.Mathematics.slnx 的 /Examples/ 文件夹。
  3. 在本页追加一行表格说明,并补充对应小节。

Audio_example — NAudio 音频流水线

端到端演示:NAudio 读写 WAV → Vorcyc Signal → MFCC → BatchSequential 训练/推理。比 DeepLearning_example 的 audio 命令更贴近真实项目(磁盘上的 .wav 文件,而非内存合成波)。

依赖项

包 版本 用途
NAudio 2.2.1 AudioFileReader / WaveFileWriter 读写信道 WAV
Vorcyc.Mathematics 工程引用 Signal、MFCC、AudioTrainingSamples、ModelSerializer

命令行用法

# 全流程:生成演示 WAV → 训练 → 分析 → 推理
dotnet run --project Examples/Audio_example

dotnet run --project Examples/Audio_example -- prepare
dotnet run --project Examples/Audio_example -- analyze data/class_low/tone_220hz.wav
dotnet run --project Examples/Audio_example -- analyze my.wav --csv mfcc.csv
dotnet run --project Examples/Audio_example -- train --epochs 3000
dotnet run --project Examples/Audio_example -- predict data/class_high/tone_1200hz.wav
dotnet run --project Examples/Audio_example -- help

数据目录(默认在输出目录 bin/.../net10.0/data/):

data/
├── class_low/    # 标签 low:低频演示音(可替换为自己的 WAV)
└── class_high/   # 标签 high:高频演示音
models/
└── pitch_mfcc.vmdl   # train 后保存的 BatchSequential 权重

代码结构

Examples/Audio_example/
├── Program.cs
├── PitchClassifierConfig.cs
├── Io/
│   └── WavBridge.cs              # NAudio ↔ Signal(含重采样)
└── Pipeline/
    ├── DemoDataFactory.cs        # 生成 16-bit PCM 演示 WAV
    ├── LabeledWavDataset.cs      # 按文件夹加载带标签数据集
    ├── MfccFileAnalyzer.cs       # analyze:RMS / FFT / MFCC
    └── PitchClassifierTrainer.cs # train / predict + ModelSerializer

与 DeepLearning_example audio 的区别

Audio_example DeepLearning_example -- audio
输入 磁盘 WAV(NAudio) 内存 GenerateWave
外部依赖 NAudio 无
模型持久化 .vmdl 保存/加载 无
适用 文件 IO + 部署推理 快速验证 API 接线

Core_example — 核心与 ComputingContext

演示 ComputingContext、MatrixFp32.Multiply、Span 统计扩展与 VectorSpan 热点 API。无额外 NuGet,跨平台可运行。与 Module_ComputingContext 手册互补。

命令行用法

dotnet run --project Examples/Core_example
dotnet run --project Examples/Core_example -- matrix
dotnet run --project Examples/Core_example -- statistics
dotnet run --project Examples/Core_example -- vector
dotnet run --project Examples/Core_example -- context
dotnet run --project Examples/Core_example -- help

代码结构

Examples/Core_example/
├── Program.cs
├── MatrixDemo.cs           # MatrixFp32.Multiply + ComputingScope
├── StatisticsDemo.cs       # Sum / Average / StandardDeviation
├── VectorDemo.cs           # Dot / Norm / Axpy
└── ComputingContextDemo.cs # 显式参数 vs Scope 优先级

MachineLearning_example — 表格学习

演示 0.9 机器学习模块的典型工作流:合成三簇二维数据、DataSplit 划分、多种 IClassifier<double> 训练与评估、ClassificationPipeline、网格搜索与 K 折交叉验证,以及回归流水线示例。无额外 NuGet 依赖,跨平台可运行。

命令行用法

# 概览(默认):分类 + 回归
dotnet run --project Examples/MachineLearning_example

# 仅分类
dotnet run --project Examples/MachineLearning_example -- classify

# 回归:KnnRegressor、RegressionPipeline 批量预测、岭回归、K 折 CV
dotnet run --project Examples/MachineLearning_example -- regression

dotnet run --project Examples/MachineLearning_example -- help

代码结构

Examples/MachineLearning_example/
├── Program.cs              # classify / regression CLI
├── BlobDataset.cs          # 三簇合成分类数据
└── RegressionDataset.cs    # 合成回归数据

批量推理性能对比见 `benchmarks/basic_benchmark/MachineLearning_batch_benchmark.cs`(在 `Program.cs` 中取消注释后运行)。

完整 API 说明与可复制片段见 机器学习模块 — 0.9 分类器完整示例。


Colorization_example — 图像上色

将灰度或彩色照片上色,移植自 Vorcyc.AwesomeAI 中的 NeuralColor / Colorization 方案,改用 0.9 DeepLearning Modules API(Convolution2DLayer、BatchNormLayer、ReLUActivation 等)与自定义模型容器,图像 IO 使用 Emgu.CV。

模型与场景

场景 CLI --scenario 网络 适用
实景 realistic(默认) ColorNet 风景、建筑等自然场景
人物 people ChromaGAN 人物照、集体照

两套网络均为双分支或编码-融合结构,无法直接用单个 BatchSequential 描述,因此在示例工程内实现了 ColorNetModel / ChromaGanModel,权重通过示例专用序列化器保存为 VMDL v3 变体(ModelKind = 4 / 5,见 VmdlTensorArchive)。

文件 格式 说明
*.HModel 半精度二进制(旧版) ColorfulSoft 原始权重
*.vmdl VMDL v3(float64 张量) 导出后的新格式,推理使用

默认路径(可在命令行覆盖):

  • ColorNet:models/Colornet.vmdl,旧模型 model_zoo/vision/colorization/Colornet.HModel
  • ChromaGAN:models/ChromaGAN.vmdl,旧模型 model_zoo/vision/colorization/ChromaGAN.HModel

依赖项

除主库外,示例工程额外引用:

包 版本 用途
Emgu.CV 4.9.0.5494 读图、缩放、颜色空间
Emgu.CV.runtime.windows 4.9.0.5494 Windows 本地 OpenCV 运行时

运行环境需为 Windows(Emgu 运行时包)。Linux/macOS 需自行替换为对应 Emgu 运行时或改写图像 IO。

从旧版 HModel 导出

若仅有 .HModel,先导出为 .vmdl:

cd Examples/Colorization_example

# ColorNet
dotnet run -- export colornet <Colornet.HModel路径> models/Colornet.vmdl

# ChromaGAN
dotnet run -- export chromagan <ChromaGAN.HModel路径> models/ChromaGAN.vmdl

导出流程:半精度解码(Legacy/HalfHelper)→ 填入 ColorNetModel / ChromaGanModel 的 Parameter → ColorNetSerializer / ChromaGanSerializer 写入 VMDL。

若执行 colorize 时目标 .vmdl 不存在且默认路径下存在对应 .HModel,程序会自动导出后再推理。

命令行用法

# 实景上色(ColorNet)
dotnet run --project Examples/Colorization_example -- colorize photo.jpg result.jpg --scenario realistic

# 人物上色(ChromaGAN)
dotnet run --project Examples/Colorization_example -- colorize photo.jpg result.jpg --scenario people

# 指定模型文件
dotnet run --project Examples/Colorization_example -- colorize photo.jpg out.jpg --scenario people --model models/ChromaGAN.vmdl

命令摘要

命令 说明
export <colornet|chromagan> [hmodel] [vmdl] 旧权重 → VMDL
colorize <图片> [输出] [--scenario realistic|people] [--model path] 上色并保存 JPEG

代码结构

Examples/Colorization_example/
├── Program.cs                 # export / colorize CLI
├── ColorizationEnhancer.cs      # 统一入口(Scenario + 模型加载)
├── Models/
│   ├── ColorNetModel.cs       # ColorNet 前向(Modules API)
│   ├── ChromaGanModel.cs      # ChromaGAN 前向
│   ├── SpatialLinearLayer.cs  # GFN / global2 空间全连接
│   └── ModelWeightUtils.cs    # 权重拷贝辅助
├── Legacy/
│   ├── HalfHelper.cs          # half → float
│   ├── HModelReader.cs        # ColorNet HModel
│   └── HModelChromaGanReader.cs
├── Serialization/
│   ├── VmdlTensorArchive.cs   # 共用 VMDL 张量读写
│   ├── ColorNetSerializer.cs  # ModelKind = 4
│   └── ChromaGanSerializer.cs # ModelKind = 5
└── Vision/
    ├── ColorNetIo.cs          # Emgu 预处理 / LAB 合成
    └── ChromaGanIo.cs

编程式调用示例

using Colorization_example;
using Emgu.CV;

using var enhancer = new ColorizationEnhancer(
    ColorizationEnhancer.Scenario.RealisticView,
    @"models/Colornet.vmdl");

using var input = new Mat(@"photo.jpg");
using var output = enhancer.Colorize(input);
CvInvoke.Imwrite(@"result.jpg", output);

与深度学习模块的关系

能力 主库 ModelSerializer v3 本示例
支持容器 Sequential、BatchSequential、CnnMlp、BatchParallelConcat 自定义 ColorNetModel / ChromaGanModel
层 API Modules.* 同左 + 遗留 Layers.JoinLayer / Fusion / Upsample2D
序列化 架构 LayerDescriptor + 权重 固定拓扑,仅按序读写命名张量

完整训练栈说明见 深度学习模块。本示例仅演示推理与旧权重迁移;若需训练同类网络,需在主库容器之上自行实现 Forward / Backward 或扩展 ModelSerializer。


SignalProcessing_example — 信号处理

演示 0.9 Signal 主 API:波形合成、TransformToFrequencyDomain、Butterworth 低通、MfccExtractor(HTK 预设)与 TremoloEffect。无额外 NuGet,跨平台可运行。

命令行用法

dotnet run --project Examples/SignalProcessing_example
dotnet run --project Examples/SignalProcessing_example -- synth
dotnet run --project Examples/SignalProcessing_example -- fft
dotnet run --project Examples/SignalProcessing_example -- filter
dotnet run --project Examples/SignalProcessing_example -- mfcc --csv mfcc.csv
dotnet run --project Examples/SignalProcessing_example -- effect
dotnet run --project Examples/SignalProcessing_example -- context
dotnet run --project Examples/SignalProcessing_example -- help

代码结构

Examples/SignalProcessing_example/
├── Program.cs
├── SynthDemo.cs
├── FftDemo.cs
├── FilterDemo.cs
├── MfccDemo.cs
├── EffectDemo.cs
└── ContextDemo.cs      # GetRms、ParallelComputeFrom(MFCC)

FftDemo 与 ContextDemo 演示 ComputingContext / ComputingScope(FFT、RMS、并行 MFCC)。


DeepLearning_example — 深度学习

演示可微分训练栈:Sequential / BatchSequential + Trainer(XOR、批 XOR、CNN+MLP、MFCC 音频分类)、computingContext 参数、ModelSerializer v3 往返、以及 MlpRegressor(DeepLearning.Training)曲线拟合 (y=x^2)。

命令行用法

dotnet run --project Examples/DeepLearning_example
dotnet run --project Examples/DeepLearning_example -- xor
dotnet run --project Examples/DeepLearning_example -- classify
dotnet run --project Examples/DeepLearning_example -- batch
dotnet run --project Examples/DeepLearning_example -- cnn
dotnet run --project Examples/DeepLearning_example -- audio
dotnet run --project Examples/DeepLearning_example -- serialize
dotnet run --project Examples/DeepLearning_example -- curvefit
dotnet run --project Examples/DeepLearning_example -- help
命令 要点
batch FitBatched + ComputingContext.Parallel
cnn CnnMlpModel + FitCnnMlp(4×4 左右图案)
audio AudioTrainingSamples.FeatureMeanClassification + FitBatchSequential

代码结构

Examples/DeepLearning_example/
├── Program.cs
├── XorDemo.cs
├── ClassifyDemo.cs
├── BatchTrainDemo.cs
├── CnnMlpDemo.cs
├── AudioClassifyDemo.cs
├── SerializeDemo.cs
└── CurveFitDemo.cs

Calculus_example — 微积分

演示数值积分(梯形 / Romberg / Gauss-Legendre)、导数与梯度、RK4 解 ODE、Newton/Brent 求根,以及 Taylor / Fourier 级数。

命令行用法

dotnet run --project Examples/Calculus_example
dotnet run --project Examples/Calculus_example -- integrate
dotnet run --project Examples/Calculus_example -- derivative
dotnet run --project Examples/Calculus_example -- ode
dotnet run --project Examples/Calculus_example -- root
dotnet run --project Examples/Calculus_example -- series
dotnet run --project Examples/Calculus_example -- help

代码结构

Examples/Calculus_example/
├── Program.cs
├── IntegrationDemo.cs
├── DerivativeDemo.cs
├── OdeDemo.cs
├── RootFindingDemo.cs
└── SeriesDemo.cs

Language / 语言: English · 简体中文


Home


首页

Clone this wiki locally