【一步步開發AI運動小程式】二十一、如果將AI運動專案配置持久化到後端?

alphaair發表於2024-11-11

說明:本文所涉及的AI運動識別、計時、計數能力,都是基於雲智「Ai運動識別引擎」實現。雲智「Ai運動識別」外掛識別引擎,可以為您的小程式或Uni APP賦於原生、本地、廣覆蓋、高效能的人體識別、姿態識別、10餘種常見的運動計時、計數識別及自定義擴充套件運動識別能力。完善的文件、Demo專案,開箱即用,可以幫助您快速實現AI運動、AI體育、AI運動賽事、全民健身賽事、AI體測等應用場景的快速落地。

一、為什麼要將運動配置持久化到後端?

當我們根據應用場景重新調整內建運動檢測引數或者擴充套件了新運動專案,釋出小程式、APP後,若在執行時發現運動引數不合適需要調整時,便需要重新發布小程式或者APP,這個釋出過程需要耗費短則幾個小時,長則一兩天;不便於運營。
若將運動檢測的各項引數持久化到後端,這樣便可以避免因為運動調整頻繁釋出小程式、APP新版本,讓使用者獲得更好的體驗。

二、需要持久化的那些配置資料?

運動檢測的常規引數有KeyNameTickMode,這是基本的必須的引數,剩的檢測規則rules或姿態樣本samples則取決於選擇何種運動識別方案,若基於body-calc規則識別則持久化rules,基於相似度方案則持久化samples

三、如果實現持久化配置?

識別引擎的介面設計便考慮了規則和樣本便於持久化,根據上面要持久化的資料,我們可以構建出的持久化資料結構如下:

{
	"key": "demo",
	"name": "測試運動",
	"samples": {
		"basic": {
			"keypoints": [{
					"y": 66.0156295428602,
					"x": 196.24999974976453,
					"score": 0.3974609375,
					"name": "nose"
				},
				{
					"y": 56.99219681226278,
					"x": 204.68749974880043,
					"score": 0.395263671875,
					"name": "left_eye"
				},
				{
					"y": 56.48437477557764,
					"x": 188.12499975069284,
					"score": 0.353759765625,
					"name": "right_eye"
				},
				{
					"y": 63.867192043105675,
					"x": 217.18751882085854,
					"score": 0.6533203125,
					"name": "left_ear"
				},
				{
					"y": 60.78125454345827,
					"x": 174.99999975219248,
					"score": 0.49560546875,
					"name": "right_ear"
				},
				...
			]
		}
	},
	"rules": {
		"name": '撐狀態檢查',
		"calc": '$and',
		"rules": [{
			"name": '手臂垂直撐起',
			"calc": '$or',
			"rules": [{
				"name": '左手臂垂直',
				"calc": 'vertical',
				"upperKey": 'left_shoulder',
				"centerKey": 'left_elbow',
				"lowerKey": 'left_wrist',
				"offset": 20
			}, {
				"name": '右手臂垂直',
				"calc": 'vertical',
				"upperKey": 'right_shoulder',
				"centerKey": 'right_elbow',
				"lowerKey": 'right_wrist',
				"offset": 20
			}]
		}, {
			"name": '手臂與腰部垂直',
			"calc": '$or',
			"rules": [{
				"name": '左手臂與腰齊垂直',
				"calc": 'match-angle',
				"angleKey": 'left_shoulder',
				"secondKey": 'left_elbow',
				"thirdKey": 'left_hip',
				"angle": 90,
				"offset": 25
			}, {
				"name": '右手臂與腰齊垂直',
				"calc": 'match-angle',
				"angleKey": 'right_shoulder',
				"secondKey": 'right_elbow',
				"thirdKey": 'right_hip',
				"angle": 90,
				"offset": 25
			}]
		}, {
			"name": '腿部繃直',
			"calc": '$or',
			"rules": [{
				"name": '左腿繃直',
				"calc": 'match-angle',
				"angleKey": 'left_knee',
				"secondKey": 'left_ankle',
				"thirdKey": 'left_hip',
				"angle": 160,
				"offset": 20
			}, {
				"name": '右腿繃直',
				"calc": 'match-angle',
				"angleKey": 'right_knee',
				"secondKey": 'right_ankle',
				"thirdKey": 'rgight_hip',
				"angle": 160,
				"offset": 20
			}]
		}]
	}
}

以上便是基本持久化結構,其它的可以根據需要新增欄位,持久化到關聯式資料庫、檔案、mongodb文件資料庫等都可。

除了提供AI運動識別引擎外;還可以使用運動自動適配工具快速適配運動;還有可直接在AI雲上賽事、全民健身線上運動、學生體測場落地的「AI樂運動」產品。

image
image

相關文章