基于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的检测逻辑,避免界面卡死。这年头不用多线程搞实时检测的都是耍流氓。

模型加载部分得注意参数设置:
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眼里,作弊行为和偷吃小鱼干的动作模式,可能也没差多少嘛。

更多推荐



所有评论(0)