写论文做消融实验的时候,间隔期可能浪费时间。

根目录下新建一个文件mytrain.py

from ultralytics import YOLO

if __name__ == '__main__':
'''
    如果是3个模块(A, B, C)要进行测试,排列组合数是3+2+1=7次实验+1次baseline=8次
    如果考虑模块插入部位的变化,组合数剧增。
'''
#TODO 实验0:baseline
    model = YOLO('yolov8s.yaml')
    model.train(data='mydataset.yaml', epochs=300, imgsz=640, batch=16, workers=0, pretrained=False, save_dir=runs\detect\yolov8s)

#TODO 实验1:+module1
    model = YOLO('yolov8s+module1.yaml')
    model.train(data='mydataset.yaml', epochs=300, imgsz=640, batch=16, workers=0, pretrained=False, save_dir=runs\detect\yolov8s+module1)

#TODO 实验2:+module2
    model = YOLO('yolov8s+module2.yaml')
    model.train(data='mydataset.yaml', epochs=300, imgsz=640, batch=16, workers=0, pretrained=False, save_dir=runs\detect\yolov8s+module2)

#TODO 实验3:+module3
    model = YOLO('yolov8s+module3.yaml')
    model.train(data='mydataset.yaml', epochs=300, imgsz=640, batch=16, workers=0, pretrained=False, save_dir=runs\detect\yolov8s+module3)

#TODO 实验4:+module1+module2
    model = YOLO('yolov8s+module1+module2.yaml')
    model.train(data='mydataset.yaml', epochs=300, imgsz=640, batch=16, workers=0, pretrained=False, save_dir=runs\detect\yolov8s+module1+module2)

#TODO 实验5:+module1+module3
    model = YOLO('yolov8s+module1+module3.yaml')
    model.train(data='mydataset.yaml', epochs=300, imgsz=640, batch=16, workers=0, pretrained=False, save_dir=runs\detect\yolov8s+module1+module3)

#TODO 实验6:+module2+module3
    model = YOLO('yolov8s+module2+module3.yaml')
    model.train(data='mydataset.yaml', epochs=300, imgsz=640, batch=16, workers=0, pretrained=False, save_dir=runs\detect\yolov8s+module2+module3)

#TODO 实验7:+module1+module2+module3
    model = YOLO('yolov8s+module1+module2+module3.yaml')
    model.train(data='mydataset.yaml', epochs=300, imgsz=640, batch=16, workers=0, pretrained=False, save_dir=runs\detect\yolov8s+module1+module2+module3)

运行后可以自动依次往下执行,如果中间某个yaml文件配置出错,就会中断,所有最好提前全部测试一遍,保证无人值守的情况下顺利执行全部实验。算一算每个epoch的所需时间,就可以估计几天后再见了!

于是先把model.train()注释掉。

from ultralytics import YOLO

if __name__ == '__main__':
'''
    如果是3个模块(A, B, C)要进行测试,排列组合数是3+2+1=7次实验+1次baseline=8次
    如果考虑模块插入部位的变化,组合数剧增。
'''
#TODO 实验0:baseline
    model = YOLO('yolov8s.yaml')
    # model.train(data='mydataset.yaml', epochs=300, imgsz=640, batch=16, workers=0, pretrained=False, save_dir=runs\detect\yolov8s)

#TODO 实验1:+module1
    model = YOLO('yolov8s+module1.yaml')
    # model.train(data='mydataset.yaml', epochs=300, imgsz=640, batch=16, workers=0, pretrained=False, save_dir=runs\detect\yolov8s+module1)

#TODO 实验2:+module2
    model = YOLO('yolov8s+module2.yaml')
    # model.train(data='mydataset.yaml', epochs=300, imgsz=640, batch=16, workers=0, pretrained=False, save_dir=runs\detect\yolov8s+module2)

#TODO 实验3:+module3
    model = YOLO('yolov8s+module2.yaml')
    # model.train(data='mydataset.yaml', epochs=300, imgsz=640, batch=16, workers=0, pretrained=False, save_dir=runs\detect\yolov8s+module3)

#TODO 实验4:+module1+module2
    model = YOLO('yolov8s+module1+module2.yaml')
    # model.train(data='mydataset.yaml', epochs=300, imgsz=640, batch=16, workers=0, pretrained=False, save_dir=runs\detect\yolov8s+module1+module2)

#TODO 实验5:+module1+module3
    model = YOLO('yolov8s+module1+module3.yaml')
    # model.train(data='mydataset.yaml', epochs=300, imgsz=640, batch=16, workers=0, pretrained=False, save_dir=runs\detect\yolov8s+module1+module3)

#TODO 实验6:+module2+module3
    model = YOLO('yolov8s+module2+module3.yaml')
    # model.train(data='mydataset.yaml', epochs=300, imgsz=640, batch=16, workers=0, pretrained=False, save_dir=runs\detect\yolov8s+module2+module3)

#TODO 实验7:+module1+module2+module3
    model = YOLO('yolov8s+module1+module2+module3.yaml')
    # model.train(data='mydataset.yaml', epochs=300, imgsz=640, batch=16, workers=0, pretrained=False, save_dir=runs\detect\yolov8s+module1+module2+module3)

训练结束之后,再批量验证一下

from ultralytics import YOLO

if __name__ == '__main__':

    model = YOLO('yolov8s.yaml').load('runs/detect/yolov8s/weights/best.pt')
    model.val(split='test',data='mydataset.yaml', imgsz=640, batch=1)

    model = YOLO('yolov8s+module1.yaml').load('runs/detect/yolov8s+module1/weights/best.pt')
    model.val(split='test',data='mydataset.yaml', imgsz=640, batch=1)

    model = YOLO('yolov8s+module2.yaml').load('runs/detect/yolov8s+module2/weights/best.pt')
    model.val(split='test',data='mydataset.yaml', imgsz=640, batch=1)

    model = YOLO('yolov8s+module3.yaml').load('runs/detect/yolov8s+module3/weights/best.pt')
    model.val(split='test',data='mydataset.yaml', imgsz=640, batch=1)

    model = YOLO('yolov8s+module1+module2.yaml').load('runs/detect/yolov8s+module1+module2/weights/best.pt')
    model.val(split='test',data='mydataset.yaml', imgsz=640, batch=1)

    model = YOLO('yolov8s+module1+module3.yaml').load('runs/detect/yolov8s+module1+module3/weights/best.pt')
    model.val(split='test',data='mydataset.yaml', imgsz=640, batch=1)

    model = YOLO('yolov8s+module2+module3.yaml').load('runs/detect/yolov8s+module2+module3/weights/best.pt')
    model.val(split='test',data='mydataset.yaml', imgsz=640, batch=1)

    model = YOLO('yolov8s+module1+module2+module3.yaml').load('runs/detect/yolov8s+module1+module2+module3/weights/best.pt')
    model.val(split='test',data='mydataset.yaml', imgsz=640, batch=1)

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐