news 2026/6/10 15:34:15

基于YOLOv5的作弊行为检测系统,Python和pycharm实现,可实时检测

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于YOLOv5的作弊行为检测系统,Python和pycharm实现,可实时检测

基于YOLOv5的作弊行为检测系统,Python和pycharm实现,可实时检测,有方便操作的图形化界面

考场里转笔的手速再快,也快不过AI的识别速度。今天咱们来搞点有意思的——用YOLOv5做个能实时抓作弊行为的系统,重点在于手部异常动作识别。别被吓到,这玩意儿实现起来比想象中简单,咱们边撸代码边聊。

先上硬货,环境配置用conda新建个环境:

conda create -n cheat_det python=3.8 conda activate cheat_det pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 -f https://download.pytorch.org/whl/torch_stable.html pip install pyqt5==5.15.4 opencv-python==4.5.3.56

装完这些基本就能跑起来了。YOLOv5的源码直接去官方仓库拖下来,注意别用最新版,v6.0之后的版本对自定义数据不太友好,建议用v5.0分支。

界面部分咱们用PyQt5搭个操作台,比tkinter那套好看不止一星半点。核心代码结构长这样:

class MainWindow(QMainWindow): def __init__(self): super().__init__() self.video_thread = VideoThread() # 视频流处理线程 self.init_ui() def init_ui(self): self.video_label = QLabel(self) # 显示视频的组件 self.start_btn = QPushButton('启动监控', self) self.start_btn.clicked.connect(self.toggle_detection) def toggle_detection(self): if not self.video_thread.isRunning(): self.video_thread.start() self.start_btn.setText('停止监控') else: self.video_thread.terminate() self.start_btn.setText('启动监控')

重点是这个VideoThread,继承自QThread,负责在后台跑YOLOv5的检测逻辑,避免界面卡死。这年头不用多线程搞实时检测的都是耍流氓。

基于YOLOv5的作弊行为检测系统,Python和pycharm实现,可实时检测,有方便操作的图形化界面

模型加载部分得注意参数设置:

def load_model(): model = torch.hub.load('ultralytics/yolov5', 'custom', path='best.pt', force_reload=True) model.conf = 0.6 # 置信度阈值别设太低,误检会要命 model.iou = 0.45 # 交并比适中,防止重复框选 return model

这里有个坑——如果直接调用detect.py,视频流延迟会很高。咱们得自己重写推理循环:

def run(self): cap = cv2.VideoCapture(0) # 0号摄像头 while True: ret, frame = cap.read() if ret: results = self.model(frame, size=640) # 输入尺寸别超过640 self.send_result.emit(results.render()[0])

注意这个size参数,设太大虽然精度可能提升,但帧率会暴跌。实测在RTX3060上跑640尺寸能到45帧,足够流畅。

作弊行为识别的关键在数据标注。需要重点标注这些动作:

  • 手部快速移动(传纸条)
  • 头部频繁左右转动(偷看邻座)
  • 异常身体倾斜(看小抄)

标注文件用YOLO格式,举个样例:

0 0.4453125 0.329861111111 0.1484375 0.157407407407 # 正常坐姿 1 0.678125 0.4325 0.0875 0.155 # 手部异常动作

数据增强要适度,特别是随机旋转别超过15度,否则正常转头和作弊动作容易混淆。

最后打包时用pyinstaller记得加这些参数:

pyinstaller --noconsole --add-data "best.pt;." --hidden-import PyQt5.sip main.py

不然分分钟给你报找不到模型文件的错误。实测打包后的exe在Win10下能跑,但建议还是配个环境省事。

整个项目跑起来后你会发现,这系统最实用的场景可能不是考场——试试用来监控自家猫主子偷吃,效果拔群。毕竟在AI眼里,作弊行为和偷吃小鱼干的动作模式,可能也没差多少嘛。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 12:41:22

使用 vLLM 部署 GLM-4.7-Flash 大模型完整指南

前言 GLM-4.7-Flash 是智谱 AI 推出的一款高性能大语言模型。本文将详细介绍如何在 Ubuntu 22.04 CUDA 12.4 环境下,使用 vLLM 框架部署 GLM-4.7-Flash 模型,支持双卡推理和工具调用功能。 环境准备 硬件要求 GPU: 2x NVIDIA L20 48GB内存: 至少 128GB存…

作者头像 李华
网站建设 2026/6/10 12:29:53

瑞维美尼Revumenib分化综合征的预防,如何使用皮质类固醇预处理?

分化综合征(DS)是瑞维美尼治疗中最需警惕的致命并发症,其发生机制与白血病细胞快速分化相关。AUGMENT-101试验显示,约29%的患者出现DS,症状包括发热、呼吸困难、低氧血症、外周水肿、胸膜或心包积液,严重者…

作者头像 李华
网站建设 2026/5/21 17:10:52

论文投出去好几个月都没动静,可以催稿吗?【附模板】

投稿后等待审稿的焦虑,每个学术研究者都懂:想催稿又怕冒犯编辑,不催又满心忐忑,连找个合适的模板都要纠结半天。 “投稿3个月没动静,该不该问?” “催急了会不会被拒稿?” 这些焦虑大可不必&…

作者头像 李华
网站建设 2026/5/19 14:08:55

丝氨酸/苏氨酸磷酸化抗体在蛋白质合成研究中发挥何种作用?

一、蛋白质化学合成为何需要引入特定磷酸化修饰?蛋白质的化学合成技术能够在任意指定位置引入精确设计的翻译后修饰,这一特性使其在生命科学研究中具有不可替代的重要价值。特别是在蛋白质功能调控研究中,丝氨酸和苏氨酸残基的磷酸化修饰作为…

作者头像 李华
网站建设 2026/6/3 18:32:14

30 个自然语言处理(NLP)方向 AI 毕业设计题目(分 3 档难度)

适配计算机 / 软件工程 / 人工智能 / 数据科学专业,所有题目均兼顾毕设实操性(有公开数据集支撑、轻量预训练模型可直接微调、能做出可视化演示系统),贴合NLP 行业主流技术(BERT/TinyBERT/ChatGLM/LLaMA、Prompt 工程、…

作者头像 李华
网站建设 2026/6/10 14:57:06

大气网格化监测系统 四气两尘监测站

Q1:大气网格化监测系统的核心定位是什么?为何能实现“从城市到园区”的全域适配?​A:核心定位是“全域大气污染精准监测与数据赋能终端”,主打“全域覆盖、精准监测、一站集成、智能高效”,专为大气污染防控…

作者头像 李华