using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace yolov5_onnx.Mod { public class YoloCocoP5Model : YoloModel { public override int Width { get; set; } = 640; //輸入影像的寬度 public override int Height { get; set; } = 640; //輸入影像的高度 public override int Depth { get; set; } = 3; //輸入圖像的深度(通常為3,表示RGB影像) public override int Dimensions { get; set; } = 7; //類別數 通常維類別數+5 public override int[] Strides { get; set; } = new int[] { 8, 16, 32 }; //模型的步幅數組 public override int[][][] Anchors { get; set; } = new int[][][] { new int[][] { new int[] { 010, 13 }, new int[] { 016, 030 }, new int[] { 033, 023 } }, new int[][] { new int[] { 030, 61 }, new int[] { 062, 045 }, new int[] { 059, 119 } }, new int[][] { new int[] { 116, 90 }, new int[] { 156, 198 }, new int[] { 373, 326 } } }; // 锚點數組,用於目標回歸 public override int[] Shapes { get; set; } = new int[] { 80, 40, 20 }; //模型輸出的形狀數組 public override float Confidence { get; set; } = 0.6f; //預測信心度閾值 public override float MulConfidence { get; set; } = 0.25f; //用於多類別預測的信心度縮放因子 public override float Overlap { get; set; } = 0.3f; //重疊閾值,用於非級大值抑制(NMS) public override string[] Outputs { get; set; } = new[] { "output" }; //模型的輸出層名稱組數(P5為output,P6為output0) public override List Labels { get; set; } = new List() { new YoloLabel { Id = 1, Name = "weld bead"}, new YoloLabel { Id = 2, Name = "solder joint"}, //new YoloLabel { Id = 1, Name = "person" }, //new YoloLabel { Id = 2, Name = "bicycle" }, new YoloLabel { Id = 3, Name = "Point" }, new YoloLabel { Id = 4, Name = "Point" }, new YoloLabel { Id = 5, Name = "airplane" }, new YoloLabel { Id = 6, Name = "bus" }, new YoloLabel { Id = 7, Name = "train" }, new YoloLabel { Id = 8, Name = "truck" }, new YoloLabel { Id = 9, Name = "boat" }, new YoloLabel { Id = 10, Name = "Point" }, new YoloLabel { Id = 11, Name = "fire hydrant" }, new YoloLabel { Id = 12, Name = "stop sign" }, new YoloLabel { Id = 13, Name = "parking meter" }, new YoloLabel { Id = 14, Name = "bench" }, new YoloLabel { Id = 15, Name = "bird" }, new YoloLabel { Id = 16, Name = "cat" }, new YoloLabel { Id = 17, Name = "dog" }, new YoloLabel { Id = 18, Name = "horse" }, new YoloLabel { Id = 19, Name = "sheep" }, new YoloLabel { Id = 20, Name = "cow" }, new YoloLabel { Id = 21, Name = "elephant" }, new YoloLabel { Id = 22, Name = "bear" }, new YoloLabel { Id = 23, Name = "zebra" }, new YoloLabel { Id = 24, Name = "giraffe" }, new YoloLabel { Id = 25, Name = "backpack" }, new YoloLabel { Id = 26, Name = "umbrella" }, new YoloLabel { Id = 27, Name = "handbag" }, new YoloLabel { Id = 28, Name = "tie" }, new YoloLabel { Id = 29, Name = "suitcase" }, new YoloLabel { Id = 30, Name = "frisbee" }, new YoloLabel { Id = 31, Name = "skis" }, new YoloLabel { Id = 32, Name = "snowboard" }, new YoloLabel { Id = 33, Name = "sports ball" }, new YoloLabel { Id = 34, Name = "kite" }, new YoloLabel { Id = 35, Name = "baseball bat" }, new YoloLabel { Id = 36, Name = "baseball glove" }, new YoloLabel { Id = 37, Name = "skateboard" }, new YoloLabel { Id = 38, Name = "surfboard" }, new YoloLabel { Id = 39, Name = "tennis racket" }, new YoloLabel { Id = 40, Name = "bottle" }, new YoloLabel { Id = 41, Name = "wine glass" }, new YoloLabel { Id = 42, Name = "cup" }, new YoloLabel { Id = 43, Name = "fork" }, new YoloLabel { Id = 44, Name = "knife" }, new YoloLabel { Id = 45, Name = "spoon" }, new YoloLabel { Id = 46, Name = "bowl" }, new YoloLabel { Id = 47, Name = "banana" }, new YoloLabel { Id = 48, Name = "apple" }, new YoloLabel { Id = 49, Name = "sandwich" }, new YoloLabel { Id = 50, Name = "orange" }, new YoloLabel { Id = 51, Name = "broccoli" }, new YoloLabel { Id = 52, Name = "carrot" }, new YoloLabel { Id = 53, Name = "hot dog" }, new YoloLabel { Id = 54, Name = "pizza" }, new YoloLabel { Id = 55, Name = "donut" }, new YoloLabel { Id = 56, Name = "cake" }, new YoloLabel { Id = 57, Name = "chair" }, new YoloLabel { Id = 58, Name = "couch" }, new YoloLabel { Id = 59, Name = "potted plant" }, new YoloLabel { Id = 60, Name = "bed" }, new YoloLabel { Id = 61, Name = "dining table" }, new YoloLabel { Id = 62, Name = "toilet" }, new YoloLabel { Id = 63, Name = "tv" }, new YoloLabel { Id = 64, Name = "laptop" }, new YoloLabel { Id = 65, Name = "mouse" }, new YoloLabel { Id = 66, Name = "remote" }, new YoloLabel { Id = 67, Name = "keyboard" }, new YoloLabel { Id = 68, Name = "cell phone" }, new YoloLabel { Id = 69, Name = "microwave" }, new YoloLabel { Id = 70, Name = "oven" }, new YoloLabel { Id = 71, Name = "toaster" }, new YoloLabel { Id = 72, Name = "sink" }, new YoloLabel { Id = 73, Name = "refrigerator" }, new YoloLabel { Id = 74, Name = "book" }, new YoloLabel { Id = 75, Name = "clock" }, new YoloLabel { Id = 76, Name = "vase" }, new YoloLabel { Id = 77, Name = "scissors" }, new YoloLabel { Id = 78, Name = "teddy bear" }, new YoloLabel { Id = 79, Name = "hair drier" }, new YoloLabel { Id = 80, Name = "toothbrush" } }; public override bool UseDetect { get; set; } = true; //是否使用對象檢測功能 public YoloCocoP5Model() { } } }