我使用 YOLOv5s 在自定义数据集上进行对象检测,给定视频中有多个对象,有时标签文本和边界框厚度看起来非常糟糕。我如何定制这些东西?
使用
detect.py
时,传入以下参数来调整标签和边界框:
--line-thickness 1
--hide-labels True
--hide-conf True
对于
--line-thickness
参数,传入一个整数值来调整厚度,对于标签和置信度,它们默认设置为False
。将它们设置为 True
将隐藏它们。
请小心使用
--hide-labels True
或 hide-conf True
。 --hide-labels
和 --hide-conf
应该可以完美工作。detect.py
一起使用的参数列表。 detect.py [-h] [--weights WEIGHTS [WEIGHTS ...]] [--source SOURCE]
[--data DATA] [--imgsz IMGSZ [IMGSZ ...]]
[--conf-thres CONF_THRES] [--iou-thres IOU_THRES]
[--max-det MAX_DET] [--device DEVICE] [--view-img]
[--save-txt] [--save-conf] [--save-crop] [--nosave]
[--classes CLASSES [CLASSES ...]] [--agnostic-nms]
[--augment] [--visualize] [--update] [--project PROJECT]
[--name NAME] [--exist-ok] [--line-thickness LINE_THICKNESS]
[--hide-labels] [--hide-conf] [--half] [--dnn]
在 detector.py 文件中,您可以看到有一个名为 run 的函数,您可以在其中操作检测结果
def run(
weights=ROOT / 'yolov5s.pt', # model path or triton URL
source=ROOT / 'data/images', # file/dir/URL/glob/screen/0(webcam)
data=ROOT / 'data/coco128.yaml', # dataset.yaml path
imgsz=(640, 640), # inference size (height, width)
conf_thres=0.25, # confidence threshold
iou_thres=0.45, # NMS IOU threshold
max_det=1000, # maximum detections per image
device='', # cuda device, i.e. 0 or 0,1,2,3 or cpu
view_img=False, # show results
save_txt=False, # save results to *.txt
save_conf=False, # save confidences in --save-txt labels
save_crop=False, # save cropped prediction boxes
nosave=False, # do not save images/videos
classes=None, # filter by class: --class 0, or --class 0 2 3
agnostic_nms=False, # class-agnostic NMS
augment=False, # augmented inference
visualize=False, # visualize features
update=False, # update all models
project=ROOT / 'runs/detect', # save results to project/name
name='exp', # save results to project/name
exist_ok=False, # existing project/name ok, do not increment
line_thickness=3, # bounding box thickness (pixels)
hide_labels=False, # hide labels
hide_conf=False, # hide confidences
half=False, # use FP16 half-precision inference
dnn=False, # use OpenCV DNN for ONNX inference
vid_stride=1, # video frame-rate stride
):
现在您可以在此处调整线条粗细
line_thickness=3
在 def parse_opt() 内的 detector.py 文件中,我在这行代码中更改了 line_thickness=1(默认为 3) parser.add_argument("--line-thickness", default=1, type=int, help= “边界框厚度(像素)”)。它对我有用。
def parse_opt(): 解析器 = argparse.ArgumentParser() parser.add_argument("--weights", nargs="+", type=str, default=ROOT / "yolov5s.pt", help="模型路径或 triton URL") parser.add_argument("--source", type=str, default=ROOT / "data/images", help="file/dir/URL/glob/screen/0(webcam)") parser.add_argument("--data", type=str, default=ROOT / "data/coco128.yaml", help="(可选) dataset.yaml 路径") parser.add_argument("--imgsz", "--img", "--img-size", nargs="+", type=int, default=[640], help="推断大小 h,w") parser.add_argument("--conf-thres", type=float, default=0.25, help="置信阈值") parser.add_argument("--iou-thres", type=float, default=0.45, help="NMS IoU 阈值") parser.add_argument("--max-det", type=int, default=1000, help="每个图像的最大检测数") parser.add_argument("--device", default="", help="cuda 设备,即 0 或 0,1,2,3 或 cpu") parser.add_argument("--view-img", action="store_true", help="显示结果") parser.add_argument("--save-txt", action="store_true", help="将结果保存到 *.txt") parser.add_argument("--save-csv", action="store_true", help="以 CSV 格式保存结果") parser.add_argument("--save-conf", action="store_true", help="保存 --save-txt 标签中的置信度") parser.add_argument("--save-crop", action="store_true", help="保存裁剪后的预测框") parser.add_argument("--nosave", action="store_true", help="不保存图像/视频") parser.add_argument("--classes", nargs="+", type=int, help="按类过滤:--classes 0, 或 --classes 0 2 3") parser.add_argument("--agnostic-nms", action="store_true", help="class-agnostic NMS") parser.add_argument("--augment", action="store_true", help="增强推理") parser.add_argument("--visualize", action="store_true", help="可视化功能") parser.add_argument("--update", action="store_true", help="更新所有模型") parser.add_argument(“--project”,默认= ROOT /“运行/检测”,help =“将结果保存到项目/名称”) parser.add_argument("--name", default="exp", help="将结果保存到项目/名称") parser.add_argument("--exist-ok", action="store_true", help="现有项目/名称可以,不要增加") parser.add_argument("--line-thickness", default=1, type=int, help="边界框厚度(像素)") parser.add_argument("--hide-labels", default=False, action="store_true", help="隐藏标签") parser.add_argument("--hide-conf", default=False, action="store_true", help="隐藏机密") parser.add_argument("--half", action="store_true", help="使用 FP16 半精度推理") parser.add_argument("--dnn", action="store_true", help="使用 OpenCV DNN 进行 ONNX 推理") parser.add_argument("--vid-stride", type=int, default=1, help="视频帧率步幅") opt = parser.parse_args() opt.imgsz *= 2 if len(opt.imgsz) == 1 else 1 # 展开 print_args(变量(选择)) 返回选择