yolo7实现遥感目标检测

使用开源yolo7简单实现了一下SAR图像的目标检测。
开源yolo7项目:https://github.com/WongKinYiu/yolov7

设置训练数据集

修改/data/coco.yaml文件

train: E:/Project/Python_Prj/yolov7-main/data/MSTAR/images/train
val: E:/Project/Python_Prj/yolov7-main/data/MSTAR/images/val  
test: E:/Project/Python_Prj/yolov7-main/data/MSTAR/images/val 

# number of classes
#nc: 8
nc: 10

# class names
#names: [ 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light',
#         'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow',
#         'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee',
#         'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard',
#         'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple',
#         'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch',
#         'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone',
#         'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear',
#         'hair drier', 'toothbrush' ]

#names: [ 'ship' ]

names: ['0','1','2','3','4','5','6','7','8','9' ]

在train.py文件设置数据集

parser.add_argument('--data', type=str, default='data/coco.yaml', help='data.yaml path')

断点续训

'''
resume

1.【train.py】【--resume】default【True】 or [--resume] default path : python train.py --resume runs/train/exp/weights/last.pt
2.ckpt['epoch'] = last epoch
3.[--hyp] default - hyp.yaml : parser.add_argument('--hyp', type=str, default='project/train/models/train/exp/hyp.yaml', help='hyperparameters path')

'''
        # Epochs
        ckpt['epoch'] = 300 # ------
        start_epoch = ckpt['epoch'] + 1
        if opt.resume:
            assert start_epoch > 0, '%s training to %g epochs is finished, nothing to resume.' % (weights, epochs)
        if epochs < start_epoch:
            logger.info('%s has been trained for %g epochs. Fine-tuning for %g additional epochs.' %
                        (weights, ckpt['epoch'], epochs))
            epochs += ckpt['epoch']  # finetune additional epochs

        del ckpt, state_dict
    parser.add_argument('--weights', type=str, default='yolov7x.pt', help='initial weights path')
    # parser.add_argument('--weights', type=str, default='./runs/MSTAR/train/exp8/weights/epoch_399.pt', help='initial weights path')
    parser.add_argument('--cfg', type=str, default='', help='model.yaml path')
    parser.add_argument('--data', type=str, default='data/coco.yaml', help='data.yaml path')
    # parser.add_argument('--hyp', type=str, default='data/hyp.scratch.p5.yaml', help='hyperparameters path')
    parser.add_argument('--hyp', type=str, default='./runs/MSTAR/train/epx9/hyp.yaml', help='hyperparameters path')
    parser.add_argument('--epochs', type=int, default=900)
    parser.add_argument('--batch-size', type=int, default=2, help='total batch size for all GPUs')
    parser.add_argument('--img-size', nargs='+', type=int, default=[640, 640], help='[train, test] image sizes')
    parser.add_argument('--rect', action='store_true', help='rectangular training')
    # parser.add_argument('--resume', nargs='?', const=True, default=False, help='resume most recent training')
    parser.add_argument('--resume', nargs='?', const=True, default=True, help='resume most recent training')
    # parser.add_argument('--resume', nargs='?', const=True, default='./runs/MSTAR/train/exp8/weights/last.pt', help='resume most recent training')

训练结果

在runs/train文件夹下
在这里插入图片描述

测试结果

 	parser = argparse.ArgumentParser(prog='test.py')
    # parser.add_argument('--weights', nargs='+', type=str, default='./runs/train/exp15/weights/best.pt', help='model.pt path(s)')
    parser.add_argument('--weights', nargs='+', type=str, default='./runs/MSTAR/train/exp9/weights/best.pt', help='model.pt path(s)')
    parser.add_argument('--data', type=str, default='data/coco.yaml', help='*.data path')

在这里插入图片描述
在这里插入图片描述

使用detec检测

    # parser.add_argument('--weights', nargs='+', type=str, default='./runs/train/exp15/weights/best.pt', help='model.pt path(s)')
    parser.add_argument('--weights', nargs='+', type=str, default='./runs/MSTAR/train/exp9/weights/best.pt', help='model.pt path(s)')
    # parser.add_argument('--source', type=str, default='001036.jpg', help='source')  # file/folder, 0 for webcam
    parser.add_argument('--source', type=str, default='./data/MSTAR/images/val/', help='source')  # file/folder, 0 for webcam

猜你喜欢

转载自blog.csdn.net/cbx0916/article/details/130610553