안녕하세요 여러분.
오늘 저는 넘어짐 감지 프로젝트를 여러분과 공유하고 싶습니다. 정확하게는 골격점을 기반으로 한 인간의 움직임 인식입니다.
은 크게 3단계로 나누어집니다.
프로젝트 소스 코드가 패키지되어 있습니다. 방법은 기사 끝 부분을 참조하세요. 그것을 얻으십시오.
먼저 모니터링되는 비디오 스트림을 가져와야 합니다. 이 코드는 비교적 고정되어 있습니다. chatgpt가 직접 작성한 이 코드는 문제가 없으며 직접 사용할 수 있습니다.
그러나 미디어파이프를 사용하여 인체 골격 지점을 식별하는 등의 비즈니스 작업에서는 chatgpt에서 제공하는 코드가 올바르지 않습니다.
mediapipe 32 Bone Points
coco 17 Bone Points
저는 아직도 Bone Point 인식을 위해 Mediapipe를 사용하고 있습니다. 속도 외에도 또 다른 장점은 뼈를 인식한다는 것입니다. mediapipe에는 우리의 요구를 충족할 수 있는 32개의 지점이 있습니다. 아래에서 사용되는 인체 움직임의 분류는 골격점에 크게 의존하기 때문입니다.
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) results = pose.process(image) if not results.pose_landmarks: continue # 识别人体骨骼点 image.flags.writeable = True image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR) mp_drawing.draw_landmarks( image, results.pose_landmarks, mp_pose.POSE_CONNECTIONS, landmark_drawing_spec=mp_drawing_styles.get_default_pose_landmarks_style() )
낙하 등의 일련의 동작은 N개의 프레임으로 구성됩니다. 각 프레임은 프레임 간 골격점을 연결하여 시간 그래프를 형성하는 공간 그래프를 구성할 수 있습니다. , 뼈점의 연결과 시간 프레임의 연결을 통해 시공간 그래프를 구성할 수 있습니다.
시공간 그래프
시공간 그래프에 대해 다층 그래프 컨볼루션 작업을 수행하여 더 높은 수준의 특징 맵을 생성합니다. 그런 다음 동작 분류(Action Classification)를 위해 SoftMax 분류기에 입력됩니다.
Graph convolution
원래는 STGCN 모델을 학습시키려고 했으나, 함정이 너무 많아 결국 남들이 학습시킨 모델을 직접 사용하게 되었습니다.
https://github.com/GajuuzZ/Human-Falling-Detect-Tracks
我看了下mediapipe包含了这 14 个骨骼点,所以可以用mediapipe识别的骨骼点输入他的模型,实现动作分类。
mediapipe 32个骨骼点
选出14个关键骨骼点
14个骨骼点提取代码:
KEY_JOINTS = [ mp_pose.PoseLandmark.NOSE, mp_pose.PoseLandmark.LEFT_SHOULDER, mp_pose.PoseLandmark.RIGHT_SHOULDER, mp_pose.PoseLandmark.LEFT_ELBOW, mp_pose.PoseLandmark.RIGHT_ELBOW, mp_pose.PoseLandmark.LEFT_WRIST, mp_pose.PoseLandmark.RIGHT_WRIST, mp_pose.PoseLandmark.LEFT_HIP, mp_pose.PoseLandmark.RIGHT_HIP, mp_pose.PoseLandmark.LEFT_KNEE, mp_pose.PoseLandmark.RIGHT_KNEE, mp_pose.PoseLandmark.LEFT_ANKLE, mp_pose.PoseLandmark.RIGHT_ANKLE ] landmarks = results.pose_landmarks.landmark joints = np.array([[landmarks[joint].x * image_w, landmarks[joint].y * image_h, landmarks[joint].visibility] for joint in KEY_JOINTS])
STGCN原始方案构造的空间图只支持openpose18个骨骼点和NTU RGB+D数据集25个骨骼点
修改这部分源码,以支持自定义的14个骨骼点
模型直接使用Human-Falling-Detect-Tracks项目已经训练好的,实际运行发现识别效果很差,因为没有看到模型训练过程,不确定问题出在哪。
有能力的朋友可以自己训练模型试试,另外,百度的Paddle也基于STGCN开发了一个跌倒检测模型,只支持摔倒这一种行为的识别。
当然大家也可以试试Transformer的方式,不需要提取骨骼点特征,直接将 N 帧낙상 감지, 골격점 인간 행동 인식을 기반으로 코드의 일부가 Chatgpt로 완성됨送入模型分类。
关于STGCN的原理,大家可以参考文章:https://www.jianshu.com/p/be85114006e3 总结的非常好。
需要源码的朋友留言区回复即可。
如果大家觉得本文对你有用就点个 在看 鼓励一下吧,后续我会持续分享优秀的 Python+AI 项目。
위 내용은 낙상 감지, 골격점 인간 행동 인식을 기반으로 코드의 일부가 Chatgpt로 완성됨의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!