• 毕业设计-基于机器视觉的口罩佩戴检测识别


    目录

    前言

    课题背景和意义

    实现技术思路

    数据来源

     COCO数据集预训练模型

    图片检测

    视频检测

    训练&评估结果

    实现效果图样例


    前言


        📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。

    🚀对毕设有任何疑问都可以问学长哦!

    本次分享的课题是

    🎯基于机器视觉的口罩佩戴检测识别

    课题背景和意义

    疫情期间,有一个关键点就是春节之后的复工。在国内有一个特殊的情况,就是在复工的时候,人员流动量相当庞大。肺炎疫情仍在持续,佩戴口罩是预防感染的有效措施,目前很多公众场合要求强制佩戴口罩,检测人物是否佩戴口罩。软件可以检测摄像头视频中的人是否佩戴口罩。进行口罩数据集训练,达到检测人群中有无戴口罩的目的。

    实现技术思路

    数据来源

    • 少量手动标注
      • 使用LabelImg,每个目标类别标注约50张图片
    • 训练检测模型
      • 使用PaddleDetection基于少量标注的数据集进行训练
      • 观察训练结果,如果mAP较为满意,保存预测模型
    • 生成自动标注
      • 使用基于少量标注训练的模型,对未标注数据进行预测,将预测结果保存为VOC格式
    • 矫正标注结果
      • 基于数据集特性,矫正目标标签
      • 导出预测数据的标注文件,回到LabelImg中,修正目标矩形框和标签

     COCO数据集预训练模型

     COCO数据集全称为Microsoft Common Objects in Context(MS COCO),它是一个大规模(large-scale)的对象检测(object detection)、分割(segmentation)、关键点检测(key-point detection)和字幕(captioning)数据集。此数据集由32.8万张图像组成.COCO API可以帮助加载、解析和可视化COCO中的标注。API支持多种标注格式(annotation formats)。

    图片检测

    1. def detect_image(image_path):
    2. print('Start detect!')
    3. yolo = YOLO()
    4. try:
    5. image = Image.open(image_path)
    6. except:
    7. print('Open Error! Try again!')
    8. pass
    9. else:
    10. r_image = yolo.detect_image(image)
    11. r_image.save(image_path.split('.')[0] + '_result.png')
    12. print('Finish detect!')

    视频检测

    1. def detect_video(video_path):
    2. print('Start detect!')
    3. yolo = YOLO()
    4. capture = cv2.VideoCapture(video_path)
    5. writer = None
    6. fps = 0.0
    7. while True:
    8. t1 = time.time()
    9. # 读取某一帧
    10. grabbed, frame = capture.read()
    11. if not grabbed:
    12. break
    13. # opencv读取的是BGR,格式转变,BGRtoRGB
    14. frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
    15. # 转变成Image
    16. frame = Image.fromarray(np.uint8(frame))
    17. # 进行检测
    18. frame = np.array(yolo.detect_image(frame))
    19. # RGBtoBGR满足opencv显示格式
    20. frame = cv2.cvtColor(frame,cv2.COLOR_RGB2BGR)
    21. fps = (fps + (1. / (time.time() - t1))) / 2
    22. print("FPS: %.2f" % (fps))
    23. frame = cv2.putText(frame, "FPS: %.2f" % (fps), (0, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 2, cv2.LINE_AA)
    24. if writer is None:
    25. fourcc = cv2.VideoWriter_fourcc(*'MP4V')
    26. writer = cv2.VideoWriter(video_path.split('.')[0] + '_result.mp4', fourcc, 30, (frame.shape[1], frame.shape[0]), True)
    27. writer.write(frame)
    28. writer.release()
    29. capture.release()
    30. print('Finish detect!')

    训练&评估结果

     

    实现效果图样例

     

    我是海浪学长,创作不易,欢迎点赞、关注、收藏、留言。

    毕设帮助,疑难解答,欢迎打扰!

  • 相关阅读:
    马克思的手稿-第11届蓝桥杯Scratch选拔赛真题精选
    基于SSM的健达企业项目管理系统的设计与实现-计算机毕业设计
    【BUG】记一次Maven install 报错 Could not find artifact ...:pom:0.0.1-SNAPSHOT
    DS单链表--结点交换 C++
    LeetCode 之 长度最小的子数组
    再谈VC++动态链接库中的结构成员与VB或C#调用
    oracle:让is null使用索引
    解决升级NET6 后,IIS调试出错的问题。以及发布后不生成Views文件夹的问题
    相较于Scrum, 我更推崇精益Kanban,帮助团队建立价值交付流,识别瓶颈问题
    技术管理之如何协调加班问题
  • 原文地址:https://blog.csdn.net/qq_37340229/article/details/128044942