133 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using Check.Main.Common;
 | ||
| using System;
 | ||
| using System.Collections.Generic;
 | ||
| using System.ComponentModel;
 | ||
| using System.Linq;
 | ||
| using System.Runtime.CompilerServices;
 | ||
| using System.Runtime.Serialization;
 | ||
| using System.Text;
 | ||
| using System.Threading.Tasks;
 | ||
| 
 | ||
| namespace Check.Main.Infer
 | ||
| {
 | ||
|     public enum DetectDevice
 | ||
|     {
 | ||
|         [Description("CPU")]
 | ||
|         CPU = 0,
 | ||
| 
 | ||
|         [Description("GPU")]
 | ||
|         GPU,
 | ||
| 
 | ||
|         //[Description("VPU")]
 | ||
|         //VPU,
 | ||
|     }
 | ||
|     public enum AlgorithmType
 | ||
|     {
 | ||
|         [Description("传统算法")]
 | ||
|         Tradition = 0,
 | ||
| 
 | ||
|         [Description("深度学习")]
 | ||
|         DeepLearning,
 | ||
|     }
 | ||
|     public enum CheckModelType
 | ||
|     {
 | ||
|         [Description("分类")]
 | ||
|         Classification,
 | ||
| 
 | ||
|         [Description("检测")]
 | ||
|         ObjectDetection,
 | ||
| 
 | ||
|         [Description("OBB")]
 | ||
|         ObbDetection,
 | ||
| 
 | ||
|         [Description("分割")]
 | ||
|         Segmentation,
 | ||
| 
 | ||
|         [Description("位姿")]
 | ||
|         PoseEstimation
 | ||
|     }
 | ||
| 
 | ||
|     [Serializable] // 确保可被XML序列化
 | ||
|     public class ModelSettings : INotifyPropertyChanged, ICloneable
 | ||
|     {
 | ||
|         public event PropertyChangedEventHandler PropertyChanged;
 | ||
| 
 | ||
|         private int _id;
 | ||
|         private string _name = "New Model";
 | ||
|         private string _path = "";
 | ||
|         private DetectDevice _checkDevice=DetectDevice.CPU;
 | ||
|         private AlgorithmType _mAType = AlgorithmType.Tradition;
 | ||
|         private CheckModelType _mType = CheckModelType.Classification;
 | ||
|         private bool _isEnabled = true;
 | ||
| 
 | ||
|         [Category("基本信息"), DisplayName("模型编号"), Description("模型的唯一标识符,用于与相机编号对应。")]
 | ||
|         public int Id
 | ||
|         {
 | ||
|             get => _id;
 | ||
|             set { if (_id != value) { _id = value; OnPropertyChanged(); } }
 | ||
|         }
 | ||
| 
 | ||
|         [Category("基本信息"), DisplayName("模型名称"), Description("给模型起一个易于识别的别名。")]
 | ||
|         public string Name
 | ||
|         {
 | ||
|             get => _name;
 | ||
|             set { if (_name != value) { _name = value; OnPropertyChanged(); } }
 | ||
|         }
 | ||
|         [Category("基本信息"), DisplayName("推理设备"), Description("推理模型的设备。")]
 | ||
|         [TypeConverter(typeof(EnumDescriptionTypeConverter))]
 | ||
|         public DetectDevice CheckDevice
 | ||
|         {
 | ||
|             get => _checkDevice;
 | ||
|             set { if (_checkDevice != value) { _checkDevice = value; OnPropertyChanged(); } }
 | ||
|         }
 | ||
| 
 | ||
|         [Category("基本信息"), DisplayName("算法类型"), Description("所使用的算法的类型。")]
 | ||
|         [TypeConverter(typeof(EnumDescriptionTypeConverter))]
 | ||
|         public AlgorithmType M_AType
 | ||
|         {
 | ||
|             get => _mAType;
 | ||
|             set { if (_mAType != value) { _mAType = value; OnPropertyChanged(); } }
 | ||
|         }
 | ||
|         [Category("基本信息"), DisplayName("模型类型"), Description("推理模型的类型。")]
 | ||
|         [TypeConverter(typeof(EnumDescriptionTypeConverter))]
 | ||
|         public CheckModelType MType
 | ||
|         {
 | ||
|             get => _mType;
 | ||
|             set { if (_mType != value) { _mType = value; OnPropertyChanged(); } }
 | ||
|         }
 | ||
| 
 | ||
|         [Category("基本信息"), DisplayName("是否启用"), Description("是否在程序启动时是否启用模型")]
 | ||
|         public bool IsEnabled
 | ||
|         {
 | ||
|             get => _isEnabled;
 | ||
|             set
 | ||
|             {
 | ||
|                 if (_isEnabled != value)
 | ||
|                 {
 | ||
|                     _isEnabled = value;
 | ||
|                     OnPropertyChanged();
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         [Category("文件"), DisplayName("模型路径"), Description("选择模型文件(.onnx, .bin, etc., .pt)。")]
 | ||
|         [Editor(typeof(System.Windows.Forms.Design.FileNameEditor), typeof(System.Drawing.Design.UITypeEditor))]
 | ||
|         public string Path
 | ||
|         {
 | ||
|             get => _path;
 | ||
|             set { if (_path != value) { _path = value; OnPropertyChanged(); } }
 | ||
|         }
 | ||
| 
 | ||
|         protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
 | ||
|         {
 | ||
|             PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
 | ||
|         }
 | ||
| 
 | ||
|         public object Clone()
 | ||
|         {
 | ||
|             return this.MemberwiseClone(); // 浅克隆对于这个类足够了
 | ||
|         }
 | ||
| 
 | ||
|     }
 | ||
| }
 |