Skip to content

ColdMountWillow/CVExp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

计算机视觉课程实验 - 陈璟 (2023217542)

项目概述

本仓库包含计算机视觉课程的全部4个实验项目,涵盖了图像处理、目标检测、深度学习等多个计算机视觉核心领域。每个实验都包含完整的源代码、实验报告、运行结果和详细文档。

实验列表

实验内容:实现图像的灰度化、卷积滤波、边缘检测和纹理特征提取。

核心技术

  • 手动实现2D卷积(不使用库函数)
  • Sobel算子边缘检测
  • 自定义卷积核K设计
  • 直方图统计(手动实现)
  • 纹理特征提取(9种统计特征)

主要成果

  • 成功实现灰度化转换
  • 手工实现2D卷积操作
  • Sobel边缘检测效果良好
  • 提取9种纹理特征(均值、标准差、能量、熵等)

技术栈Python NumPy OpenCV Matplotlib


实验内容:使用图像处理技术检测道路图像中的车道线。

核心技术

  • 高斯滤波降噪
  • Canny边缘检测
  • 感兴趣区域(ROI)提取
  • Hough变换直线检测
  • 车道线拟合与绘制

主要成果

  • 成功检测左右车道线
  • 准确的直线拟合
  • 鲁棒的ROI设计
  • 适用于多种道路场景

技术栈Python OpenCV NumPy


实验内容:使用深度学习识别手写学号照片中的数字。

核心技术

  • 卷积神经网络(CNN)设计与训练
  • MNIST数据集训练
  • 图像预处理(灰度化、二值化、形态学操作)
  • 轮廓检测与数字分割
  • 端到端识别流程

主要成果

  • MNIST测试集准确率:99.12%
  • 学号识别成功率:10/10 (100%)
  • 平均置信度:96.1%
  • 模型参数量:304,266

技术栈Python PyTorch OpenCV NumPy


实验内容:使用YOLOv8深度学习模型检测校园场景中的共享单车。

核心技术

  • YOLOv8目标检测算法
  • COCO数据集单类提取
  • 模型训练与优化
  • 实时目标检测与定位
  • NMS后处理

主要成果

  • mAP50:60.45%
  • Precision:69.05%
  • 推理速度:67 FPS
  • 模型大小:6.5MB(轻量级)
  • 检测成功率:100% (2/2张测试图像)

技术栈Python PyTorch YOLOv8 Ultralytics OpenCV

加分项

  • 使用深度学习方法
  • 代码环境以姓名缩写命名(cj
  • 详细的环境配置文档

项目结构

陈璟-2023217542/
├── README.md                          # 项目总说明(本文件)
│
├── 实验一/
│   └── image_filtering/               # 图像滤波实验
│       ├── main.py                    # 主程序
│       ├── orange.jpg                 # 测试图像
│       ├── outputs/                   # 输出结果
│       ├── README.md                  # 实验说明
│       └── requirements.txt           # 依赖列表
│
├── 实验二/
│   └── lane_detect/                   # 车道检测实验
│       ├── lane_detect.py             # 主程序
│       ├── data/                      # 测试图像
│       ├── outputs/                   # 检测结果
│       └── README.md                  # 实验说明
│
├── 实验三/
│   └── Student-ID-Recognition/        # 学号识别实验
│       ├── train_mnist.py             # 训练脚本
│       ├── infer_student_id.py        # 推理脚本
│       ├── model.py                   # CNN模型定义
│       ├── utils_image.py             # 图像处理工具
│       ├── weights/                   # 模型权重
│       ├── outputs/                   # 识别结果
│       ├── README.md                  # 实验说明
│       └── requirements.txt           # 依赖列表
│
└── 实验四/
    └── Campus-Bike-Detection/         # 单车检测实验
        ├── scripts/                   # 脚本目录
        │   ├── train.py              # 训练脚本
        │   ├── val.py                # 验证脚本
        │   └── infer.py              # 推理脚本
        ├── src/                       # 源代码
        │   └── utils.py              # 工具函数
        ├── data/                      # 数据配置
        ├── runs/                      # 训练输出
        ├── outputs/                   # 推理结果
        ├── README.md                  # 实验说明
        ├── 实验报告.md                # 详细实验报告
        └── requirements.txt           # 依赖列表

环境配置

系统要求

  • 操作系统: Windows 10/11, Linux, macOS
  • Python: 3.8 - 3.10
  • 内存: 建议 8GB+
  • GPU: NVIDIA GPU

通用依赖

# 基础库
numpy>=1.20.0
opencv-python>=4.5.0
matplotlib>=3.3.0

深度学习依赖(实验三、四)

# PyTorch
torch>=1.10.0
torchvision>=0.11.0

# 实验四额外依赖
ultralytics>=8.3.0
pycocotools>=2.0.6

安装

每个实验目录都包含独立的 requirements.txt

# 进入对应实验目录
cd 实验一/image_filtering/

# 安装依赖
pip install -r requirements.txt

使用

实验一:图像滤波

cd 实验一/image_filtering/
python main.py --image orange.jpg

实验二:车道检测

cd 实验二/lane_detect/
python lane_detect.py --image data/test.png --output outputs/

实验三:学号识别

cd 实验三/Student-ID-Recognition/

# 1. 训练模型
python train_mnist.py --epochs 5

# 2. 识别学号
python infer_student_id.py --image 2023217542.jpg --save_vis outputs/vis.jpg

实验四:单车检测

cd 实验四/Campus-Bike-Detection/

# 推理检测
python scripts/infer.py \
    --weights runs/bicycle_exp/weights/best.pt \
    --source bike.jpg \
    --save_dir outputs/vis

实验成果总览

实验 主要指标 完成度
实验一 成功实现手工卷积和特征提取 100%
实验二 车道检测准确率高 100%
实验三 MNIST准确率99.12%,学号识别100% 100%
实验四 mAP50=60.45%, FPS=67 100%

可视化结果展示

实验一:图像滤波

  • 灰度转换
  • Sobel边缘检测
  • 自定义卷积核K滤波
  • RGB/灰度图直方图

实验二:车道检测

  • 成功检测左右车道线
  • 准确的直线拟合
  • 适应不同道路场景

实验三:学号识别

  • 输入:手写学号照片
  • 输出:识别结果 2023217542
  • 可视化:每个数字的检测框和置信度

实验四:单车检测

  • 单目标检测(bike.jpg):置信度76.88%
  • 多目标检测(bike2.jpg):2辆单车,置信度91.14%和75.28%
  • 实时检测:67 FPS

核心技术亮点

图像处理基础

  • 手工实现2D卷积(不使用cv2.filter2D
  • 手工实现直方图统计(不使用np.histogram
  • 形态学操作(腐蚀、膨胀)
  • Canny、Sobel边缘检测

计算机视觉算法

  • Hough变换直线检测
  • 轮廓检测与分割
  • ROI提取与变换
  • 多尺度特征融合

深度学习技术

  • CNN网络设计(实验三:3层卷积+2层全连接)
  • YOLOv8目标检测(实验四)
  • 数据增强(Mosaic, MixUp)
  • 迁移学习(预训练模型微调)

工程实践

  • 模块化代码设计
  • 命令行参数解析(argparse)
  • 结果可视化和保存
  • 详细的文档和注释

技术栈总结

编程语言

  • Python 3.10

深度学习框架

  • PyTorch 2.5.0
  • Ultralytics YOLOv8

计算机视觉库

  • OpenCV 4.6+
  • PIL/Pillow

数值计算与可视化

  • NumPy
  • Matplotlib
  • JSON

数据集

  • MNIST(手写数字数据集)
  • COCO 2017(目标检测数据集)

实验报告

每个实验都包含详细的实验报告,内容包括:

  • 实验目的
  • 算法原理(含数学公式推导)
  • 代码实现
  • 实验结果与分析
  • 问题与解决方案
  • 实验总结

报告格式:

  • 实验一、二:Word文档(.docx
  • 实验三、四:Markdown文档(.md

学习收获

通过这4个实验,我系统学习了:

  1. 图像处理基础:卷积、滤波、边缘检测、形态学操作
  2. 经典算法:Hough变换、Canny边缘检测、轮廓检测
  3. 深度学习:CNN、目标检测、模型训练与优化
  4. 工程能力:代码组织、文档编写、结果分析
  5. 问题解决:调试技巧、性能优化、错误分析

许可证

本项目仅用于课程实验,请遵守学术诚信原则。

致谢

感谢计算机视觉课程的老师和助教的指导!

感谢以下开源项目:

About

项目代码 + 实验报告

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors