commit b0b7e44c8e372f0853a676547a5265056147e0e1 Author: ninghongbin <2409766686@qq.com> Date: Fri Sep 26 09:55:46 2025 +0800 基础训练 diff --git a/REAMDE.md b/REAMDE.md new file mode 100644 index 0000000..e69de29 diff --git a/data.yaml b/data.yaml new file mode 100644 index 0000000..997d8f9 --- /dev/null +++ b/data.yaml @@ -0,0 +1,15 @@ +names: + 0: Abdomen + 1: Hips + 2: Chest + 3: vulva + 4: back + 5: penis + 6: Horror +path: D:\Train\data\images +test: +- test +train: +- train +val: +- val diff --git a/path.py b/path.py new file mode 100644 index 0000000..8c19ce5 --- /dev/null +++ b/path.py @@ -0,0 +1,21 @@ +from pathlib import Path + +import yaml + + +def update_data_yml_path(): + root_dir = Path(__file__).parent.absolute() + images_dir = root_dir / "data" / "images" + data_yml_path = root_dir / "data.yaml" + with open(data_yml_path, "r", encoding="utf-8") as f: + yaml_data = yaml.safe_load(f) + if yaml_data is None: + yaml_data = {} + yaml_data["path"] = str(images_dir.absolute()) + with open(data_yml_path, "w", encoding="utf-8") as f: + yaml.safe_dump( + yaml_data, + f, + allow_unicode=True, + default_flow_style=False + ) \ No newline at end of file diff --git a/train.py b/train.py new file mode 100644 index 0000000..fada77e --- /dev/null +++ b/train.py @@ -0,0 +1,30 @@ +import warnings +from path import update_data_yml_path +warnings.filterwarnings('ignore') +from ultralytics import YOLO + + +if __name__ == '__main__': + # 加载并设置配置文件数据集绝对路径 + update_data_yml_path() + # 加载模型配置文件 + model = YOLO(model=r'yolo11.yml') + # 加载预训练权重 + model.load(r'yolo11n.pt') + model.train( + data=r'data.yaml', + imgsz=640, + epochs=200, + batch=16, + workers=4, + close_mosaic=30, + device='0', + optimizer='SGD', + resume=False, + project='runs/train', + name='result', + single_cls=False, + cache=False + ) + + diff --git a/yolo11.yml b/yolo11.yml new file mode 100644 index 0000000..26a14ca --- /dev/null +++ b/yolo11.yml @@ -0,0 +1,50 @@ +# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license + +# Ultralytics YOLO11 object detection model with P3/8 - P5/32 outputs +# Model docs: https://docs.ultralytics.com/models/yolo11 +# Task docs: https://docs.ultralytics.com/tasks/detect + +# Parameters +nc: 80 # number of classes +scales: # model compound scaling constants, i.e. 'model=yolo11n.yaml' will call yolo11.yaml with scale 'n' + # [depth, width, max_channels] + n: [0.50, 0.25, 1024] # summary: 181 layers, 2624080 parameters, 2624064 gradients, 6.6 GFLOPs + s: [0.50, 0.50, 1024] # summary: 181 layers, 9458752 parameters, 9458736 gradients, 21.7 GFLOPs + m: [0.50, 1.00, 512] # summary: 231 layers, 20114688 parameters, 20114672 gradients, 68.5 GFLOPs + l: [1.00, 1.00, 512] # summary: 357 layers, 25372160 parameters, 25372144 gradients, 87.6 GFLOPs + x: [1.00, 1.50, 512] # summary: 357 layers, 56966176 parameters, 56966160 gradients, 196.0 GFLOPs + +# YOLO11n backbone +backbone: + # [from, repeats, module, args] + - [-1, 1, Conv, [64, 3, 2]] # 0-P1/2 + - [-1, 1, Conv, [128, 3, 2]] # 1-P2/4 + - [-1, 2, C3k2, [256, False, 0.25]] + - [-1, 1, Conv, [256, 3, 2]] # 3-P3/8 + - [-1, 2, C3k2, [512, False, 0.25]] + - [-1, 1, Conv, [512, 3, 2]] # 5-P4/16 + - [-1, 2, C3k2, [512, True]] + - [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32 + - [-1, 2, C3k2, [1024, True]] + - [-1, 1, SPPF, [1024, 5]] # 9 + - [-1, 2, C2PSA, [1024]] # 10 + +# YOLO11n head +head: + - [-1, 1, nn.Upsample, [None, 2, "nearest"]] + - [[-1, 6], 1, Concat, [1]] # cat backbone P4 + - [-1, 2, C3k2, [512, False]] # 13 + + - [-1, 1, nn.Upsample, [None, 2, "nearest"]] + - [[-1, 4], 1, Concat, [1]] # cat backbone P3 + - [-1, 2, C3k2, [256, False]] # 16 (P3/8-small) + + - [-1, 1, Conv, [256, 3, 2]] + - [[-1, 13], 1, Concat, [1]] # cat head P4 + - [-1, 2, C3k2, [512, False]] # 19 (P4/16-medium) + + - [-1, 1, Conv, [512, 3, 2]] + - [[-1, 10], 1, Concat, [1]] # cat head P5 + - [-1, 2, C3k2, [1024, True]] # 22 (P5/32-large) + + - [[16, 19, 22], 1, Detect, [nc]] # Detect(P3, P4, P5) \ No newline at end of file diff --git a/yolo11n.pt b/yolo11n.pt new file mode 100644 index 0000000..45b273b Binary files /dev/null and b/yolo11n.pt differ