346 lines
6.8 KiB
C#
346 lines
6.8 KiB
C#
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
|
||
}
|