|
Download README.md from ml-resources/AIGlasses_for_navigation: direct link, hf CLI and curl.
- Browser
- Download file 20 kB
-
https://huggingface.co/ml-resources/AIGlasses_for_navigation/resolve/main/README.md
- Command line
-
hf download hf://ml-resources/AIGlasses_for_navigation/README.md
-
curl -L -o README.md https://huggingface.co/ml-resources/AIGlasses_for_navigation/resolve/main/README.md
20 kB
| license: mit | |
| language: | |
| - zh | |
| pipeline_tag: object-detection | |
| tags: | |
| - yolo | |
| - image-segmentation | |
| - assistive-technology | |
| - accessibility | |
| - navigation | |
| - visually-impaired | |
| - smart-glasses | |
| > Mirror of [archifancy/AIGlasses_for_navigation](https://www.modelscope.cn/models/archifancy/AIGlasses_for_navigation) from ModelScope. All credit to the original authors. Not an official release from them. License unchanged (mit). | |
| # AI ๆบ่ฝ็ฒไบบ็ผ้็ณป็ป ๐ค๐ | |
| <img width="2481" height="1708" alt="1" src="https://github.com/user-attachments/assets/e8dec4a6-8fa6-4d94-bd66-4e9864b67daf" /> | |
| <img width="2480" height="1708" alt="2" src="https://github.com/user-attachments/assets/bc7d1aac-a9e9-4ef8-9d67-224708d0c9fd" /> | |
| <img width="2481" height="1708" alt="4" src="https://github.com/user-attachments/assets/6dd19750-57af-4560-a007-9a7059956b53" /> | |
| <div align="center"> | |
| ไธไธช้ขๅ่ง้ไบบๅฃซ็ๆบ่ฝๅฏผ่ชไธ่พ ๅฉ็ณป็ป๏ผ้ๆไบ็ฒ้ๅฏผ่ชใ่ฟ้ฉฌ่ทฏ่พ ๅฉใ็ฉๅ่ฏๅซใๅฎๆถ่ฏญ้ณไบคไบ็ญๅ่ฝใ ๆฌ้กน็ฎไป ไธบไบคๆตๅญฆไน ไฝฟ็จ๏ผ่ฏทๅฟ็ดๆฅ็ป่ง้ไบบ็พคไฝฟ็จใ | |
| ไปฃ็ ๅจ https://github.com/AI-FanGe/OpenAIglasses_for_Navigation.git | |
| ## โจ ๅ่ฝ็นๆง | |
| ### ๐ถ ็ฒ้ๅฏผ่ช็ณป็ป | |
| - **ๅฎๆถ็ฒ้ๆฃๆต**๏ผๅบไบ YOLO ๅๅฒๆจกๅๅฎๆถ่ฏๅซ็ฒ้ | |
| - **ๆบ่ฝ่ฏญ้ณๅผๅฏผ**๏ผๆไพ็ฒพๅ็ๆนๅๆๅผ๏ผๅทฆ่ฝฌใๅณ่ฝฌใ็ด่ก็ญ๏ผ | |
| - **้็ข็ฉๆฃๆตไธ้ฟ้**๏ผ่ชๅจ่ฏๅซๅๆน้็ข็ฉๅนถ่งๅ้ฟ้่ทฏ็บฟ | |
| - **่ฝฌๅผฏๆฃๆต**๏ผ่ชๅจ่ฏๅซๆฅ่ฝฌๅผฏๅนถๆๅๆ้ | |
| - **ๅ ๆต็จณๅฎ**๏ผไฝฟ็จ Lucas-Kanade ๅ ๆต็ฎๆณ็จณๅฎๆฉ็ ๏ผๅๅฐๆๅจ | |
| ### ๐ฆ ่ฟ้ฉฌ่ทฏ่พ ๅฉ | |
| - **ๆ้ฉฌ็บฟ่ฏๅซ**๏ผๅฎๆถๆฃๆตๆ้ฉฌ็บฟไฝ็ฝฎๅๆนๅ | |
| - **็บข็ปฟ็ฏ่ฏๅซ**๏ผๅบไบ้ข่ฒๅๅฝข็ถ็็บข็ปฟ็ฏ็ถๆๆฃๆต | |
| - **ๅฏน้ฝๅผๅฏผ**๏ผๅผๅฏผ็จๆทๅฏนๅๆ้ฉฌ็บฟไธญๅฟ | |
| - **ๅฎๅ จๆ้**๏ผ็ปฟ็ฏๆถ่ฏญ้ณๆ็คบๅฏไปฅ้่ก | |
| ### ๐ ็ฉๅ่ฏๅซไธๆฅๆพ | |
| - **ๆบ่ฝ็ฉๅๆ็ดข**๏ผ่ฏญ้ณๆไปคๆฅๆพ็ฉๅ๏ผๅฆ"ๅธฎๆๆพไธไธ็บข็"๏ผ | |
| - **ๅฎๆถ็ฎๆ ่ฟฝ่ธช**๏ผไฝฟ็จ YOLO-E ๅผๆพ่ฏๆฑๆฃๆต + ByteTrack ่ฟฝ่ธช | |
| - **ๆ้จๅผๅฏผ**๏ผ็ปๅ MediaPipe ๆ้จๆฃๆต๏ผๅผๅฏผ็จๆทๆ้จ้ ่ฟ็ฉๅ | |
| - **ๆๅๆฃๆต**๏ผๆฃๆตๆ้จๆกๆๅจไฝ๏ผ็กฎ่ฎค็ฉๅๅทฒๆฟๅฐ | |
| - **ๅคๆจกๆๅ้ฆ**๏ผ่ง่งๆ ๆณจ + ่ฏญ้ณๅผๅฏผ + ๅฑ ไธญๆ็คบ | |
| ### ๐๏ธ ๅฎๆถ่ฏญ้ณไบคไบ | |
| - **่ฏญ้ณ่ฏๅซ๏ผASR๏ผ**๏ผๅบไบ้ฟ้ไบ DashScope Paraformer ๅฎๆถ่ฏญ้ณ่ฏๅซ | |
| - **ๅคๆจกๆๅฏน่ฏ**๏ผQwen-Omni-Turbo ๆฏๆๅพๅ+ๆๆฌ่พๅ ฅ๏ผ่ฏญ้ณ่พๅบ | |
| - **ๆบ่ฝๆไปค่งฃๆ**๏ผ่ชๅจ่ฏๅซๅฏผ่ชใๆฅๆพใๅฏน่ฏ็ญไธๅ็ฑปๅๆไปค | |
| - **ไธไธๆๆ็ฅ**๏ผๅจไธๅๆจกๅผไธๆบ่ฝ่ฟๆปคๆ ๅ ณๆไปค | |
| ### ๐น ่ง้ขไธ้ณ้ขๅค็ | |
| - **ๅฎๆถ่ง้ขๆต**๏ผWebSocket ๆจๆต๏ผๆฏๆๅคๅฎขๆท็ซฏๅๆถ่ง็ | |
| - **้ณ่ง้ขๅๆญฅๅฝๅถ**๏ผ่ชๅจไฟๅญๅธฆๆถ้ดๆณ็ๅฝๅๅ้ณ้ขๆไปถ | |
| - **IMU ๆฐๆฎ่ๅ**๏ผๆฅๆถ ESP32 ็ IMU ๆฐๆฎ๏ผๆฏๆๅงฟๆไผฐ่ฎก | |
| - **ๅค่ทฏ้ณ้ขๆทท้ณ**๏ผๆฏๆ็ณป็ป่ฏญ้ณใAI ๅๅคใ็ฏๅข้ณๅๆถๆญๆพ | |
| ### ๐จ ๅฏ่งๅไธไบคไบ | |
| - **Web ๅฎๆถ็ๆง**๏ผๆต่งๅจ็ซฏๅฎๆถๆฅ็ๅค็ๅ็่ง้ขๆต | |
| - **IMU 3D ๅฏ่งๅ**๏ผThree.js ๅฎๆถๆธฒๆ่ฎพๅคๅงฟๆ | |
| - **็ถๆ้ขๆฟ**๏ผๆพ็คบๅฏผ่ช็ถๆใๆฃๆตไฟกๆฏใFPS ็ญ | |
| - **ไธญๆๅๅฅฝ**๏ผๆๆ็้ขๅ่ฏญ้ณไฝฟ็จไธญๆ๏ผๆฏๆ่ชๅฎไนๅญไฝ | |
| ## ๐ป ็ณป็ป่ฆๆฑ | |
| ### ็กฌไปถ่ฆๆฑ | |
| - **ๅผๅ/ๆๅกๅจ็ซฏ**๏ผ | |
| - CPU: Intel i5 ๆไปฅไธ๏ผๆจ่ i7/i9๏ผ | |
| - GPU: NVIDIA GPU๏ผๆฏๆ CUDA 11.8+๏ผๆจ่ RTX 3060 ๆไปฅไธ๏ผ | |
| - ๅ ๅญ: 8GB RAM๏ผๆจ่ 16GB๏ผ | |
| - ๅญๅจ: 10GB ๅฏ็จ็ฉบ้ด | |
| - **ๅฎขๆท็ซฏ่ฎพๅค**๏ผๅฏ้๏ผ๏ผ | |
| - ESP32-CAM ๆๅ ถไปๆฏๆ WebSocket ็ๆๅๅคด | |
| - ้บฆๅ ้ฃ๏ผ็จไบ่ฏญ้ณ่พๅ ฅ๏ผ | |
| - ๆฌๅฃฐๅจ/่ณๆบ๏ผ็จไบ่ฏญ้ณ่พๅบ๏ผ | |
| ### ่ฝฏไปถ่ฆๆฑ | |
| - **ๆไฝ็ณป็ป**: Windows 10/11, Linux (Ubuntu 20.04+), macOS 10.15+ | |
| - **Python**: 3.9 - 3.11 | |
| - **CUDA**: 11.8 ๆๆด้ซ็ๆฌ๏ผGPU ๅ ้ๅฟ ้๏ผ | |
| - **ๆต่งๅจ**: Chrome 90+, Firefox 88+, Edge 90+๏ผ็จไบ Web ็ๆง๏ผ | |
| ### API ๅฏ้ฅ | |
| - **้ฟ้ไบ DashScope API Key**๏ผๅฟ ้๏ผ๏ผ | |
| - ็จไบ่ฏญ้ณ่ฏๅซ๏ผASR๏ผๅ Qwen-Omni ๅฏน่ฏ | |
| - ็ณ่ฏทๅฐๅ๏ผhttps://dashscope.console.aliyun.com/ | |
| ## ๐ ๅฟซ้ๅผๅง | |
| ### 1. ๅ ้้กน็ฎ | |
| ```bash | |
| git clone https://github.com/yourusername/aiglass.git | |
| cd aiglass/rebuild1002 | |
| ``` | |
| ### 2. ๅฎ่ฃ ไพ่ต | |
| #### ๅๅปบ่ๆ็ฏๅข๏ผๆจ่๏ผ | |
| ```bash | |
| python -m venv venv | |
| # Windows | |
| venv\Scripts\activate | |
| # Linux/macOS | |
| source venv/bin/activate | |
| ``` | |
| #### ๅฎ่ฃ Python ๅ | |
| ```bash | |
| pip install -r requirements.txt | |
| ``` | |
| #### ๅฎ่ฃ CUDA ๅ cuDNN๏ผGPU ๅ ้๏ผ | |
| ่ฏทๅ่ [NVIDIA CUDA Toolkit ๅฎ่ฃ ๆๅ](https://developer.nvidia.com/cuda-downloads) | |
| ### 3. ไธ่ฝฝๆจกๅๆไปถ | |
| ๅฐไปฅไธๆจกๅๆไปถๆพๅ ฅ `model/` ็ฎๅฝ๏ผ | |
| | ๆจกๅๆไปถ | ็จ้ | ๅคงๅฐ | ไธ่ฝฝ้พๆฅ | | |
| |---------|------|------|---------| | |
| | `yolo-seg.pt` | ็ฒ้ๅๅฒ | ~50MB | [ๅพ ่กฅๅ ] | | |
| | `yoloe-11l-seg.pt` | ๅผๆพ่ฏๆฑๆฃๆต | ~80MB | [ๅพ ่กฅๅ ] | | |
| | `shoppingbest5.pt` | ็ฉๅ่ฏๅซ | ~30MB | [ๅพ ่กฅๅ ] | | |
| | `trafficlight.pt` | ็บข็ปฟ็ฏๆฃๆต | ~20MB | [ๅพ ่กฅๅ ] | | |
| | `hand_landmarker.task` | ๆ้จๆฃๆต | ~15MB | [MediaPipe Models](https://developers.google.com/mediapipe/solutions/vision/hand_landmarker#models) | | |
| ### 4. ้ ็ฝฎ API ๅฏ้ฅ | |
| ๅๅปบ `.env` ๆไปถ๏ผ | |
| ```bash | |
| # .env | |
| DASHSCOPE_API_KEY=your_api_key_here | |
| ``` | |
| ๆๅจไปฃ็ ไธญ็ดๆฅไฟฎๆน๏ผไธๆจ่๏ผ๏ผ | |
| ```python | |
| # app_main.py, line 50 | |
| API_KEY = "your_api_key_here" | |
| ``` | |
| ### 5. ๅฏๅจ็ณป็ป | |
| ```bash | |
| python app_main.py | |
| ``` | |
| ็ณป็ปๅฐๅจ `http://0.0.0.0:8081` ๅฏๅจ๏ผๆๅผๆต่งๅจ่ฎฟ้ฎๅณๅฏ็ๅฐๅฎๆถ็ๆง็้ขใ | |
| ### 6. ่ฟๆฅ่ฎพๅค๏ผๅฏ้๏ผ | |
| ๅฆๆไฝฟ็จ ESP32-CAM๏ผ่ฏท๏ผ | |
| 1. ็งๅฝ `compile/compile.ino` ๅฐ ESP32 | |
| 2. ไฟฎๆน WiFi ้ ็ฝฎ๏ผ่ฟๆฅๅฐๅไธ็ฝ็ป | |
| 3. ESP32 ่ชๅจ่ฟๆฅๅฐ WebSocket ็ซฏ็น | |
| ## ๐๏ธ ็ณป็ปๆถๆ | |
| ### ๆดไฝๆถๆ | |
| ``` | |
| โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| โ ๅฎขๆท็ซฏๅฑ โ | |
| โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ | |
| โ โ ESP32-CAM โ โ ๆต่งๅจ โ โ ็งปๅจ็ซฏ โ โ | |
| โ โ (่ง้ข/้ณ้ข) โ โ (็ๆง็้ข) โ โ (่ฏญ้ณๆงๅถ) โ โ | |
| โ โโโโโโโโฌโโโโโโโโ โโโโโโโโฌโโโโโโโโ โโโโโโโโฌโโโโโโโโ โ | |
| โโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโ | |
| โ WebSocket โ HTTP/WS โ WebSocket | |
| โโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโ | |
| โ โ โ โ โ | |
| โ โโโโโโผโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโผโโโโโโโโโ โ | |
| โ โ FastAPI ไธปๆๅก (app_main.py) โ โ | |
| โ โ - WebSocket ่ทฏ็ฑ็ฎก็ โ โ | |
| โ โ - ้ณ่ง้ขๆตๅๅ โ โ | |
| โ โ - ็ถๆ็ฎก็ไธๅ่ฐ โ โ | |
| โ โโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ โ | |
| โ โ โ โ โ | |
| โ โโโโโโโโผโโโโโโโ โโโโโโโโผโโโโโโโ โโโโโโโโผโโโโโโโ โ | |
| โ โ ASR ๆจกๅ โ โ Omni ๅฏน่ฏ โ โ ้ณ้ขๆญๆพ โ โ | |
| โ โ (asr_core) โ โ(omni_client)โ โ(audio_player)โ โ | |
| โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ | |
| โ โ | |
| โ ๅบ็จๅฑ โ | |
| โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| โ โ โ | |
| โโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโ | |
| โ ๅฏผ่ช็ป้ขๅฑ โ | |
| โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ | |
| โ โ NavigationMaster (navigation_master.py) โ โ | |
| โ โ - ็ถๆๆบ๏ผIDLE/CHAT/BLINDPATH_NAV/ โ โ | |
| โ โ CROSSING/TRAFFIC_LIGHT/ITEM_SEARCH โ โ | |
| โ โ - ๆจกๅผๅๆขไธๅ่ฐ โ โ | |
| โ โโโโโฌโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโฌโโโโ โ | |
| โ โ โ โ โ | |
| โ โโโโโโผโโโโโโโโโ โโโโโโโโโโผโโโโโโโโโ โโโโโโโผโโโโโโโ โ | |
| โ โ ็ฒ้ๅฏผ่ช โ โ ่ฟ้ฉฌ่ทฏๅฏผ่ช โ โ ็ฉๅๆฅๆพ โ โ | |
| โ โ(blindpath) โ โ (crossstreet) โ โ(yolomedia) โ โ | |
| โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ | |
| โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| โ โ โ | |
| โโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโ | |
| โ ๆจกๅๆจ็ๅฑ โ | |
| โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ | |
| โ โ YOLO ๅๅฒ โ โ YOLO-E ๆฃๆต โ โ MediaPipe โ โ | |
| โ โ (็ฒ้/ๆ้ฉฌ็บฟ) โ โ (ๅผๆพ่ฏๆฑ) โ โ (ๆ้จๆฃๆต) โ โ | |
| โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ | |
| โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ | |
| โ โ ็บข็ปฟ็ฏๆฃๆต โ โ ๅ ๆต็จณๅฎ โ โ | |
| โ โ(HSV+YOLO) โ โ(Lucas-Kanade)โ โ | |
| โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ | |
| โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| โ | |
| โโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| โ ๅค้จๆๅกๅฑ โ | |
| โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ | |
| โ โ ้ฟ้ไบ DashScope API โ โ | |
| โ โ - Paraformer ASR (ๅฎๆถ่ฏญ้ณ่ฏๅซ) โ โ | |
| โ โ - Qwen-Omni-Turbo (ๅคๆจกๆๅฏน่ฏ) โ โ | |
| โ โ - Qwen-Turbo (ๆ ็ญพๆๅ) โ โ | |
| โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ | |
| โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| ``` | |
| ### ๆ ธๅฟๆจกๅ่ฏดๆ | |
| | ๆจกๅ | ๆไปถ | ๅ่ฝ | | |
| |------|------|------| | |
| | **ไธปๅบ็จ** | `app_main.py` | FastAPI ๆๅกใWebSocket ็ฎก็ใ็ถๆๅ่ฐ | | |
| | **ๅฏผ่ช็ป้ข** | `navigation_master.py` | ็ถๆๆบ็ฎก็ใๆจกๅผๅๆขใ่ฏญ้ณ่ๆต | | |
| | **็ฒ้ๅฏผ่ช** | `workflow_blindpath.py` | ็ฒ้ๆฃๆตใ้ฟ้ใ่ฝฌๅผฏๅผๅฏผ | | |
| | **่ฟ้ฉฌ่ทฏๅฏผ่ช** | `workflow_crossstreet.py` | ๆ้ฉฌ็บฟๆฃๆตใ็บข็ปฟ็ฏ่ฏๅซใๅฏน้ฝๅผๅฏผ | | |
| | **็ฉๅๆฅๆพ** | `yolomedia.py` | ็ฉๅๆฃๆตใๆ้จๅผๅฏผใๆๅ็กฎ่ฎค | | |
| | **่ฏญ้ณ่ฏๅซ** | `asr_core.py` | ๅฎๆถ ASRใVADใๆไปค่งฃๆ | | |
| | **่ฏญ้ณๅๆ** | `omni_client.py` | Qwen-Omni ๆตๅผ่ฏญ้ณ็ๆ | | |
| | **้ณ้ขๆญๆพ** | `audio_player.py` | ๅค่ทฏๆทท้ณใTTS ๆญๆพใ้ณ้ๆงๅถ | | |
| | **่ง้ขๅฝๅถ** | `sync_recorder.py` | ้ณ่ง้ขๅๆญฅๅฝๅถ | | |
| | **ๆกฅๆฅ IO** | `bridge_io.py` | ็บฟ็จๅฎๅ จ็ๅธง็ผๅฒไธๅๅ | | |
| ## ๐ ไฝฟ็จ่ฏดๆ | |
| ### ่ฏญ้ณๆไปค | |
| ็ณป็ปๆฏๆไปฅไธ่ฏญ้ณๆไปค๏ผ่ฏด่ฏๆถๆ ้ๅค้่ฏ๏ผ๏ผ | |
| #### ๅฏผ่ชๆงๅถ | |
| ``` | |
| "ๅผๅงๅฏผ่ช" / "็ฒ้ๅฏผ่ช" โ ๅฏๅจ็ฒ้ๅฏผ่ช | |
| "ๅๆญขๅฏผ่ช" / "็ปๆๅฏผ่ช" โ ๅๆญข็ฒ้ๅฏผ่ช | |
| "ๅผๅง่ฟ้ฉฌ่ทฏ" / "ๅธฎๆ่ฟ้ฉฌ่ทฏ" โ ๅฏๅจ่ฟ้ฉฌ่ทฏๆจกๅผ | |
| "่ฟ้ฉฌ่ทฏ็ปๆ" / "็ปๆ่ฟ้ฉฌ่ทฏ" โ ๅๆญข่ฟ้ฉฌ่ทฏๆจกๅผ | |
| ``` | |
| #### ็บข็ปฟ็ฏๆฃๆต | |
| ``` | |
| "ๆฃๆต็บข็ปฟ็ฏ" / "็็บข็ปฟ็ฏ" โ ๅฏๅจ็บข็ปฟ็ฏๆฃๆต | |
| "ๅๆญขๆฃๆต" / "ๅๆญข็บข็ปฟ็ฏ" โ ๅๆญขๆฃๆต | |
| ``` | |
| #### ็ฉๅๆฅๆพ | |
| ``` | |
| "ๅธฎๆๆพไธไธ [็ฉๅๅ]" โ ๅฏๅจ็ฉๅๆ็ดข | |
| ็คบไพ๏ผ | |
| - "ๅธฎๆๆพไธไธ็บข็" | |
| - "ๆพไธไธAD้ๅฅถ" | |
| - "ๅธฎๆๆพ็ฟๆณๆฐด" | |
| "ๆพๅฐไบ" / "ๆฟๅฐไบ" โ ็กฎ่ฎคๆพๅฐ็ฉๅ | |
| ``` | |
| #### ๆบ่ฝๅฏน่ฏ | |
| ``` | |
| "ๅธฎๆ็็่ฟๆฏไปไน" โ ๆ็ ง่ฏๅซ | |
| "่ฟไธชไธ่ฅฟ่ฝๅๅ" โ ็ฉๅๅจ่ฏข | |
| ไปปไฝๅ ถไป้ฎ้ข โ AI ๅฏน่ฏ | |
| ``` | |
| ### ๅฏผ่ช็ถๆ่ฏดๆ | |
| ็ณป็ปๅ ๅซไปฅไธไธป่ฆ็ถๆ๏ผ่ชๅจๅๆข๏ผ๏ผ | |
| 1. **IDLE** - ็ฉบ้ฒ็ถๆ | |
| - ็ญๅพ ็จๆทๆไปค | |
| - ๆพ็คบๅๅง่ง้ขๆต | |
| 2. **CHAT** - ๅฏน่ฏๆจกๅผ | |
| - ไธ AI ่ฟ่กๅคๆจกๆๅฏน่ฏ | |
| - ๆๅๅฏผ่ชๅ่ฝ | |
| 3. **BLINDPATH_NAV** - ็ฒ้ๅฏผ่ช | |
| - **ONBOARDING**: ไธ็ฒ้ๅผๅฏผ | |
| - ROTATION: ๆ่ฝฌๅฏนๅ็ฒ้ | |
| - TRANSLATION: ๅนณ็งป่ณ็ฒ้ไธญๅฟ | |
| - **NAVIGATING**: ๆฒฟ็ฒ้่ก่ตฐ | |
| - ๅฎๆถๆนๅไฟฎๆญฃ | |
| - ้็ข็ฉๆฃๆต | |
| - **MANEUVERING_TURN**: ่ฝฌๅผฏๅค็ | |
| - **AVOIDING_OBSTACLE**: ้ฟ้ | |
| 4. **CROSSING** - ่ฟ้ฉฌ่ทฏๆจกๅผ | |
| - **SEEKING_CROSSWALK**: ๅฏปๆพๆ้ฉฌ็บฟ | |
| - **WAIT_TRAFFIC_LIGHT**: ็ญๅพ ็ปฟ็ฏ | |
| - **CROSSING**: ่ฟ้ฉฌ่ทฏไธญ | |
| - **SEEKING_NEXT_BLINDPATH**: ๅฏปๆพๅฏน้ข็ฒ้ | |
| 5. **ITEM_SEARCH** - ็ฉๅๆฅๆพ | |
| - ๅฎๆถๆฃๆต็ฎๆ ็ฉๅ | |
| - ๅผๅฏผๆ้จ้ ่ฟ | |
| - ็กฎ่ฎคๆๅ | |
| 6. **TRAFFIC_LIGHT_DETECTION** - ็บข็ปฟ็ฏๆฃๆต | |
| - ๅฎๆถๆฃๆต็บข็ปฟ็ฏ็ถๆ | |
| - ่ฏญ้ณๆญๆฅ้ข่ฒๅๅ | |
| ### Web ็ๆง็้ข | |
| ๆๅผๆต่งๅจ่ฎฟ้ฎ `http://localhost:8081`๏ผๅฏไปฅ็ๅฐ๏ผ | |
| - **ๅฎๆถ่ง้ขๆต**๏ผๆพ็คบๅค็ๅ็่ง้ข๏ผๅ ๆฌๅฏผ่ชๆ ๆณจ | |
| - **็ถๆ้ขๆฟ**๏ผๅฝๅๆจกๅผใๆฃๆตไฟกๆฏใFPS | |
| - **IMU ๅฏ่งๅ**๏ผ่ฎพๅคๅงฟๆ 3D ๅฎๆถๆธฒๆ | |
| - **่ฏญ้ณ่ฏๅซ็ปๆ**๏ผๆพ็คบ่ฏๅซ็ๆๅญๅ AI ๅๅค | |
| ### WebSocket ็ซฏ็น | |
| | ็ซฏ็น | ็จ้ | ๆฐๆฎๆ ผๅผ | | |
| |------|------|---------| | |
| | `/ws/camera` | ESP32 ็ธๆบๆจๆต | Binary (JPEG) | | |
| | `/ws/viewer` | ๆต่งๅจ่ฎข้ ่ง้ข | Binary (JPEG) | | |
| | `/ws_audio` | ESP32 ้ณ้ขไธไผ | Binary (PCM16) | | |
| | `/ws_ui` | UI ็ถๆๆจ้ | JSON | | |
| | `/ws` | IMU ๆฐๆฎๆฅๆถ | JSON | | |
| | `/stream.wav` | ้ณ้ขไธ่ฝฝๆต | Binary (WAV) | | |
| ## โ๏ธ ้ ็ฝฎ่ฏดๆ | |
| ### ็ฏๅขๅ้ | |
| ๅๅปบ `.env` ๆไปถ้ ็ฝฎไปฅไธๅๆฐ๏ผ | |
| ```bash | |
| # ้ฟ้ไบ API | |
| DASHSCOPE_API_KEY=sk-xxxxx | |
| # ๆจกๅ่ทฏๅพ๏ผๅฏ้๏ผไฝฟ็จ้ป่ฎค่ทฏๅพๅฏไธ้ ็ฝฎ๏ผ | |
| BLIND_PATH_MODEL=model/yolo-seg.pt | |
| OBSTACLE_MODEL=model/yoloe-11l-seg.pt | |
| YOLOE_MODEL_PATH=model/yoloe-11l-seg.pt | |
| # ๅฏผ่ชๅๆฐ | |
| AIGLASS_MASK_MIN_AREA=1500 # ๆๅฐๆฉ็ ้ข็งฏ | |
| AIGLASS_MASK_MORPH=3 # ๅฝขๆๅญฆๆ ธๅคงๅฐ | |
| AIGLASS_MASK_MISS_TTL=6 # ๆฉ็ ไธขๅคฑๅฎนๅฟๅธงๆฐ | |
| AIGLASS_PANEL_SCALE=0.65 # ๆฐๆฎ้ขๆฟ็ผฉๆพ | |
| # ้ณ้ข้ ็ฝฎ | |
| TTS_INTERVAL_SEC=1.0 # ่ฏญ้ณๆญๆฅ้ด้ | |
| ENABLE_TTS=true # ๅฏ็จ่ฏญ้ณๆญๆฅ | |
| ``` | |
| ### ไฟฎๆนๆจกๅ่ทฏๅพ | |
| ๅฆๆๆจกๅๆไปถไธๅจ้ป่ฎคไฝ็ฝฎ๏ผๅฏไปฅๅจ็ธๅบๆไปถไธญไฟฎๆน๏ผ | |
| ```python | |
| # workflow_blindpath.py | |
| seg_model_path = "your/custom/path/yolo-seg.pt" | |
| # yolomedia.py | |
| YOLO_MODEL_PATH = "your/custom/path/shoppingbest5.pt" | |
| HAND_TASK_PATH = "your/custom/path/hand_landmarker.task" | |
| ``` | |
| ### ่ฐๆดๆง่ฝๅๆฐ | |
| ๆ นๆฎ็กฌไปถๆง่ฝ่ฐๆด๏ผ | |
| ```python | |
| # yolomedia.py | |
| HAND_DOWNSCALE = 0.8 # ๆ้จๆฃๆต้้ๆ ท๏ผ่ถๅฐ่ถๅฟซ๏ผ็ฒพๅบฆ้ไฝ๏ผ | |
| HAND_FPS_DIV = 1 # ๆ้จๆฃๆตๆฝๅธง๏ผ2=้ๅธง๏ผ3=ๆฏ3ๅธง๏ผ | |
| # workflow_blindpath.py | |
| FEATURE_PARAMS = dict( | |
| maxCorners=600, # ๅ ๆต็นๅพ็นๆฐ๏ผ่ถๅฐ่ถๅฟซ๏ผ | |
| qualityLevel=0.001, # ็นๅพ็น่ดจ้ | |
| minDistance=5 # ็นๅพ็นๆๅฐ้ด่ท | |
| ) | |
| ``` | |
| ## ๐ ๏ธ ๅผๅๆๆกฃ | |
| ### ๆทปๅ ๆฐ็่ฏญ้ณๆไปค | |
| 1. ๅจ `app_main.py` ็ `start_ai_with_text_custom()` ๅฝๆฐไธญๆทปๅ ๏ผ | |
| ```python | |
| # ๆฃๆฅๆฐๆไปค | |
| if "ๆฐๆไปคๅ ณ้ฎ่ฏ" in user_text: | |
| # ๆง่ก่ชๅฎไน้ป่พ | |
| print("[CUSTOM] ๆฐๆไปค่ขซ่งฆๅ") | |
| await ui_broadcast_final("[็ณป็ป] ๆฐๅ่ฝๅทฒๅฏๅจ") | |
| return | |
| ``` | |
| 2. ๅฆ้ไฟฎๆนๆไปค่ฟๆปค่งๅ๏ผ | |
| ```python | |
| # ไฟฎๆน allowed_keywords ๅ่กจ | |
| allowed_keywords = ["ๅธฎๆ็", "ๅธฎๆๆพ", "ไฝ ็ๆฐๅ ณ้ฎ่ฏ"] | |
| ``` | |
| ### ๆฉๅฑๅฏผ่ชๅ่ฝ | |
| 1. ๅจ `workflow_blindpath.py` ๆทปๅ ๆฐ็ถๆ๏ผ | |
| ```python | |
| # ๅจ BlindPathNavigator.__init__() ไธญๅๅงๅ | |
| self.your_new_state_var = False | |
| # ๅจ process_frame() ไธญๅค็ | |
| def process_frame(self, image): | |
| if self.your_new_state_var: | |
| # ่ชๅฎไนๅค็้ป่พ | |
| guidance_text = "ๆฐ็ถๆๅผๅฏผ" | |
| # ... | |
| ``` | |
| 2. ๅจ `navigation_master.py` ๆทปๅ ็ถๆๆบ็ถๆ๏ผ | |
| ```python | |
| class NavigationMaster: | |
| def start_your_new_mode(self): | |
| self.state = "YOUR_NEW_MODE" | |
| # ๅๅงๅ้ป่พ | |
| ``` | |
| ### ้ๆๆฐๆจกๅ | |
| 1. ๅๅปบๆจกๅๅ ่ฃ ็ฑป๏ผ | |
| ```python | |
| # your_model_wrapper.py | |
| class YourModelWrapper: | |
| def __init__(self, model_path): | |
| self.model = load_your_model(model_path) | |
| def detect(self, image): | |
| # ๆจ็้ป่พ | |
| return results | |
| ``` | |
| 2. ๅจ `app_main.py` ไธญๅ ่ฝฝ๏ผ | |
| ```python | |
| your_model = YourModelWrapper("model/your_model.pt") | |
| ``` | |
| 3. ๅจ็ธๅบ็ๅทฅไฝๆตไธญ่ฐ็จ๏ผ | |
| ```python | |
| results = your_model.detect(image) | |
| ``` | |
| ### ่ฐ่ฏๆๅทง | |
| 1. **ๅฏ็จ่ฏฆ็ปๆฅๅฟ**๏ผ | |
| ```python | |
| # app_main.py ้กถ้จ | |
| import logging | |
| logging.basicConfig(level=logging.DEBUG) | |
| ``` | |
| 2. **ๆฅ็ๅธง็็ถ้ข**๏ผ | |
| ```python | |
| # yolomedia.py | |
| PERF_DEBUG = True # ๆๅฐๅค็ๆถ้ด | |
| ``` | |
| 3. **ๆต่ฏๅไธชๆจกๅ**๏ผ | |
| ```bash | |
| # ๆต่ฏ็ฒ้ๅฏผ่ช | |
| python test_cross_street_blindpath.py | |
| # ๆต่ฏ็บข็ปฟ็ฏๆฃๆต | |
| python test_traffic_light.py | |
| # ๆต่ฏๅฝๅถๅ่ฝ | |
| python test_recorder.py | |
| ``` | |
| ## ๐ ่ฎธๅฏ่ฏ | |
| ๆฌ้กน็ฎ้็จ MIT ่ฎธๅฏ่ฏ - ่ฏฆ่ง [LICENSE](LICENSE) ๆไปถ | |