大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。

💞当前专栏:Python毕业设计

精彩专栏推荐👇🏻👇🏻👇🏻

🎀 Java毕业设计
🌎微信小程序毕业设计

开发环境

  • 开发语言:Python
  • 框架:django
  • Python版本:python3.7.7
  • 数据库:mysql 5.7(一定要5.7版本)
  • 数据库工具:Navicat11
  • 开发软件:PyCharm
  • 浏览器:谷歌浏览器

演示视频

python255基于深度学习的上课学生行为识别系统演示

论文目录

【如需全文或源码请按文末获取联系】

在这里插入图片描述
在这里插入图片描述

一、项目简介

本系统基于深度学习技术进行学生行为识别,采用YOLOv5模型进行目标检测,并结合OpenCV进行实时图像处理和分析。Python语言和Django框架被应用于系统的搭建和开发,MySQL数据库用于存储学生行为数据与相关信息。
该系统的主要功能包括实时监测学生的坐姿、站立、写字等行为,同时对学生的专注度、活跃度等行为特征进行分析和评估。通过目标检测和深度学习算法,能够准确识别学生的行为,并即时生成相应的数据分析报告。

二、系统设计

2.1软件功能模块设计

具体系统总体框架图如图4-1所示。
在这里插入图片描述

2.2数据库设计

管理员信息实体
在这里插入图片描述
学生信息实体
在这里插入图片描述
行为检测记录信息实体
在这里插入图片描述

三、系统项目部分截图

3.1注册登录

注册登录功能包括管理员和学生两种角色。管理员需要注册账号并登录以管理学生审核、课程管理等任务,用户名和密码用于验证身份。学生需要注册账号并登录以修改个人信息,学号为唯一标识,密码用于验证身份。所有用户在登录时需输入正确的用户名和密码才能成功进入系统,确保信息安全和权限控制。如下图5-1所示。
在这里插入图片描述

3.2图片识别

用户可以通过上传图片来实现学生上课行为的识别功能,系统会自动分析图像内容并返回识别结果。例如下图上传的学生上课睡觉的图片准确检测出结果为睡觉。这一功能不仅提升了系统的智能化水平,还为用户提供了更便捷和高效的图像处理与识别服务。如下图5-2所示。
在这里插入图片描述

3.3视频识别

通过这一功能,用户将视频文件上传到系统中,进行人脸识别、物体检测、行为分析等操作。系统会自动对视频内容进行和解析,并从中提取出关键信息和特征,以实现对视频中事物、动作或行为的智能识别分析。视频识别功能为用户提供了一种高级的图像处理和分析手段,可应用于许多领域,如智能监控、视频编辑、社交媒体分析等。如下图5-3所示。
在这里插入图片描述

四、部分核心代码

import time

from django.contrib.auth import authenticate, login
from django.shortcuts import render

from .models import User
from django.http import JsonResponse, HttpResponseRedirect
from django.core.paginator import Paginator

from utils.common import login_request
from utils import common


def verif_has_username(id, name):
    # 判断是否用重复的用户名
    user = User.objects.exclude(id=id).filter(username=name)
    return True if len(user) > 0 else False


def register(request):
    """
    注册账号
    :return:
    """
    username = request.POST.get('username')
    sign = verif_has_username(None, username)
    password = request.POST.get('password')
    phone = request.POST.get('phone')
    email = request.POST.get('email', '1@qq.com')
    if sign:
        return JsonResponse({"statusCode": '500', "msg": "用户名重复!"})
    response_data = {
        "statusCode": '200',
        "msg": "用户" + request.POST["username"] + "新增成功!",
    }
    if password == "" or username == "":
        response_data["statusCode"] = '403'
        response_data["msg"] = "用户名或密码为空,注册失败!"
    # 新增用户
    try:
        User.objects.create_user(
            username=username,
            password=password,
            is_superuser='f',
            is_active='t',
            email=email,
            phone=phone
        )
        common.create_log(request, '新增', '创建用户', username, 1)
    except Exception as e:
        print(e)
        common.create_log(request, '新增', '创建用户失败', '', 0)
        response_data["statusCode"] = '500'
        response_data["msg"] = "用户新增失败"
    return JsonResponse(response_data)


@login_request
def password(request):
    return render(request, 'modify_password.html', locals())


def get_user(request):
    """
    获取用户列表信息 | 模糊查询
    :param request:
    :return:
    """
    page = request.GET.get("page", '')
    keyword = request.GET.get("name", '')
    limit = request.GET.get("limit", '')

    response_data = {}
    response_data['code'] = 0
    response_data['msg'] = ''
    data = []
    if keyword is None:
        results_obj = User.objects.all()
    else:
        results_obj = User.objects.filter(username__contains=keyword).all()
    paginator = Paginator(results_obj, limit)
    results = paginator.page(page)
    if results:
        for result in results:
            record = {
                "id": result.id,
                "name": result.username,
                "password": result.password,
                "email": result.email,
                "phone": result.phone,
                "role": "管理员" if result.is_superuser else "普通用户",
                'create_time': result.date_joined.strftime('%Y-%m-%d %H:%m:%S'),
                "desc": result.description,
            }
            data.append(record)
        response_data['count'] = len(results_obj)
        response_data['data'] = data

    return JsonResponse(response_data)


@login_request
def user(request):
    """
    跳转用户页面
    """
    return render(request, 'user.html', locals())


def login_check(request):
    """
    登录校验
    """
    response_data = {}
    username = request.POST.get('username')
    password = request.POST.get('password')
    user_obj = authenticate(username=username, password=password)
    if user_obj:
        # 将用户名存入session中
        response_data['msg'] = '登录成功'
        response_data['statusCode'] = '200'
        common.create_log(request, '登录', '登录系统', '', 1)

        login(request, user_obj)

        return JsonResponse(response_data, status=201)
    else:
        common.create_log(request, '登录', '登录系统', username, 0)
        return JsonResponse({'msg': '用户名或者密码不正确', 'statusCode': '500'}, status=401)


def edit_user(request):
    """
    修改用户
    """
    response_data = {}
    user_id = request.POST.get('id')
    username = request.POST.get('username', '')
    phone = request.POST.get('phone', '')
    email = request.POST.get('email', '')
    description = request.POST.get('desc', '')
    role = request.POST.get('role', '')
    if role == '1':
        User.objects.filter(id=user_id).update(
            username=username,
            email=email,
            is_superuser='t',
            description=description,
            phone=phone)
    elif role == '2':
        User.objects.filter(id=user_id).update(
            username=username,
            email=email,
            is_superuser='f',
            description=description,
            phone=phone)
    else:
        User.objects.filter(id=user_id).update(
            username=username,
            email=email,
            description=description,
            phone=phone)
    response_data['msg'] = '编辑成功!'
    response_data['error'] = 0
    common.create_log(request, '修改', '修改用户', username, 1)
    return JsonResponse(response_data, status=201)


def del_user(request):
    """
    删除用户
    """
    user_id = request.POST.get('id')
    result = User.objects.filter(id=user_id).first()
    try:
        if not result:
            response_data = {'error': '删除失败!', 'message': '找不到id为%s' % user_id}
            return JsonResponse(response_data, status=403)
        common.create_log(request, '删除', '删除用户', result.username, 1)

        result.delete()
        response_data = {'message': '删除成功!'}
        return JsonResponse(response_data, status=201)
    except Exception as e:
        common.create_log(request, '删除', '删除用户', result.username, 0)

        response_data = {'message': '删除失败!'}
        return JsonResponse(response_data, status=403)


def change_password(request):
    """
    修改密码
    """

    current_user = User.objects.filter(username=request.session["username"]).first()
    if current_user.password == request.POST.get('password'):
        # 修改的密码与原密码重复不予修改
        return JsonResponse({"msg": "修改密码与原密码重复"}), 406
    else:
        # 不重复,予以修改
        current_user.set_password(request.POST.get('password'))
        current_user.save()
        # 清除session回到login界面
        logout(request)
        return JsonResponse({"msg": "success"})

获取源码或论文

如需对应的论文或源码,以及其他定制需求,也可以下方微❤联系。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐