智能影像辨識與監控系統 - 個人學習開發歷程記錄
⚠️ 免責聲明與專案性質:
📖 這是一個個人學習開發歷程記錄專案,記錄我在學習 AI 影像辨識技術過程中的實作經驗與心得。
🎓 本專案僅供學習參考使用,屬於個人技術學習的成果展示與紀錄。
⚠️ 請勿直接用於生產環境或商業用途,作者不對使用本專案所造成的任何問題負責。
🔧 如有實際應用需求,請基於本專案進行重新設計、安全審查及完整測試。
💡 歡迎其他學習者參考交流,但請理解這只是個人學習過程的記錄,非完整的產品級解決方案。
VisionFlow 是我在學習 AI 影像辨識與監控系統開發過程中的實作專案。這個專案記錄了我在學習微服務架構、深度學習技術和現代化部署方案時的開發歷程與實作經驗。
📝 學習歷程記錄:
這個專案完整記錄了我從零開始學習以下技術的過程:
- 🤖 深度學習與電腦視覺 (YOLO 模型應用)
- 🏗️ 微服務架構設計與實作經驗
- 🐳 Docker 容器化技術與服務編排
- 🌐 Flask Web 框架與 RESTful API 開發
- 🗄️ 資料庫設計與管理 (PostgreSQL + Redis)
- 📡 即時通訊技術與 WebSocket 實作
⚠️ 學習專案聲明:
- 這是我個人的學習實作記錄,程式碼可能存在不完善之處
- 未經過完整的安全性檢查和企業級測試
- 主要目的是記錄學習過程和技術實驗
- 如需用於實際專案,請自行評估並進行必要的改進
💡 學習重點:透過實作以下功能來學習相關技術
- 🚀 實時影像辨識 - 使用 YOLO 模型進行高效物件檢測
- 🎥 多攝影機支援 - 同時管理多個攝影機串流
- 🔒 用戶權限管理 - 完整的身份驗證與授權系統
- 🎨 自定義檢測區域 - 支援多邊形 ROI 繪製
- 📱 響應式介面 - 現代化的 Web 管理界面
- 🐳 容器化部署 - 完整的 Docker 支援
- ⚡ 高效能架構 - Redis 快取與負載均衡
📚 學習技術棧:
- 後端框架: Flask + RESTful API
- 資料庫: PostgreSQL (主要) + Redis (快取)
- AI 模型: YOLO v11 物件檢測
- 容器化: Docker + Docker Compose
- 前端: 現代化 JavaScript + Bootstrap
- 通訊: WebSocket 實時串流
⚠️ 重要提醒:以下步驟僅適用於學習環境,這只是我個人學習過程的記錄!
📚 如果你也在學習相關技術,歡迎參考我的實作經驗,但請注意這並非完整的產品級解決方案。
在開始之前,請確保您的系統已安裝:
| 工具 | 版本要求 | 說明 |
|---|---|---|
| 🐳 Docker | 20.10+ | 容器化平台 |
| 🏗️ Docker Compose | 2.0+ | 多容器編排工具 |
| 💻 作業系統 | Linux/macOS/Windows | 支援跨平台部署 |
📦 標準部署(適合學習測試)
# 1️⃣ 克隆專案
git clone https://github.com/yourusername/VisionFlow.git
cd VisionFlow
# 2️⃣ 啟動所有服務
docker-compose -f docker-compose.optimized.yaml up -d
# 3️⃣ 等待服務啟動完成(約 2-3 分鐘)
docker-compose -f docker-compose.optimized.yaml ps
# 4️⃣ 初始化資料庫
docker-compose -f docker-compose.optimized.yaml exec backend flask db upgrade🎓 學習提示:觀察 docker-compose 的編排過程,了解微服務的啟動順序
🔧 開發者模式(適合程式碼學習)
# 1️⃣ 克隆專案
git clone https://github.com/yourusername/VisionFlow.git
cd VisionFlow
# 2️⃣ 啟動基礎服務
docker-compose -f docker-compose.yaml up -d
# 3️⃣ 啟動 Redis 工作節點
docker-compose -f docker-compose-redis.yaml up -d
# 4️⃣ 資料庫遷移
docker-compose exec backend flask db upgrade🎓 學習提示:可以透過修改程式碼來觀察系統行為變化
部署完成後,請訪問以下地址確認服務狀態:
| 服務 | 地址 | 說明 |
|---|---|---|
| 🌐 Web 界面 | http://localhost:5001 | 主要管理界面 |
| 📹 攝影機串流 | http://localhost:15440 | 攝影機控制器 |
| 📊 Redis 管理 | http://localhost:6379 | Redis 資料庫 |
| 🗄️ PostgreSQL | http://localhost:5433 | 主資料庫 |
📝 環境變數設定
創建 .env 檔案並設定以下變數:
# 資料庫設定
POSTGRES_DB=visionflow_db
POSTGRES_USER=admin
POSTGRES_PASSWORD=your_secure_password
# Redis 設定
REDIS_HOST=redis
REDIS_PORT=6379
# 應用程式設定
FLASK_ENV=production
SECRET_KEY=your_secret_key_here
# 模型設定
MODEL_PATH=/app/models/yolo11n.pt
CONFIDENCE_THRESHOLD=0.5| 文檔類型 | 連結 | 說明 |
|---|---|---|
| 📖 基礎 API | API_Doc.md | 核心 API 使用說明 |
| 🚀 進階 API | API_ENHANCED.md | 高級功能與擴展 API |
| 🎯 專案總覽 | PROJECT_SUMMARY.md | 專案架構與設計理念 |
🎥 影像串流 API
# 獲取實時串流
GET /recognized_stream/{camera_id}
# 獲取原始串流
GET /get_stream/{camera_id}
# 獲取快照
GET /get_snapshot/{camera_id}📹 攝影機管理 API
# 獲取所有攝影機
GET /api/camera/cameras
# 新增攝影機
POST /api/camera/cameras
# 更新攝影機
PATCH /api/camera/cameras/{id}
# 刪除攝影機
DELETE /api/camera/cameras/{id}🔐 認證與授權 API
# 用戶登入
POST /api/auth/login
# 用戶註冊
POST /api/auth/register
# Token 刷新
POST /api/auth/refresh🐍 Python 環境設定
# 1️⃣ 創建虛擬環境
python3 -m venv venv
# 2️⃣ 啟用虛擬環境
# Linux/macOS:
source venv/bin/activate
# Windows:
venv\Scripts\activate
# 3️⃣ 安裝依賴套件
pip install -r requirements.txt
# 4️⃣ 啟動開發伺服器
flask run --debug🧪 測試與品質檢查
# 🔍 執行單元測試
pytest tests/ -v
# 📊 程式碼覆蓋率
pytest --cov=./ tests/
# 🎨 程式碼格式化
black . --line-length 88
# 🔧 靜態分析
flake8 . --max-line-length 88VisionFlow/
├── 🌐 web/ # Web 後端服務
├── 📹 camera_ctrler/ # 攝影機控制器
├── 🤖 object_recognition/ # AI 辨識服務
├── 📦 redisv1/ # Redis 工作節點
├── 🗄️ db/ # 資料庫檔案
├── 📊 shared/ # 共享模組
└── 🐳 docker-compose.*.yaml # 容器編排配置
| 聯絡管道 | 資訊 | 說明 |
|---|---|---|
| sky328423@gmail.com | 學習交流與技術討論 | |
| 🐛 Bug 回報 | GitHub Issues | 問題回報與功能建議 |
| 💬 討論 | GitHub Discussions | 學習心得分享與經驗交流 |
🔧 程式碼貢獻
- Fork 本專案
- 創建您的功能分支 (
git checkout -b feature/AmazingFeature) - 提交您的更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 開啟一個 Pull Request
📝 文檔貢獻
- 改善 README 或 API 文檔
- 翻譯文檔到其他語言
- 增加使用範例和教學
🐛 問題回報
回報問題時請包含:
- 作業系統版本
- Docker 版本
- 錯誤訊息截圖
- 重現步驟
本專案採用 MIT 授權條款 - 詳見 LICENSE 檔案