請看一下 原始網站: 我把這個判讀臉部表情 (及性別) 的程式 複製回來並小改一下, 然後打包成 face_classification docker 讓大家玩。 情緒判斷還蠻有一點像的; 可是鬍子先生為什麼竟然被判斷成女性呢?
一、 試玩
以下假設你已略懂 docker。
- 抓回我打包的 docker:
docker pull ckhung/face_classification:18C
後面的 :18C 請依 最新狀況 調整。 - 啟動, 命名為 fc, 把服務放在 port 15984 :
docker run -d --name fc -p 15984:8084 ckhung/face_classification:18C
- 找一張表情豐富的相片, 例如叫做 some_faces.jpg 。 可以包含不只一張臉。
- 把判讀結果直接畫在原圖上面。 傳回來的新的固定是 png 格式。
curl -F image=@some_faces.jpg http://localhost:15984/emo/mark > result.png
- 以 json 文字格式顯示判讀結果:
curl -F image=@some_faces.jpg http://localhost:15984/emo/label > result.json
如果想要進去 docker 裡面探索, 可以在啟動之後,
在另外的終端機視窗這樣下:
docker exec -it fc bash
二、 修改筆記
- 我先修改 image_emotion_gender_demo.py -- 命令列版比較好測試。 主要是叫程式去讀 FACE_CLASSIFICATION_PATH 這個環境變數來決定程式碼的位置。
- 原來的程式已有 flask 加上傳檔案功能, 所以不需要自己從頭寫起。 但修改程式時遇到奇怪的問題, 每次建立新的 docker, 第一次測試成功; 第二次以後就會出錯。 卡關很久後終於找到 這個問答, 發現應該是原程式忘記呼叫 keras.clear_session()。 最後採取第三個解答 (的變形), 在 src/web/faces.py 裡面的 app.run(...) 裡面加上 threaded=False。 如果你的服務需要提供給很多客戶端使用, 應該要改採第一個解答才對。
- 重建 docker image 時, 改以 ml-jupyter-python3 為基礎比較快, 可以略過一些套件的安裝步驟。
不求甚解工程師做到這裡就滿足了, 性別問題就不處理了, 直接收工吧。
沒有留言:
張貼留言
因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。