BlazePose is a 2D human pose estimation model that can compute x,y coordinates of 33 skeleton key points, extending the 17 keypoint topology of the original PoseNet model. These additional key points provide vital information about face, hands, and feet location with scale and rotation. Together with face and hand models they can be used to unlock various domain-specific applications like gesture control or sign language without special hardware.
Fast and accurate detection of body and face landmarks in a two-dimensional space in webcam or other video imagery.
orml-blazepose
uses two components BlazePoseDetector
for detecting regions containing poses and BlazePoseLandmarks
for detecting landmarks within the pose regions.
Initializing the two detectors is done as follows:
val detector = BlazePoseDetector.load()
val landmarks = BlazePoseLandmarks.upperBody()
Then for every frame:
val regions = detector.detect(videoImage)
for (region in regions) {
computeRoi(region)
val lms = landmarks.extract(drawer, region, videoImage)
for (lm in lms) {
drawer.fill = ColorRGBa.GREEN
drawer.circle(lm.imagePosition,10.0 )
}
}
See the provided simple demo program for a fully working implementation.
orml-blazepose
has been used in I know to find poses in video.
Based on: