Files
OrpaonVision/OrpaonVision.Model/Training/TrainingModelModel.cs
2026-04-06 22:04:05 +08:00

346 lines
6.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
namespace OrpaonVision.Model.Training;
/// <summary>
/// 训练模型模型。
/// </summary>
public sealed class TrainingModelModel
{
/// <summary>
/// 模型ID。
/// </summary>
public Guid Id { get; set; }
/// <summary>
/// 模型名称。
/// </summary>
public string Name { get; set; } = string.Empty;
/// <summary>
/// 模型描述。
/// </summary>
public string? Description { get; set; }
/// <summary>
/// 模型类型。
/// </summary>
public string ModelType { get; set; } = string.Empty;
/// <summary>
/// 模型架构。
/// </summary>
public string Architecture { get; set; } = string.Empty;
/// <summary>
/// 模型版本。
/// </summary>
public string Version { get; set; } = string.Empty;
/// <summary>
/// 模型状态。
/// </summary>
public ModelStatus Status { get; set; }
/// <summary>
/// 模型路径。
/// </summary>
public string ModelPath { get; set; } = string.Empty;
/// <summary>
/// 权重文件路径。
/// </summary>
public string? WeightsPath { get; set; }
/// <summary>
/// 配置文件路径。
/// </summary>
public string? ConfigPath { get; set; }
/// <summary>
/// 标签文件路径。
/// </summary>
public string? LabelsPath { get; set; }
/// <summary>
/// 输入尺寸。
/// </summary>
public (int Width, int Height) InputSize { get; set; }
/// <summary>
/// 类别数量。
/// </summary>
public int ClassCount { get; set; }
/// <summary>
/// 类别名称列表。
/// </summary>
public string ClassNamesJson { get; set; } = string.Empty;
/// <summary>
/// 模型大小(字节)。
/// </summary>
public long ModelSize { get; set; }
/// <summary>
/// 训练任务ID。
/// </summary>
public Guid TrainingTaskId { get; set; }
/// <summary>
/// 基础模型ID。
/// </summary>
public Guid? BaseModelId { get; set; }
/// <summary>
/// 训练数据集ID。
/// </summary>
public Guid DatasetId { get; set; }
/// <summary>
/// 验证mAP。
/// </summary>
public double ValidationMap { get; set; }
/// <summary>
/// 验证损失。
/// </summary>
public double ValidationLoss { get; set; }
/// <summary>
/// 测试mAP。
/// </summary>
public double TestMap { get; set; }
/// <summary>
/// 测试损失。
/// </summary>
public double TestLoss { get; set; }
/// <summary>
/// 推理速度FPS
/// </summary>
public double InferenceFps { get; set; }
/// <summary>
/// 模型精度JSON。
/// </summary>
public string? AccuracyMetricsJson { get; set; }
/// <summary>
/// 训练历史JSON。
/// </summary>
public string? TrainingHistoryJson { get; set; }
/// <summary>
/// 是否已部署。
/// </summary>
public bool IsDeployed { get; set; }
/// <summary>
/// 部署时间UTC
/// </summary>
public DateTime? DeployedAtUtc { get; set; }
/// <summary>
/// 部署人。
/// </summary>
public string? DeployedBy { get; set; }
/// <summary>
/// 是否为当前版本。
/// </summary>
public bool IsCurrentVersion { get; set; }
/// <summary>
/// 创建人ID。
/// </summary>
public Guid CreatedById { get; set; }
/// <summary>
/// 创建人姓名。
/// </summary>
public string CreatedByName { get; set; } = string.Empty;
/// <summary>
/// 创建时间UTC
/// </summary>
public DateTime CreatedAtUtc { get; set; }
/// <summary>
/// 更新时间UTC
/// </summary>
public DateTime UpdatedAtUtc { get; set; }
/// <summary>
/// 创建人。
/// </summary>
public string CreatedBy { get; set; } = string.Empty;
/// <summary>
/// 更新人。
/// </summary>
public string UpdatedBy { get; set; } = string.Empty;
/// <summary>
/// 备注。
/// </summary>
public string? Remark { get; set; }
}
/// <summary>
/// 模型状态枚举。
/// </summary>
public enum ModelStatus
{
/// <summary>
/// 训练中。
/// </summary>
Training = 0,
/// <summary>
/// 已训练。
/// </summary>
Trained = 1,
/// <summary>
/// 验证中。
/// </summary>
Validating = 2,
/// <summary>
/// 已验证。
/// </summary>
Validated = 3,
/// <summary>
/// 验证失败。
/// </summary>
ValidationFailed = 4,
/// <summary>
/// 已发布。
/// </summary>
Published = 5,
/// <summary>
/// 已部署。
/// </summary>
Deployed = 6,
/// <summary>
/// 已停用。
/// </summary>
Disabled = 7,
/// <summary>
/// 已归档。
/// </summary>
Archived = 8
}
/// <summary>
/// 训练日志模型。
/// </summary>
public sealed class TrainingLogModel
{
/// <summary>
/// 日志ID。
/// </summary>
public Guid Id { get; set; }
/// <summary>
/// 训练任务ID。
/// </summary>
public Guid TrainingTaskId { get; set; }
/// <summary>
/// 轮次。
/// </summary>
public int Epoch { get; set; }
/// <summary>
/// 步骤。
/// </summary>
public int Step { get; set; }
/// <summary>
/// 日志级别。
/// </summary>
public LogLevel LogLevel { get; set; }
/// <summary>
/// 日志消息。
/// </summary>
public string Message { get; set; } = string.Empty;
/// <summary>
/// 训练损失。
/// </summary>
public double? TrainLoss { get; set; }
/// <summary>
/// 验证损失。
/// </summary>
public double? ValidationLoss { get; set; }
/// <summary>
/// 训练mAP。
/// </summary>
public double? TrainMap { get; set; }
/// <summary>
/// 验证mAP。
/// </summary>
public double? ValidationMap { get; set; }
/// <summary>
/// 学习率。
/// </summary>
public double? LearningRate { get; set; }
/// <summary>
/// 额外数据JSON。
/// </summary>
public string? ExtraDataJson { get; set; }
/// <summary>
/// 记录时间UTC
/// </summary>
public DateTime LoggedAtUtc { get; set; }
/// <summary>
/// 创建时间UTC
/// </summary>
public DateTime CreatedAtUtc { get; set; }
}
/// <summary>
/// 日志级别枚举。
/// </summary>
public enum LogLevel
{
/// <summary>
/// 调试。
/// </summary>
Debug = 0,
/// <summary>
/// 信息。
/// </summary>
Info = 1,
/// <summary>
/// 警告。
/// </summary>
Warning = 2,
/// <summary>
/// 错误。
/// </summary>
Error = 3,
/// <summary>
/// 致命错误。
/// </summary>
Fatal = 4
}