# Project -- Image Text Detection (ITD) ## 專案介紹 * **ITD** 為使用者提供線上平台,讓用戶能夠上傳影片,並下載經過物件追蹤的影片以及相關物件詳細資訊。 * 使用者能夠快速獲得物件追蹤影片,並深入分析影片中物件的細節資訊。 [**專案 Demo 連結**](https://www.youtube.com/live/OqySkXc2ye0?t=1528s) <!-- ![ITD-home page](https://hackmd.io/_uploads/rkdOV43TT.jpg) <center style="color:brown;"> 點擊右上 註冊/登入 即可開始體驗服務。 </center> </br> ![image](https://hackmd.io/_uploads/r1ll34h6T.png) <center style="color:brown;"> 會員頁面提供影片下載連結,點擊下方上傳影片。 </center> </br> ![image](https://hackmd.io/_uploads/SJXycohap.png) <center style="color:brown;"> 上傳影片後稍待片刻。 </center> <!-- [**專案連結**](https://leo145x.com) --> --> [**專案原始碼連結**](https://github.com/Leo145x/ITD) ## 專案架構 ![image](https://hackmd.io/_uploads/rywOirn6T.png) ## 詳細流程 1. 使用者上傳影片至 *GCP VM*,該伺服器接著將影片上傳至 *GCP Video Interlligence* 進行物件辨識。 2. *GCP VM* 將辨識結果逐幀繪製在原影片上,並將繪製後的影片與標籤檔上傳至 *AWS S3*,再透過 *AWS Cloud Front* 部署。 3. *GCP VM* 發出 request 至 *AWS EC2 (web sever)*,其包含部署連結以及用戶等資訊。 4. *AWS EC2 (web sever)* 利用 *AWS RDS (MySQL)* 更新用戶資料。 5. 透過 *Socket.IO* 及時通知用戶影片辨識已完成。 ## 開發挑戰 ### 1. 雙伺服器 : > 使用 [*AWS EC2 免費方案*](https://aws.amazon.com/tw/ec2/pricing/),經嘗試後遇到該伺服器無法有效繪製影片或影響用戶體驗等情況。因此,另啟 *GCP VM* 作為影像處理專用伺服器。 > * 資源優化與任務分工 > * 降低伺服器租用成本 <span style="color:red">經驗學習 : </span>`跨域請求` `版本控制` ### 2. 流程改善 : > 影片解析過程透過 *Python threading* 實現多執行緒處理,確保原影片上傳完成後,立即回應瀏覽器請求,從而避免 *Timeout* 。 > * 降低用戶體感等待時間 > * 避免大量長時間等待的請求 <span style="color:red">經驗學習 : </span>`多執行緒處理` <!-- ## 系統框架開發相關經驗 ### 背景與挑戰 在 Allxon (奧暢雲) 擔任後端工程師期間,我負責設計和維護 API。起初,我們的架構基於 AWS Lambda 並結合負載均衡器,但每個 API 的路徑和請求主體均需手動撰寫驗證邏輯。隨著系統功能的不斷擴展,這種做法逐漸顯現出維護上的困難,導致開發效率降低,並增加系統的技術債。 ### 解決方案 為了提升架構的可維護性與開發效率,嘗試引入 Pydantic 作為自動化驗證工具。Pydantic 能夠實現對資料結構的嚴格驗證,並透過簡單定義正則表達式進行約束,從而大幅減少重複性的驗證程式碼。 ### 成果與效益 這個改動顯著提升了系統的模組化和一致性,並加強程式碼的可讀性與可擴展性。整個開發過程變得更加高效,同時有效地減輕了技術債。 --> <!-- </br> --> <!-- > [name=Leo Hung][time=Tue, Nov 12, 2024 12:14 PM][color=red] -->