YOLOv5 5.0 detect.py
if __name__ == '__main__':
parser = argparse.ArgumentParser()
# 下载好的网络模型,下载下来可以用它实现检测
parser.add_argument('--weights', nargs='+', type=str, default='yolov5s.pt', help='model.pt path(s)')
# 给网络指定一个输入文件夹 default是个文件夹时,会对文件夹下所有图形进行检测
parser.add_argument('--source', type=str, default='data/videos/3mouths.mp4', help='source') # file/folder, 0 for webcam
# 送到网络过程中会对输入图片进行缩放至所需尺寸,图片处理完会恢复原始尺寸
parser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)')
# 置信度,只有一个区域目标检测置信度>0.25时才会检测出是一个物体(阈值设定),根据实际应用结果调整
parser.add_argument('--conf-thres', type=float, default=0.25, help='object confidence threshold')
# 当两个框重合时,大于所设置的iou阈值,才会在两个框中选取一个合适的框
parser.add_argument('--iou-thres', type=float, default=0.45, help='IOU threshold for NMS')
# 设备:默认为空
parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
# action="某一特定动作",默认为False,启用时,edit configurations --> parameters中设置
parser.add_argument('--view-img', action='store_true', help='display results')
parser.add_argument('--save-txt', action='store_true', help='save results to *.txt')
# 保存置信度
parser.add_argument('--save-conf', action='store_true', help='save confidences in --save-txt labels')
# 不要保存图片/视频
parser.add_argument('--nosave', action='store_true', help='do not save images/videos')
# 给class多个赋值 0代表人的话 --classes=0,即只检测人的部分
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')
# 结果保存的位置
parser.add_argument('--project', default='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')
# 所有参数都会被放进opt当中
opt = parser.parse_args()
print(opt)
check_requirements(exclude=('pycocotools', 'thop'))
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()
strip_optimizer(opt.weights)
else:
detect()
关于IOU的计算:
结果:
yolov5s.pt
yolov5x.pt (可以明显看出x比s置信度更高)