在接下來的30天會製作一個完整的系統包含前端-手機/網頁,後端-Nginx + Django,以及辨識模型 YOLO 的建立,詳細架構如下圖。
圖 1、觀賞魚辨識系統架構圖
用戶使用手機拍攝觀賞魚的照片,透過 RESTful Web API 上傳到亞馬遜AWS的 EC2 虛擬主機上,在主機上我們安裝了Nginx網頁伺服器來接收網頁需求,它會把 RESTful Web API 的請求轉送到 Python 的 Django 網頁框架,把圖片傳給 YOLO 的影像辨識模型進行辨識,得到預測結果後,把文字結果傳給 MariaDB 資料庫去獲取更多的觀賞魚相關資料,如魚的中文名稱,生活習性等;把圖片結果儲存到文件中。並把這些資訊轉成JSON格式當成是 RESTful Web API 的回覆,回傳給用戶,並呈現在手機上。畫面會如下圖所示。
圖 2、觀賞魚辨識系統操作畫面
需要實作的觀賞魚辨識系統服務如下,共有五個功能需要完成,分別為使用者的操作介面、RESTful API、資料庫、網站伺服器以及影像辨識服務等。下表分別列出所需要的軟硬體元件,主要的實作都是在 AWS 雲上完成,如果時間允許,會考慮相關服務都轉換成 AWS 的其他對應服務,如 RESTful API 與 網站伺服器使用 Amazon API Gateway 搭配 Lambda 與 S3 來完成,資料庫用 DynamoDB 來完成,不用 RDS 的原因,是因為 RDS 需要租用整個實例而非使用空間,而影像辨識就以亞馬遜的 Sagemaker 來取代,這樣就可以完成無服務器的實作,只是需要時間來嘗試,不確定是否可以完成。不過,光是目前的工作量就可以安排 30 天了。
表 1、系統需要實作的服務列表
服務 | 軟體 | 硬體 | 功能說明 |
---|---|---|---|
操作介面 | Vue.js | 手機/個人電腦 | Capture photo Compress/resize the photo Call the RESTful API to Upload photo Parse the response from web server Display the result |
RESTful API | Django/Python | AWS EC2 | Handle RESTful API Interact with database Interact with YOLO model |
資料庫 | MariaDB | AWS EC2 | Manipulate information of ornamental fishes |
網站伺服器 | Nginx | AWS EC2 | Provide the processed images |
影像辨識 | YOLO model | AWS EC2 | Train the datasetTest/recognize the photo |