def parse_opt():
"""Parses command-line arguments for YOLOv5 detection, setting inference options and model configurations."""
parser = argparse.ArgumentParser()
parser.add_argument("--weights", nargs="+", type=str, default=ROOT / "yolov5s.pt", help="model path or triton URL") #指定神经网络权重的路径
parser.add_argument("--source", type=str, default=ROOT / "data/images", help="source") #指定神经网络输入的路径
parser.add_argument("--data", type=str, default=ROOT / "data/coco128.yaml", help="source" ) #指定配置文件的路径,配置文件里面包含了下载路径和数据集
parser.add_argument("--imgsz", "--img", "--img-size", nargs="+", type=int, default=[640], help="inference size h,w") #设置resize的尺寸
parser.add_argument("--conf-thres", type=float, default=0, help="confidence threshold") #设置置信度阈值
parser.add_argument("--iou-thres", type=float, default=0.45, help="NMS IoU threshold") #设置IoU阈值,阈值越大每个对象得到的检测框越多
parser.add_argument("--max-det", type=int, default=1000, help="maximum detections per image") #设置一张图像中的最大检测数量
parser.add_argument("--device", default="", help="cuda device, i.e. 0 or 0,1,2,3 or cpu") #选择GPU/CPU
parser.add_argument("--view-img", action="store_true", help="show results") #是否实时显示检测结果
parser.add_argument("--save-txt", action="store_true", help="save results to *.txt") #是否把类别信息和边界框信息保存成txt文件
parser.add_argument("--save-csv", action="store_true", help="save results in CSV format") #是否把类别信息和边界框信息保存成csv文件
parser.add_argument("--save-conf", action="store_true", help="save confidences in --save-txt labels") #是否把目标的置信度存为txt文件
parser.add_argument("--save-crop", action="store_true", help="save cropped prediction boxes") #是否把检测到的目标裁剪下来
parser.add_argument("--nosave", action="store_true", help="do not save images/videos") #只生成exp文件,但不保存预测结果
parser.add_argument("--classes", nargs="+", type=int, help="filter by class: --classes 0, or --classes 0 2 3") #指定检测的类别
parser.add_argument("--agnostic-nms", action="store_true", help="class-agnostic NMS") #跨类别NMS
parser.add_argument("--augment", action="store_true", help="augmented inference") #增强推理
parser.add_argument("--visualize", action="store_true", help="visualize features") #是否保存特征图
parser.add_argument("--update", action="store_true", help="update all models") #用于在模型训练的最后阶段去除优化器信息,以减小模型文件的大小,并将模型准备好用于推断或其他目的
parser.add_argument("--project", default=ROOT / "runs/detect", help="save results to project/name") #预测结果保存的路径
parser.add_argument("--name", default="exp", help="save results to project/name") #设置预测结果保存的文件夹的名字
parser.add_argument("--exist-ok", action="store_true", help="existing project/name ok, do not increment") #指定这个参数则本次预测的结果还是保存在上一次保存的文件夹里,否则每次预测结果新建文件夹
parser.add_argument("--line-thickness", default=3, type=int, help="bounding box thickness (pixels)") #调节预测框粗细
parser.add_argument("--hide-labels", default=False, action="store_true", help="hide labels") #是否隐藏预测框上的标签及置信度
parser.add_argument("--hide-conf", default=False, action="store_true", help="hide confidences") #是否隐藏置信度
parser.add_argument("--half", action="store_true", help="use FP16 half-precision inference") #是否使用半精度推理
parser.add_argument("--dnn", action="store_true", help="use OpenCV DNN for ONNX inference") #是否使用OpenCV DNN进行ONNX推理
parser.add_argument("--vid-stride", type=int, default=1, help="video frame-rate stride") #控制视频的帧率
opt = parser.parse_args()
opt.imgsz *= 2 if len(opt.imgsz) == 1 else 1 # expand
print_args(vars(opt))
return opt