>기술 주변기기 >일체 포함 >낙상 감지, 골격점 인간 행동 인식을 기반으로 코드의 일부가 Chatgpt로 완성됨

낙상 감지, 골격점 인간 행동 인식을 기반으로 코드의 일부가 Chatgpt로 완성됨

PHPz
PHPz앞으로
2023-04-12 08:19:022420검색

안녕하세요 여러분.

오늘 저는 넘어짐 감지 프로젝트를 여러분과 공유하고 싶습니다. 정확하게는 골격점을 기반으로 한 인간의 움직임 인식입니다.

낙상 감지, 골격점 인간 행동 인식을 기반으로 코드의 일부가 Chatgpt로 완성됨

낙상 감지, 골격점 인간 행동 인식을 기반으로 코드의 일부가 Chatgpt로 완성됨

은 크게 3단계로 나누어집니다.

  • 인체 인식
  • 인체 골격 지점 인식
  • 액션 분류

프로젝트 소스 코드가 패키지되어 있습니다. 방법은 기사 끝 부분을 참조하세요. 그것을 얻으십시오.

0.chatgpt

먼저 모니터링되는 비디오 스트림을 가져와야 합니다. 이 코드는 비교적 고정되어 있습니다. chatgpt가 직접 작성한 이 코드는 문제가 없으며 직접 사용할 수 있습니다.

그러나 미디어파이프를 사용하여 인체 골격 지점을 식별하는 등의 비즈니스 작업에서는 chatgpt에서 제공하는 코드가 올바르지 않습니다. 낙상 감지, 골격점 인간 행동 인식을 기반으로 코드의 일부가 Chatgpt로 완성됨

chatgpt는 비즈니스 로직과 독립적인 도구 상자로 사용될 수 있다고 생각합니다. 완료하려면 chatgpt에 맡겨두는 것이 좋습니다.

그래서 앞으로 프로그래머에 대한 요구 사항은 비즈니스 추상화 기능에 더 중점을 둘 것이라고 생각합니다. 더 이상 고민하지 않고 주제로 돌아가겠습니다.

1. 인체 인식

인체 인식은 YOLOv5와 같은 표적 탐지 모델을 사용할 수 있습니다. 또한 이전에 YOLOv5 모델 훈련에 대한 많은 기사를 공유했습니다.

하지만 여기서는 YOLOv5가 아닌 미디어파이프를 사용합니다. 미디어파이프는 더 빠르게 실행되고 CPU에서 원활하게 실행되기 때문입니다.

2. 뼈점 인식

알파포즈, 오픈포즈 등 뼈점을 식별하는 모델이 많이 있습니다. 각 모델에서 인식하는 뼈점의 수와 위치가 다릅니다. 예를 들어 다음 두 가지 유형은

mediapipe 32 Bone Points

낙상 감지, 골격점 인간 행동 인식을 기반으로 코드의 일부가 Chatgpt로 완성됨

coco 17 Bone Points

저는 아직도 Bone Point 인식을 위해 Mediapipe를 사용하고 있습니다. 속도 외에도 또 다른 장점은 뼈를 인식한다는 것입니다. mediapipe에는 우리의 요구를 충족할 수 있는 32개의 지점이 있습니다. 아래에서 사용되는 인체 움직임의 분류는 골격점에 크게 의존하기 때문입니다. 낙상 감지, 골격점 인간 행동 인식을 기반으로 코드의 일부가 Chatgpt로 완성됨

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()
)

3. 동작 인식

동작 인식은 스켈레톤 동작 인식을 기반으로 한 시공간 그래프 컨볼루션 네트워크를 사용합니다. 오픈 소스 솔루션은 STGCN(Skeleton-Based Graph Convolutional Networks)

https://github.com /yysijie /st-gcn

낙하 등의 일련의 동작은 N개의 프레임으로 구성됩니다. 각 프레임은 프레임 간 골격점을 연결하여 시간 그래프를 형성하는 공간 그래프를 구성할 수 있습니다. , 뼈점의 연결과 시간 프레임의 연결을 통해 시공간 그래프를 구성할 수 있습니다.

낙상 감지, 골격점 인간 행동 인식을 기반으로 코드의 일부가 Chatgpt로 완성됨

시공간 그래프

시공간 그래프에 대해 다층 그래프 컨볼루션 작업을 수행하여 더 높은 수준의 특징 맵을 생성합니다. 그런 다음 동작 분류(Action Classification)를 위해 SoftMax 분류기에 입력됩니다. 낙상 감지, 골격점 인간 행동 인식을 기반으로 코드의 일부가 Chatgpt로 완성됨

Graph convolution

원래는 STGCN 모델을 학습시키려고 했으나, 함정이 너무 많아 결국 남들이 학습시킨 모델을 직접 사용하게 되었습니다. 낙상 감지, 골격점 인간 행동 인식을 기반으로 코드의 일부가 Chatgpt로 완성됨

Pit 1. STGCN은 OpenPose에서 인식하는 스켈레톤 포인트를 지원하며, 직접 사용할 수 있는 Kinetics-skeleton 데이터셋이 있습니다. 함정은 OpenPose 설치가 너무 번거롭고 많은 단계가 필요하다는 것입니다.

Pit 2. STGCN​은 일어서기, 걷기, 넘어지기 등 60가지 동작 범주가 있는 NTU RGB+D 데이터 세트도 지원합니다. 이 데이터 세트의 인체에는 25개의 골격점이 포함되어 있고 좌표 데이터만 있으며 원본 영상은 기본적으로 사용할 수 없으므로 이 25개의 골격점이 어느 위치에 해당하는지, 어떤 모델을 사용하여 이 25개를 식별할 수 있는지 알 수 없습니다. 뼈대 포인트. 그러면 포기하세요.

위의 두 가지 큰 함정으로 인해 STGCN 모델을 직접 훈련할 수 없게 되었습니다. 알파포스를 사용하여 14개의 뼈 포인트를 식별하는 오픈 소스 솔루션을 찾았고, 사용자 정의 뼈 포인트를 지원하도록 STGCN 소스 코드를 수정했습니다.

https://github.com/GajuuzZ/Human-Falling-Detect-Tracks

我看了下mediapipe包含了这 14 个骨骼点,所以可以用mediapipe识别的骨骼点输入他的模型,实现动作分类。

낙상 감지, 골격점 인간 행동 인식을 기반으로 코드의 일부가 Chatgpt로 완성됨

mediapipe 32个骨骼点

낙상 감지, 골격점 인간 행동 인식을 기반으로 코드의 일부가 Chatgpt로 완성됨

选出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​原始方案构造的空间图只支持openpose​18个骨骼点和NTU RGB+D数据集25个骨骼点

낙상 감지, 골격점 인간 행동 인식을 기반으로 코드의 일부가 Chatgpt로 완성됨

修改这部分源码,以支持自定义的14个骨骼点

낙상 감지, 골격점 인간 행동 인식을 기반으로 코드의 일부가 Chatgpt로 완성됨

模型直接使用Human-Falling-Detect-Tracks项目已经训练好的,实际运行发现识别效果很差,因为没有看到模型训练过程,不确定问题出在哪。

有能力的朋友可以自己训练模型试试,另外,百度的Paddle​也基于STGCN​开发了一个跌倒检测模型,只支持摔倒这一种行为的识别。

当然大家也可以试试Transformer的方式,不需要提取骨骼点特征,直接将 N 帧낙상 감지, 골격점 인간 행동 인식을 기반으로 코드의 일부가 Chatgpt로 완성됨送入模型分类。

关于STGCN的原理,大家可以参考文章:https://www.jianshu.com/p/be85114006e3  总结的非常好。

需要源码的朋友留言区回复即可。

如果大家觉得本文对你有用就点个 在看 鼓励一下吧,后续我会持续分享优秀的 Python+AI 项目。

위 내용은 낙상 감지, 골격점 인간 행동 인식을 기반으로 코드의 일부가 Chatgpt로 완성됨의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제