1. 环境准备与项目初始化
要搭建一个基于Flask和YOLOv5的实时视频检测Web应用,首先需要准备好开发环境。我推荐使用Python 3.8或更高版本,这个版本在兼容性和性能方面都有不错的表现。在实际项目中,我发现Python 3.8与PyTorch的配合最为稳定。
安装基础依赖包时,建议创建一个虚拟环境。这样可以避免与其他项目的依赖冲突。我通常使用conda来管理环境,但venv也是个不错的选择:
bash复制python -m venv yolov5_flask_env
source yolov5_flask_env/bin/activate # Linux/Mac
yolov5_flask_env\Scripts\activate # Windows
接下来安装核心依赖项。这里有个小技巧:先安装PyTorch,再安装其他依赖,可以减少版本冲突的可能性:
bash复制pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113
pip install flask flask-cors opencv-python numpy
对于YOLOv5的获取,直接从官方仓库克隆是最稳妥的做法。我在多个项目中发现,使用pip安装的版本有时会缺少必要的工具函数:
bash复制git clone https://github.com/ultralytics/yolov5
cd yolov5
pip install -r requirements.txt
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Flask项目结构设计
一个良好的项目结构能让后续开发事半功倍。经过多次项目实践,我总结出了这样一个目录结构:
code复制yolov5_flask/
├── app.py # Flask主应用
├── static/ # 静态资源
│ ├── js/
│ └── css/
├── templates/ # HTML模板
│ └── index.html
├── utils/ # 工具函数
│ └── video_processor.py
└── yolov5/ # YOLOv5模型代码
在app.py中,我们需要初始化Flask应用并配置基本路由。这里有个细节需要注意:静态文件夹和模板文件夹的路径设置。我遇到过因为路径问题导致模板无法加载的情况,所以建议使用绝对路径:
python复制import os
from flask import Flask
app = Flask(__name__,
static_folder=os.path.abspath('static'),
template_folder=os.path.abspath('templates'))
3. YOLOv5模型集成与封装
将YOLOv5集成到Flask应用中需要特别注意模型加载和推理的性能优化。我封装了一个VideoProcessor类来处理这些逻辑:
python复制import torch
import cv2
import numpy as np
from yolov5.models.experimental import attempt_load
from yolov5.utils.general import non_max_suppression, scale_coords
class VideoProcessor:
def __init__(self, weights_path='yolov5s.pt'):
