yolov5检测代码detect.py参数注释及解析

参考了大佬的文章https://blog.csdn.net/Q1u1NG/article/details/108093525

参数及main函数解析

if __name__ == '__main__':
    """
    weights:训练的权重
    source:测试数据,可以是图片/视频路径,也可以是'0'(电脑自带摄像头),也可以是rtsp等视频流
    output:网络预测之后的图片/视频的保存路径
    img-size:网络输入图片大小
    conf-thres:置信度阈值(检测精度,作者是设置的0.25)
    iou-thres:做nms的iou阈值()
    device:设置设备
    view-img:是否展示预测之后的图片/视频,默认False
    save-txt:是否将预测的框坐标以txt文件形式保存,默认False
    classes:设置只保留某一部分类别,形如0或者0 2 3
    agnostic-nms:进行nms是否也去除不同类别之间的框,默认False
    augment:推理的时候进行多尺度,翻转等操作(TTA)推理
    update:如果为True,则对所有模型进行strip_optimizer操作,去除pt文件中的优化器等信息,默认为False
    """
    parser = argparse.ArgumentParser()
    parser.add_argument('--weights', nargs='+', type=str, default='', help='model.pt path(s)')
    parser.add_argument('--source', type=str, default='inference/images', help='source')  # file/folder, 0 for webcam
    parser.add_argument('--output', type=str, default='inference/output', help='output folder')  # output folder
    parser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)')
    parser.add_argument('--conf-thres', type=float, default=0.65, help='object confidence threshold')
    parser.add_argument('--iou-thres', type=float, default=0.5, help='IOU threshold for NMS')
    parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
    parser.add_argument('--view-img', action='store_true', help='display results')
    '''显示结果,可以实时看到检测效果。可以在pycharm右上角的detect部分更改参数以显示'''
    parser.add_argument('--save-txt', action='store_true', help='save results to *.txt')
    ''' save-txt:是否将预测的框坐标以txt文件形式保存,默认False
    parser.add_argument('--classes', nargs='+', type=int, help='filter by class: --class 0, or --class 0 2 3')
    parser.add_argument('--agnostic-nms', action='store_true', help='class-agnostic NMS')
    parser.add_argument('--augment', action='store_true', help='augmented inference')
    parser.add_argument('--update', action='store_true', help='update all models')
    opt = parser.parse_args()
    print(opt)

    with torch.no_grad():
        if opt.update:  # update all models (to fix SourceChangeWarning)
            for opt.weights in ['yolov5s.pt', 'yolov5m.pt', 'yolov5l.pt', 'yolov5x.pt']:
                detect()
                # 去除pt文件中的优化器等信息
                strip_optimizer(opt.weights)
        else:
            detect()


iou-thres:做nms的iou阈值()

这句代码的作用:从这些框框中选出最优最准确的框。
IoU 的全称为交并比(Intersection over Union),通过这个名称我们大概可以猜到 IoU 的计算方法。IoU 计算的是 “预测的边框” 和 “真实的边框” 的交集和并集的比值。yolov5检测代码detect.py参数注释及解析_第1张图片

情况1:default=1会出现很多的框重合

parser.add_argument('--iou-thres', type=float, default=1, help='IOU threshold for NMS')//default=1

yolov5检测代码detect.py参数注释及解析_第2张图片

情况2:default=0:,有交集的框都自动合并成一个框

parser.add_argument('--iou-thres', type=float, default=0, help='IOU threshold for NMS')//default=0

yolov5检测代码detect.py参数注释及解析_第3张图片

你可能感兴趣的:(深度学习,深度学习,计算机视觉,caffe)