· Joseph · Side projects  · 3 min read

[Side project] KinectV2 applications migrates to OpenPose

OpenPose經過了三個多月的努力,終於完成了偵測器的轉換。 會有這次的side project是因為剛好看到OpenPose這套人體姿態辨識的AI函數庫,只要用單單一個RGB camera就可以偵測出人的動作,這讓我想到以前解決Asus xtion pro停產的問題,就是要轉換轉換Asus xtion到KinectV2。現在KinectV2雖已停產,但網路上還是可以透過各種管道買到KinectV2,我就想趁這機會把KinectV2轉換到OpenPose試試看,看未來是不是只要一個RGB camera,就不用再擔心KinectV2真的買不到的問題了。

OpenPose: CMU-Perceptual-Computing-Lab / openpose

他在安裝上還是有一些環境的限制,實際可以參考這裡,才不會鬼打牆太久。

接下來我就來分享一下轉換的方法。一張圖道盡前言萬語。 flowchart

Code是不能講得太明白,不過應該流程圖就能推知一二。最難的就是Transform這一層,要把OpenPose的座標空間跟KinectV2做對應,才能在進入程式時順利進行。以前KinectV2轉xtion OpenNI的時候根本是悲劇,那時候又用了一個不再繼續維護的套件ZigFu,整個包得死死的,所有資料型態跟資料結構都要自己去猜。還好從那之中學到很多,這次的轉換才能順利一點。

另外Transform這一層還可以做很多應用,包含過濾特定物件、物件取代、或特定的辨識,甚至是之後有更好更快的演算法,都可以在這一層做調整跟測試。中間有一些商業機密不太能公開,不過如果有類似問題歡迎私訊,我們很樂於分享我們的經驗。

Related Posts

View All Posts »
Algorithm - hash map and set

Algorithm - hash map and set

import { YouTube } from 'astro-embed'; Set and Map 平常就有在用,map存的是Key-value pair、Set存的是unique value。而且操作上來說平均都是O(1)時間複雜度。這篇就來看看他們適合解哪些題型吧。

System design - Consistent hashing

System design - Consistent hashing

ByteByteGo這篇介紹的是一致性雜湊,一般來說會用到雜湊,目的是為了把流量透過固定的演算法,分散到某台機器上面,那什麼是一致性雜湊,不好的雜湊演算法又會有什麼問題呢?這篇筆記來說一下ByteByteGo怎麼介紹的。

System design - A rate limiter

System design - A rate limiter

這篇要介紹的是Rate Limiter,是ByteByteGo System design裡面第一個design環節。現在很多後端主流框架都有內建或有對應套件,但對應的演算法卻被封裝起來,知其然不知其所以然。 今天這篇靠AI生成點簡單的示意圖,讓一張圖道盡千言萬語。

Two Pointers Algorithm

import demo from './demo.mp4'; import triplet from './triplet.mp4'; import palindrome from './palindrome.mp4'; import largest_container from './largest_container.mp4'; import shift_zero from './shift_zero.mp4'; import next_permutation from './next_permutation.mp4'; 最近買了ByteByteGo裡的Lifetime Plan方案,才把Coding interview patterns裡的Two pointers algorithm跟System design interview裡的Design A Rate Limiter念完,就先用這篇來筆記一下Two pointers algorithm