近來,人工智能十分火熱,各類應用也越來越多。人工智能APP
人工智能需要大量數據作為燃料,還需要大量運算,會給人一種高深莫測的感覺。
實際上,AI也不是可望不可即的,因為很多企業都提供了API,多層的處理他們都解決了,我們需要只是調用結果,對人工智能的運用也是可以實現普及化的。
我們也可以利用APP Inventor結合各類API或插件(aix)的運用,使APP更聰明,是值得我們探究的!
人臉識別Face Detection aia源碼與素材 aix擴展組件
主要是利用插件中的FaceDetection組件,將選擇的圖像上傳到服務器中進行檢測,並返回結果(JSON數據)。
再APP中利用返回的JSON數據,進行繪制識別結果的線條等等。
在AI2平台中導入項目A_SimpleFaceDetect1_0.aia,查看分析程序設計。
1、插件的應用
將下載解壓得到的aix擴展組件 cn.edu.scut.cs.mlx.aix導入到app inventor的項目中。
2、組件方法一覽
3、上傳圖片
1. 使用圖像選擇框等組件獲取JPG格式圖像文件的路徑
2. 調用UploadAndUseImage, 將圖像上傳到服務器
3. 上傳結束后, 產生ImageUploadFinished事件,此時可以通過GetUploadedImageURL獲取圖像的URL。如果URL為空,則表示上傳失敗。
注意:上傳的圖像必須為JPG格式,且大小<5MB。
如果不滿足條件,可以用畫布轉換格式,或TaifunImage等圖像處理插件將圖像縮小。
4、處理檢測結果
(1) 索引值index從1開始。
(2)GetDetectionBox返回的是一個四項的列表,包含物體包圍框的左上角坐標(xmin, ymin)和右下角坐標(xmax, ymax)。四個數字范圍都在[0, 1]之間。
(3) GetDetectionEncoding返回一個128維向量,可用於比較人臉的相似度。
(4)GetDetectionLandmarkPositions返回坐標(x, y)的列表, 范圍在[0, 1]之間。
5、獲得的原始JSON數據
(1)使用RawJSONData方法獲取原始JSON數據。每一張檢測到的人臉都有location, landmark和encoding數據。
[
{
"location": [
0.4280155642023346,
0.350187265917603,
0.5680933852140078,
0.552434456928839
],
"landmark": {
"top_lip":[
[0.47470817120622566,0.4850187265917603],
[0.48378728923476005,0.4794007490636704],
...
],
"nose_tip":[...],
"nose_bridge":[...],
...
},
"encoding": [
-0.09882616251707077,
0.03372788056731224,
0.0321364663541317,
-0.04331062361598015,
-0.15623915195465088,
-0.031561896204948425,
-0.021884676069021225,
-0.051772814244031906,
0.17310640215873718,
-0.16299796104431152,
0.10914535820484161,
...
]
},
...
]
(2)location為人臉包圍框的坐標數據。
按順序為左上坐標和右下坐標。
坐標0.4280155642023346等是歸一化后的結果,可以分別乘上
圖像的寬和高,得到以像素為單位的實際坐標。
(3)landmark為器官位置坐標數據,每一個器官有坐標列表:
"landmark": {
"top_lip": [
[0.47470817120622566, 0.4850187265917603],
[0.48378728923476005, 0.4794007490636704],
...
],
"nose_tip": [...],
"nose_bridge": [...],
...
},
坐標0.47470817120622566, 0.4850187265917603等是歸一化后的結果,可以分別乘上圖像的寬和高,得到以像素為單位的實際坐標。
6、將相應的數據在畫布上畫線,繪制出檢測的結果
繪制五官輪廓效果
繪制人臉位置方框
練習任務:
理解程序邏輯設計代碼,嘗試修改實現:在下方的畫布2顯示繪制人臉的輪廓線條。