転倒検知、骨格点人間動作認識に基づき、コードの一部はChatgptで完成

PHPz
リリース: 2023-04-12 08:19:02
転載
2260 人が閲覧しました

###こんにちは、みんな。

今日は、転倒検出プロジェクトについてお話したいと思います。正確には、骨格点に基づく人間の動作認識です。

転倒検知、骨格点人間動作認識に基づき、コードの一部はChatgptで完成

転倒検知、骨格点人間動作認識に基づき、コードの一部はChatgptで完成#大きく分けて 3 つのステップ

#人体を認識する
  • #人間の骨格を認識します。
  • アクション カテゴリ
  • をクリックします。プロジェクトのソース コードがパッケージ化されています。入手方法については、記事の最後を参照してください。

0.chatgpt

まず、監視対象のビデオ ストリームを取得する必要があります。このコードは比較的修正されており、chatgpt に直接完了させることができます。

#chatgpt によって書かれたこのコードは問題なく、直接使用できます。 転倒検知、骨格点人間動作認識に基づき、コードの一部はChatgptで完成

しかし、メディアパイプを使用して人間のスケルトン ポイントを識別するなどのビジネス タスクに関しては、chatgpt によって与えられるコードは正しくありません。

chatgpt はビジネス ロジックから独立したツールボックスとして使用できると思います。chatgpt に任せて完成させることもできます。

したがって、今後のプログラマーに求められる要件は、ビジネスの抽象化能力がより重視されるようになると思います。早速、本題に戻りましょう。

1. 人体認識

人体認識では、YOLOv5 などのターゲット検出モデルを使用できます。YOLOv5 モデルのトレーニングに関する多くの記事も以前に共有しました。

ただし、ここでは YOLOv5 ではなく、mediapipe を使用しました。 Mediapipe は CPU 上でより高速に動作し、スムーズに動作するためです。

2. スケルトンポイントの認識

スケルトンポイントの認識にはアルファポーズやオープンポーズなど多くのモデルがあり、モデルごとに認識されるスケルトンポイントの数や位置が異なります。たとえば、次の 2 種類:

mediapipe 32 ボーン ポイント転倒検知、骨格点人間動作認識に基づき、コードの一部はChatgptで完成

coco 17 ボーン ポイント転倒検知、骨格点人間動作認識に基づき、コードの一部はChatgptで完成

私は今でもボーン ポイントの認識に mediapipe を使用していますが、速度が速いことに加えて、もう 1 つの利点は、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()
)
ログイン後にコピー

3. 行動認識

行動認識は、スケルトン行動認識に基づく時空間グラフ畳み込みネットワークを使用します。オープンソース ソリューションは STGCN (Skeleton-Based Graph) です。畳み込みネットワーク )

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

落下などの一連のアクションは N フレームで構成されます1 つのフレームごとに骨格点座標から構成される空間グラフを構築できます。骨格点をフレーム間で接続して時間グラフを形成します。骨格点の接続と時間フレームの接続により時空間グラフを構築できます。 転倒検知、骨格点人間動作認識に基づき、コードの一部はChatgptで完成

時空間グラフ転倒検知、骨格点人間動作認識に基づき、コードの一部はChatgptで完成

時空間グラフ上で多層グラフの畳み込み演算を実行して、より高レベルの特徴マップを生成します。次に、それはアクション分類 (アクション分類) のための SoftMax 分類器に入力されます。

Graph Convolution転倒検知、骨格点人間動作認識に基づき、コードの一部はChatgptで完成

当初は STGCN モデルをトレーニングする予定でしたが、落とし穴が多すぎたので、結局他の人を使って直接トレーニングすることにしました。モデル。

ピット 1. STGCN は OpenPose によって認識されるスケルトン ポイントをサポートしており、直接使用できるデータセット Kinetics-skeleton があります。落とし穴は、OpenPose のインストールが面倒で手順が多く、苦労したあげく諦めてしまうということです。

ピット 2。STGCN は、立ち上がる、歩く、落ちるなどの 60 のアクション カテゴリを含む NTU RGB D データ セットもサポートしています。このデータセットの人体には 25 個の骨格点が含まれており、座標データのみが含まれており、元のビデオは基本的に入手できないため、これらの 25 個の骨格点がどの位置に対応するのか、また、これら 25 個の骨格点を識別するためにどのモデルを使用できるのかを知る方法はありません。骨格ポイント. 苦労して、そして諦める。

上記の 2 つの大きな落とし穴により、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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:51cto.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!