一、簡介
「Live ML anywhere」,一進入到MediaPipe 介紹網頁就能看到這行綜觀全文的標語,沒錯!MediaPipe 是Google於2019年發表的開源專案,此專案針對電腦視覺(Computer vision)提供了跨平台的相關應用。不論您是使用C++ 作為主要的開發語言,或是撰寫前端網頁的工程師,又或是擅長用Python處理資料的高手,都能依照自己喜歡的語言,找到對應的方法體驗與使用這強大的機器學習程式庫。
二、支援的語言與功能
透過下表我們可以找到每個語言與平台支援的功能,像是手機端支援最多功能的是Android,而使用C++語言開發的使用者能體驗到較多的功能。
Android | iOS | C++ | Python | JS | Coral | |
Face Detection | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Face Mesh | ✅ | ✅ | ✅ | ✅ | ✅ | |
Iris | ✅ | ✅ | ✅ | |||
Hands | ✅ | ✅ | ✅ | ✅ | ✅ | |
Pose | ✅ | ✅ | ✅ | ✅ | ✅ | |
Holistic | ✅ | ✅ | ✅ | ✅ | ✅ | |
Hair Segmentation | ✅ | ✅ | ||||
Object Detection | ✅ | ✅ | ✅ | ✅ | ||
Box Tracking | ✅ | ✅ | ✅ | |||
Instant Motion Tracking | ✅ | |||||
Objectron | ✅ | ✅ | ✅ | |||
KNIFT | ✅ | |||||
AutoFlip | ✅ | |||||
MediaSequence | ✅ | |||||
YouTube 8M |
應用教學系列我們將採用Python這個程式語言來執行各個功能,那為什麼不是使用支援最多項目的C++呢?因為在電腦視覺的領域裡,支援最多應用框架與社群的正是 Python。其處理影像的教學內容也較其他語言來的多,重點是程式碼簡潔、邏輯易懂,相當適合初入門的使用者學習,可以很快地找到問題的答案。對於已經有一定了解的使用者,多半也是用 Python在著名的深度學習框架Tensorflow 或Pytorch 上,創造自己的辨識模型。基於上述原因,就讓我們使用 Python來進行 MediaPipe的各項功能吧!
三、安裝執行環境
如果您是有用過Python 的使用者,也有用過pip安裝過套件,可以參考官方的安裝說明,或依照自己習慣的方式安裝MediaPipe。
您若是初學者或不是那麼熟的Python 使用者,可以參照接下來的教學。
小編強烈建議您使用Miniconda來建構您的環境,Miniconda可以建構虛擬環境,每個虛擬環境各自獨立。在執行每項專案的過程中,往往會有套件與套件之間版本相容的問題。例如A專案與B專案共同使用了一個套件名為numpy,A專案只能使用1.6以下的版本,而B專案則需要較新的版本,倘若用同一個環境執行,就會有擇一的問題。這時候若是A專案、B專案各自有獨立的環境,是不是就能解決這個問題呢!
1. 下載Miniconda
進入Miniconda下載頁面,依照自己的作業系統下載對應的軟體,Python版本的部份建議使用Python 3.X,因為Python 2已經不支援更新了。
小編的電腦是64位元的Windows電腦,Python版本選擇3.8,所以選擇Python 3.8後面的Miniconda3 Windows 64-bit下載。
2. 安裝Miniconda
下載完畢後安裝,這邊也以Windows作為示範,基本上安裝都是直接按下一步即可,除了遇到下圖的部份,請勾選藍框的選項,將其加入系統的環境變數中,之後就狂按下一步完成安裝吧!
安裝完畢後於電腦的搜尋上輸入「miniconda」,就能找到安裝好的軟體。
四、設定執行環境
1. 創建虛擬環境
開啟「Anaconda Prompt (Miniconda3)」,這是一個終端機的應用程式,我們會在這個終端機上輸入指令來創建虛擬環境與啟動虛擬環境。
接著我們來創建一個虛擬的環境,創建虛擬指令的規則如下:
A. 呼叫「conda」指令來執行與conda環境有關的功能,後續的指令碼須以空格隔開。
B. 在conda功能內有不少指令,其中「create」表示要創建一個虛擬環境。
C. 每個指令功能有著需要填入的參數,像是創建一個虛擬環境,您需要為這個環境命名,以便之後能依照名稱呼叫它,「-n」就是告訴create指令後方的英文是該虛擬環境的名稱。
D. 這段文字就是虛擬環境的名稱,您可以依照喜好命名,這邊以「mediapipe」作為示範名稱。
E. 您可以自由的調整虛擬環境內Python的版本,只要不要超過安裝Miniconda軟體時選的版本,基本上都給過,這邊選擇3.8,若想使用其他版本,可於「=」符號後方自行輸入版本號。
請於終端機輸入上述指令,並按下「Enter」執行這行創建Python版本3.8,名稱為mediapipe的虛擬環境指令。
接著系統會說創建這個環境需要順便安裝一些相依的軟體,並要求您的同意,請輸入「y」,輸入小寫的y後並按下「Enter」同意安裝。
安裝過程中會邊下載相關套件邊安裝,所以需要一點時間,安裝完成後會跳出提示視窗,如下圖所示:
2. 啟動虛擬環境與跳出虛擬環境說明
上一張圖內的黃框提示了啟動與關閉虛擬環境所要輸入的指令,若是想啟動某個虛擬環境,需要使用「activate」,跳出則用「deactivate」,詳細說明如下圖:
A. 執行conda相關指令必要的起手式。
B. 依照想要啟動或是跳出虛擬環境選擇「activate」或「deactivate」。
C. 若是要啟動虛擬環境,需要再指定「虛擬環境的名稱」,若是跳出則不用加上虛擬環境名稱。
請輸入啟動虛擬環境的指令,若是您有設定不同的名稱,請以自己的名稱為主。以下示範的虛擬環境名稱為「mediapipe」,指令輸入完畢後請按下「Enter」。
啟動虛擬環境後,可以看到輸入指令的那一行開頭從 (base)變成 (mediapipe),或是變成您設定的虛擬環境名稱。這表示現在所處的是您自己設定的虛擬環境,任何在之後輸入的安裝指令或變更動作,都不會影響到原來的環境 (base)。
往後開啟「Anaconda Prompt (Miniconda3)」後,都要記得先下「conda activate 虛擬環境名稱」指令進入虛擬環境,若想離開目前的虛擬環境可以使用「conda deactivate」。
3. 安裝MediaPipe
確認進入虛擬環境後,就可以開始安裝MediaPipe,請輸入如下圖指令:
A. 「pip」是一個Python的套件管理工具,在創建虛擬環境的時候有安裝一些相依的軟體,pip就是其中一個。我們將透過pip這個工具從網路上下載mediapipe。
B. 「install」是pip的安裝指令,當您輸入「pip install 要下載的軟體名稱」時,pip會到網路上的指定位置尋找軟體並安裝。
C. 想要下載安裝的軟體名稱。
輸入指令之後請按下「Enter」。
使用MediaPipe的功能有需要用到其他套件,安裝MediaPipe的過程中,pip也會去下載其他相依的套件,完成後如下圖所示:
五、結語
執行完上述動作後,即完成了環境的建置。在剛剛一系列的安裝過程當中雖然繁瑣,但我們會發現安裝套件的時候,不一定只會安裝單獨的套件,若是像MediaPipe這種有需要其他套件來協助的大型套件,通常就會安裝一些附帶的套件。就像安裝Miniconda時所描述的,若是大套件A附帶的小套件版本與另一個B套件衝突的話,那就沒戲唱了,所以虛擬環境真的是不錯的選擇。
關於虛擬環境的相關指令,可以查看Miniconda的官方網站,其實還有不少提供虛擬環境方案的軟體,有興趣的話可以上網自行Google。
之後的單元將會呼叫我們安裝好的MediaPipe套件,來執行各項在Python這個程式語言能執行的功能,那我們下篇文章見!
六、附錄
之後我們會處理Python程式碼的部份,所以會需要「文字編輯器」,我們會將程式碼貼在編輯器裡修改或撰寫新的程式碼。文字編輯器其實不是什麼新東西,能輸入文字並儲存或開檔案的都是文字編輯器,例如Windows 的記事本。
但一個好的文字編輯器,特別是程式設計師專用的文字編輯器,會有不少強大的功能,特別是文字顏色的部份,如下圖:
是不是右邊的可讀性較好了,撇開其他好用功能不說(自動補全程式碼….),至少有顏色能讓您修改的過程中不那麼眼花撩亂,當然這並不是必要的,您可以自己斟酌,小編推薦的文字編輯器有:
2. Atom
3. Sublime Text
4. Notepad++
針對上述的文字編輯器,網路上有相當多的教學能讓您參考,包含如何擴充其他功能,例如除錯、程式補全或是直接執行。功能最多的是Visual Studio Code,相對較陽春的是Notepad++,就依照自己的喜好選擇吧!當然~若是使用Windows 的記事本也可以,Respect!