20253312 实验四《Python程序设计》实验报告

20253312 2025-2026-2 《Python程序设计》实验四报告

课程:《Python程序设计》
班级: 2533
姓名: 胡宸轩
学号: 20253312
实验教师:王志强
实验日期:2026年5月17日
必修/选修: 公选课

1.实验内容

Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
课代表和各小组负责人收集作业(源代码、视频、综合实践报告)

Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
例如:编写从社交网络爬取数据,实现可视化舆情监控或者情感分析。
例如:利用公开数据集,开展图像分类、恶意软件检测等
例如:利用Python库,基于OCR技术实现自动化提取图片中数据,并填入excel中。
例如:爬取天气数据,实现自动化微信提醒
例如:利用爬虫,实现自动化下载网站视频、文件等。
例如:编写小游戏:坦克大战、贪吃蛇、扫雷等等
注:在Windows/Linux系统上使用VIM、PDB、IDLE、Pycharm等工具编程实现。

评分标准:
(1)程序能运行,功能丰富(至少5个功能)。(需求提交源代码,并建议录制程序运行的视频)15分
(2)综合实践报告,要体现实验分析、设计、实现过程、结果等信息,格式规范,逻辑清晰,结构合理。20分。
(3)在实践报告中,需要对全课进行总结,并写课程感想体会、意见和建议等。10分

2.实验选题:基于Python的视觉识别

演示视频链接已放在文章末尾
本应用分为本地服务和网页服务两种情况:

本地实验环境:

系统:windows11
开发语言:python3.13
集成开发环境:Pycharm2025.2.2
深度学习框架:PyTorch 2.11.0 + Ultralytics YOLOv8
GUI框架:PyQt6
图像处理:OpenCV 4.13, NumPy, Pillow
数据可视化:Matplotlib
以及上述所必要的依赖库

实验过程

由于方便后续添加功能和修改,此处将代码拆分为多个文件,并按照英文标准命名:
总文件夹
mian.py
utils.py
ui_mian.py
detector.py
train_worker.py

1、借助前期调查和研究,决定采用Python+opencv的视觉识别方式,深度学习框架采用PyTorch和YOLOv8,采用CPU或者GPU(pip安装CUDA时建议不要使用国内镜像,很多没有对应版本的CUDA)加速,安装基本所需库
通过代码验证安装是否完成(此处非常容易出现问题):

import cv2
print(f"OpenCV版本: {cv2.__version__}")
import torch
print(f"PyTorch版本: {torch.__version__}")
print(f"CUDA可用: {torch.cuda.is_available()}")
import ultralytics
print(f"Ultralytics版本: {ultralytics.__version__}")
import numpy as np
print(f"NumPy版本: {np.__version__}")

结果如图(仅安装了CPU加速):
image
则必要库已安装完毕!

2、运用简单代码,验证此方法视觉识别的可行性
采用LLM(Deepseek)+手动修改部分参数、显示错误(中文)等问题,借助简短的代码验证视觉识别效果,模型采用现成的YOLOv8s.pt
代码也已经上传gitee
YOLOv8.py
代码经过多次修改,实现了如图效果:
image

3、丰富功能,设计GUI界面
个人习惯,喜欢PyQt的GUI界面设计,并且为了使软件好看一点,花费了比较多的时间设计GUI界面。

注意:

由于开始使用了PyQt5,运行时候会报错,需要修改版本
PyQt5 仅支持到python3.10
PyQt6 支持python3.10以上的版本

此处采用PyQt6来设计GUI界面,并添加视频的识别,图片识别,文件夹图片批量识别,模型训练等功能(每一个功能下面还有多种小功能的选择)
经过多次修改,最终展现为(下面给出一些效果展示,具体需参考视频):
深浅色自主选择
image

为方便演示,下面的模型均采用YOLOv8small模型,采用CPU加速,具体演示参见视频

实时识别功能:

可以自主选择模型,摄像头,摄像头数量,指定目标识别,置信度设置等
image

视频检测功能:

可以点击打开视频文件或者直接拖拽视频至视频的位置,可以框选是否开启目标跟踪功能(对电脑要求比较高),指定目标识别,置信度自主选择,视频进度条拖拽等
下面是一个从b站上下载的一个视频的识别结果:
image

图片识别功能:

按照提示上传图片,选择置信度,点击开始检测
提供一个识别结果:
image

文件夹检测功能:

选择输入和输出文件夹,选择是否按类别分文件夹保存,点击开始处理即可:
从网上下载了一些图片,给出一个分类的结果:
image
自动生成类别的文件夹,如图所示:
image

模型训练功能:

自主选择数据集文件,与训练权重文件,轮数,批次大小,图像尺寸,点击开始训练
下面是一个训练的结果(此处仅为示例,50轮次训练结果还不能用于正常识别):
image

云服务器环境

系统:Huawei Cloud Euler
开发语言:python3.9
服务器框架:Flask
其余必要库,与本地相同

1、使用MobaXterm连接华为弹性服务器

image

2、根据搭建的框架,进行文件创建和写入(文件均已在本地调试修改过)

代码文件已经上传到gitee,可点击查看
experiments/
├── app.py
├── detector.py
├── train_worker.py
├── utils.py
├── requirements.txt
├── templates/
│ └── index.html
├── static/
│ ├── style.css
│ └── uploads/
├── results/
└── models/
image

3、安装必要的库
pip install -r requirements.txt

然后,就会得到image超时
所以,云服务器上pip建议使用国内镜像

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn

安装完成:
image

4、测试运行

直接运行由于服务器缺少图形库依赖,会返回如下结果:
image

需要补充依赖的图形库

sudo yum install -y mesa-libGL

运行app.py,显示如下结果:
image

访问网址 http://119.3.219.149
image

测试识别功能

图片检测功能,上传一张网上随便下载的图片:
image

批量处理功能,依旧用在本地测试的文件夹:
image

视频检测功能,上传视频,耐心等待返回结果(建议视频下载观看):
image

模型训练功能,上传已经预处理好的压缩文件夹,耐心等待返回结果:
image

上述运行结果均正确
同时,还构建了一个使用API调用的本地使用的软件,使用过程和网页端相同,此处不再赘述

简版代码 复杂版代码 (功能没有区别,外观有区别)
image

最后,上述代码均已推送到gitee,详细操作过程可参考视频

本地应用

云端应用

演示视频

由于存在模型训练功能,可以通过深度学习构建自己需要的模型,适用面比较广泛

3、实验感想+课程总结+小小建议

本次开放实验还是非常有意思的,当然,也因为python丰富的库资源导致最终选题难以确定。通过此次实验,增强了分析代码正确性的能力和调试能力,能够根据运行时给出的错误修改代码,借助大预言模型修改代码内容。同时,对Python和OpenCV的相关知识有了更深入的理解,不仅锻炼了Python编程能力,也加深了对深度学习框架的认识。同时,由于云服务器上传速率较慢,网页版本的图片识别和文件批量处理比较好用。

这门课程让我系统性的学习有关python的相关知识:从基础的语法结构,到后面的使用socket实现通信,体会到python的简洁与强大的可扩展性。在已有一定基础的前提下,得到了进一步的巩固和拓展。
当然,在课程学习过程中也遇到过很多问题,比如开始时在Pycharm上无法推送到gitee上,在socket实验中同学电脑无法访问我电脑上的客户端,都需要自己去不断尝试和解决,也进一步提升了自主学习和思考的能力。

老师上课还是比较有意思的,课程还是比较轻松的。如果要提提建议的话,希望能够有一个问题解决方法的合集,因为有些问题确实比较难解决,让身边同学非常非常头疼选择放弃。

posted @ 2026-05-17 13:22  _stream  阅读(48)  评论(0)    收藏  举报