2023.08.11 iOS分享會 > 1. New amazing API in Vision: **Animal Body Pose** > 2. Other updates in Vision **Animal Body Pose**(以下用 ABP 簡稱)可應用於許多場景,想像一下,你讓你的狗寶🐶和咪寶😸獨自在家,而你一整天都在外工作,當你回家之後發現家裡一團亂... ![](https://hackmd.io/_uploads/Bkz2lkqih.jpg =50%x) 這時,我們可以使用 Vision 框架來看看這些毛孩整天都在做什麼,並找出是誰闖的禍! 在深入探討 ABP 之前,我們先來說說 poses。3 年前,Vision 推出了 **Human Body Pose** 來偵測人體的動作姿勢,該請求通過偵測多達 **19 個身體關節**來生成人體節點的集合。 ![](https://hackmd.io/_uploads/SJxMQkqo3.png =80%x) 使得世界上任何一位開發者都可以利用這支 API 來開發健康、健身相關的應用程式 而 APPLE 也不只專注在人體的 Poses 抓取,動物的身體節點也是他們影像辨識的重點之一,```VNRecognizeAnimalsRequest``` 是 Vision 早已開發的動物辨識 API,這支 API 能夠辨識貓狗,並在貓狗周圍生成一個方框、種類標籤,以及信賴區間。 ![](https://hackmd.io/_uploads/HklOxDyqo3.png =40%x) ![](https://hackmd.io/_uploads/HyW-P1qo3.png =40%x) 但我們如何從動物上得知更多的資訊呢? 舉例來說,當你的鄰居將他的狗狗🐶託付(dog-sit)給你照顧,此時你想知道當牠想吃點心或是想要出門散步時,會有哪些特定動作?到目前為止,推斷寵物的行為動作仍然是一項挑戰。 而 Vision 在今年新增了動物的身體節點辨識 ```VNDetectAnimalBodyPoseRequest```,該請求能夠產生 **25 組動物關節**的節點集合,包括耳朵和尾巴。 ![](https://hackmd.io/_uploads/Sks0T1qo2.png =40%x) 目前這支 API 僅支援貓和狗的動作辨識,以及支援的系統有 `iOS 17.0+` `iPadOS 17.0+` `macOS 14.0+` `tvOS 17.0+` `visionOS 1.0+` **Animal Body Pose** 的輸入來源可以是圖片(image)或是影片(video),經過請求和處理後,會產生六組關節群組(joint groups) ![](https://hackmd.io/_uploads/HyX3a1qih.png =80%x) 分別有: 1. Head Group 包含 ears, eyes, nose ![](https://hackmd.io/_uploads/Sy-z1e9sn.png =10%x) ``` swift=1 VNAnimalBodyPoseObservationJointsGroupNameHead .rightEarBottom .rightEarMiddle .rightEarTop .leftEarBottom .leftEarMiddle .leftEarTop .rightEye .leftEye .nose ``` 2. Forelegs Group 包含 front legs ![](https://hackmd.io/_uploads/ryGRJlqih.png =10%x) ``` swift=1 VNAnimalBodyPoseObservationJointsGroupNameForelegs .rightFrontElbow .rightFrontKnee .rightFrontPaw .leftFrontElbow .leftFrontKnee .leftFrontPaw ``` 3. hindlegs Group 包含 back legs ![](https://hackmd.io/_uploads/B1Qwex5in.png =10%x) ``` swift=1 VNAnimalBodyPoseObservationJointsGroupNameHindlegs .rightBackElbow .rightBackKnee .rightBackPaw .leftBackElbow .leftBackKnee .leftBackPaw ``` 4. Trunk Group 包含 neck ![](https://hackmd.io/_uploads/BJmAlgqj3.png =10%x) ``` swift=1 VNAnimalBodyPoseObservationJointsGroupNameTrunk .neck ``` 5. Tail Group 包含三個 tail joints ![](https://hackmd.io/_uploads/SJpg-g9s2.png =10%x) ``` swift=1 VNAnimalBodyPoseObservationJointsGroupNameTail .tailBottom .tailMiddle .tailTop ``` 6. All Group 共有 25 個 joints ![](https://hackmd.io/_uploads/Byn8Zlcs2.png =10%x) ``` swift=1 VNAnimalBodyPoseObservationJointsGroupNameAll ```