说明:模型的训练是在预训练权重的基础上(yolov5s.pt),由带口罩及不带口罩正负例各300例,进行训练,截取第39代时的最优结果。
如图所示,精度为0.975时,召回率为0.931,IOU为05时,mAP为0.961。
口罩检测有口罩时
探测时,在yolov5框架下参数设置为:
def parse_opt():
parser = argparse.ArgumentParser()
parser.add_argument('--weights', nargs='+', type=str, default= r'D:\yolov5-master\runs\train\exp4\weights\best.pt', help='model path(s)')
parser.add_argument('--source', type=str, default=0, help='file/dir/URL/glob, 0 for webcam')
parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='(optional) dataset.yaml path')
parser.add_argument('--imgsz', '--img', '--img-size', nargs='+', type=int, default=[640], help='inference size h,w')
#置信度,大于此值才是物体
parser.add_argument('--conf-thres', type=float, default=0.75, help='confidence threshold')
#非极大值抑制,IOU为1时基本不舍弃任何框。
parser.add_argument('--iou-thres', type=float, default=0.2, help='NMS IoU threshold')
parser.add_argument('--max-det', type=int, default=10, help='maximum detections per image')
其余参数默认。
训练时,训练数据集的格式为:在yaml文件中,只需带有images路径,labels路径会由框架自动替换。
使用labelimage制作yolo格式数据集,其中labelimage可在资源处下载。
.yaml文件格式如下:
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ./ # dataset root dir
train: yolodata/images # train images (relative to 'path') 128 images
val: yolodata/images # val images (relative to 'path') 128 images
test: # test images (optional)
# Classes
nc: 2 # number of classes
names: ['noMask','hasMask'] # class names
训练好的模型在本人上传的资源处可下载。
检测效果如下图所示:
口罩检测无口罩时