技術オタクの父親たちは、Netflix のエピソードを数本静かに観るために何をするのでしょうか?
昔から「お父さん」+「かわいい赤ちゃん」は人気のない組み合わせで、「お父さんの愛は地滑りのようなもの」とさえ言われています。信じられないなら、ここに証拠があります: 誰もが知っているように、人間の赤ちゃんは一日中いつでも攻撃を仕掛けてくる永久機関のようです。ぐっすり眠るには日中にエネルギーを消費するしかないようで、人々はさまざまな方法を編み出してきました。 もちろん、すべての父親が信頼できないわけではありません。ごく普通に子どもを育てている父親もいます。アグスティヌス・ナルワンもその一人です。 Agustinus Nalwan は Medium のブロガーです。コンピューター ビジョン、3D/アニメーション、ゲーム開発などの分野で働いてきました。現在はオーストラリア最大の自動車取引プラットフォームである carsale.com.au で働いています。 彼にはデキシーという名前の2歳半の息子がいる。デクシーはとても活発で、動物、特にワシが大好きです。ワシの真似をして家中を飛び回ることもしばしばあります。 子どものこうした行動はたいてい親を笑わせる(中には短い動画にしてネットに投稿する人もいる)が、ナルワンさんは普通の親ではない。テクノロジーを使って子育てをもっと楽しくしようと努めている。ナルワンさんは昨年3月、息子とやりとりし、手に持っているおもちゃに基づいて関連する動画を再生できるおもちゃ認識機能を備えたシステムを開発した。 このプロジェクトのおかげで、彼は NVIDIA の「今月の Jetson プロジェクト: Qrio - インタラクティブ AI ボット」イベントで最優秀賞 (NVIDIA Jetson AGX Xavier) を獲得しました。 Jetson AGX Xavier の構成情報。 これはかなりの計算能力を備えた開発キットであり、JD.com、Meituan、Cainiao の無人配送車両のコンピューティング コアとして使用されています。 Jetson AGX Xavier の構成が優れていることから、Nalwan 氏はそれを活用して息子のために新しいおもちゃを作り、「高く飛ぶ」という息子の夢を実現することにしました。 新しいおもちゃはグリフィン(神話上のグリフィン)と呼ばれ、最終的な効果は次のとおりです。 もちろん、お父さんも一緒に参加できます。 または自分でプレイしてみましょう: もちろん、子育てにおけるこのような良い経験は共有されるべきです。ナルワンさんは最近のブログ投稿で、グリフィンを作った全過程を詳しく紹介した。赤ちゃんがいる人は参考にしてほしい。 ライオンの体と鷲の頭を持つ伝説のグリフィン。 『ハリー・ポッターと死の秘宝』のグリフィンドール寮は黄金のグリフィンを意味します。 以下は、Nalwan がジェスチャー認識ゲーム全体を「ゼロから」構築するまでの過程です。 材料の準備 上の図に示す効果を実現するには、Griffin に次のモジュールが必要です。
システム全体に必要なハードウェアは次のとおりです。
Jetson AGX Xavier、IMX327 カメラ、Blu Tack。 成し遂げる 3D ゲーム エンジンの構築 飛行体験をより良くシミュレートするために、Griffin システムは 3D の世界を三人称視点でレンダリングします。グリフィンの真後ろにカメラがあって、彼が見ている方向を監視できると想像してください。フライトシミュレーターのような一人称視点を使用してみませんか?ワシの翼と腕の動きが同期しているのを見ると、デクシーはゲームのコントロール方法をすぐに学び、より没入感のある体験をすることができます。 3D ゲーム エンジンを自分で構築するのは簡単な作業ではなく、数週間かかることもあります。今日の開発者のほとんどは、Unity や Unreal などの特殊なゲーム エンジンのみを使用しています。しかし残念ながら、Ubuntu OS/ARM チップセットで実行できるゲーム エンジンは見つかりませんでした。別の方法としては、OpenGL で動作するオープンソースのフライトシミュレーターを探すことです。これにより、OpenGL ES (OpenGL の軽量バージョン) をサポートし、ハードウェア アクセラレーションが行われるため、ゲーム エンジンを AGX 上で実行できるようになります。ゲーム エンジンを遅い速度で実行したくない場合は、これが必要です。 幸運なことに、私は基準を満たす C++ のオープン ソース フライト シミュレーターを見つけたので、次の変更を加えました。
Blender でワシの 3D モデルを編集します。
人間の姿勢推定モジュールの構築 このモジュールは、カメラ入力から人間の姿勢を検出するように設計されています。具体的には、グリフィンの翼と体を制御し、特定のポーズをトリガーするために、左/右の肘、左/右の肩、首、鼻の位置を知る必要があります。 OpenPose は、人間のポーズ、手の姿勢、顔の特徴を推定するための AI モデルを多数備えた人気のオープンソース ライブラリです。私は、バックボーン特徴抽出器として resnet18 を使用した Human Pose Estimation COCO モデルを使用しています。このモデルは、上で述べた必要な 6 つのポイントを含む 18 個の関節ポイントをリアルタイムで検出できます。 COCO アーティキュレーション マップ。 ここで大きな問題があります。OpenPose は PyTorch フレームワーク上に構築されており、高度に最適化された TensorRT フレームワークを活用できないため、NVIDIA AGX Xavier 上では非常に低速 (4FPS) で実行されます。幸いなことに、PyTorch モデルを TensorRT フレームワークに自動的に移植できる優れたツール torch2trt もあります。具体的な手順は、OpenPose をインストールし、PyTorch を TensorRT に変換し、事前トレーニング済みの resnet18 バックボーン モデルをダウンロードすることです。 カメラからビデオ コンテンツを取得するには、別のライブラリ Jetcam を使用します。実行にはたった 4 行のコードしか必要ありません。 人間の姿勢の推定。 これにより、100FPS で実行できる人間の姿勢推定モジュールが実現します。 いくつかのテストを行った後、モデルがランダムなオブジェクトをジョイントとして誤認することがあり (下の画像に示すように、誤検知)、Griffin のモーション コントロールに問題が発生する可能性があることがわかりました。 Amazon SageMaker JumpStart を使用してオブジェクト検出モデルを構築する この問題を解決する 1 つの方法は、補助 AI モデルを追加し、オブジェクト検出モジュールを使用して人間の境界ボックスを提供することで、境界ボックスの外側で検出された人間の関節を除外できるようにすることです。さらに、これらの境界ボックスは、群衆の中のメインプレイヤーを識別するのに役立ちます。カメラに最も近い人がメインプレイヤーになるはずです。 以前のプロジェクトでは、SSDMobileNetV2 オブジェクト検出モデルを手動でトレーニングしました。今回は、TensorFlowHub と PyTorchHub から AI モデルをワンクリックでデプロイできる Amazon SageMaker JumpStart を使用することにしました。完全に事前トレーニング済みの SSDMobileNetV2 を含む 150 を超えるモデルから選択できます。 Amazon SageMaker Studio から JumpStart を起動します。 Amazon JumpStart で SSDMobileNetV2 を選択すると、ワンクリックでモデルをデプロイできます。オブジェクト検出モデルができたので、境界ボックスの外側にあるジョイント ポイントの除外ロジックを追加して、誤検出を大幅に削減できます。 人体の境界ボックスの外側にある関節点は除外されます。 モーションマッピングとジェスチャー認識モジュールの構築 このモジュールは、人間の姿勢推定モジュールによって検出された 6 つの関節動作をより意味のある入力に変換するために不可欠です。これには、次の 3 つの直接アクション マッピングが含まれます。
体の回転と翼の回転のモーション マッピング。
しゃがみモーションマッピング。
離陸とリセットのジェスチャー認識。 通信システム これで 3 つの主要コンポーネントが完成したので、あとはそれらを接着するだけです。姿勢推定モジュールによって検出された人間の関節点をジェスチャ認識モジュールに送信する必要があります。このタスクは比較的簡単です。ただし、ゲーム エンジンは C++ で記述されているため、モーションとポーズのマッピング結果を 3D ゲーム エンジンに送信するのはそれほど簡単ではありません。 3D ゲーム エンジンの構築に Python を使用しないのはなぜかと疑問に思うかもしれません。その理由は、Python を使用して OpenGL にアクセスする信頼できる方法がないからです。さらに、たとえ可能だとしても、C++ を Python コードに変換するのに何週間も費やしたくありませんでした。 この時点で、最小限のオーバーヘッドで 2 つの間で情報を効率的に転送する必要があります。オーバーヘッドの最小化はゲーム エンジンにとって非常に重要な要素であり、コントローラーの入力とアクションの実行の間に 100 ミリ秒の遅延があると、プレイヤーの没入感が失われる可能性があります。したがって、2 つの別々のアプリケーション間の最適な通信媒体はソケットです。両方のアプリケーションが同じコンピューター上にあるため、遅延は 5 ミリ秒以内になります。 C++ では、単に sys/socket ライブラリを使用しますが、Python ではソケット フレームワークを使用できます。これからは、ジェスチャ認識およびポーズ推定モジュールを Python アプリと呼びます。このクライアントは、roll_target、lwing_target、rwing_target、body_height、game_state の 5 種類の情報を送信します。 3D ゲーム エンジンは C++ アプリと呼ばれ、上記の情報をリッスンして継続的に受信するサーバーとして機能します。 これら 5 つの情報/変数を Python から C++ に正しくマッピングするには、送信する前に Python C のような構造に配置する必要があります。
C++ アプリでは、ネイティブ C 構造体として受信されます。
以下のアーキテクチャ図からわかるように、通信層は Python アプリにあるクライアント モジュールと C++ アプリにあるサーバー モジュールで構成されています。 Griffin の全体的なアーキテクチャ図。 校正とテスト すべての準備が整ったら、Griffin システムをセットアップして調整とテストを実行しました。このシステムのパフォーマンスは予想以上に優れており、リアルタイム 3D レンダリングと姿勢推定をすべて実行しても 60FPS のフレーム レートを維持しています。NVIDIA の Jetson AGX Xavier の威力はすごいようです。以下のビデオでは、キャリブレーションとテストのプロセスが実際に行われている様子を見ることができます。このビデオのフレーム レートが低いのは、Griffin への影響を最小限に抑えるために、Ubuntu デスクトップで 15FPS で画面を録画したためです。 Griffin システムの調整とテスト。 脱ぐ ついに、デクシーがグリフィンと一緒に初めての飛行に挑戦する時が来ました。これが本当のテストでした。私はリビングルームにシステムを設置し、息子は待ちきれずにその動作を待っていました。 デキシーがグリフィンと一緒に飛行した体験。 Griffin システムの操作方法を一度だけ実演しました。ジャンプして離陸し、腕を広げてジェスチャーで翼を操作するだけで、Dexie はそれを習得しました。ゲームは三人称視点でプレイされるため、画面上の翼の動きが自分の姿勢と直接同期していることにすぐに気付きました。それから彼は飛行体験を楽しむようになりました。自分のゲーム コントローラーより優れたものはありません。初代 iPhone を発表したときにスタイラスを嘲笑したスティーブ ジョブズの言葉を思い出してください。 興味深いことに、デクシーが山にぶつかりそうになったとき、彼は腕を上げて急旋回しようとしましたが、最大回転角度制限を設定したため、グリフィンは彼がそのような極端な角度で飛ぶことを許可せず、その後山にぶつかりました...これはその様子です: デキシーのグリフィンでの初飛行。 彼は疲れが襲ってくるまで、腕を激しく振りながら30分間演奏し続けた。何よりも、彼はその夜ぐっすり眠ったので、私たちにとっては幸運でした。 Netflix を見る時間が増えました :) 要約する このようなシステムを構築することは私に多くのことを教え、とても楽しかったです。全体的に学んだこと:
この経験があなたに何かインスピレーションを与えるでしょうか? 最後に、作者は近い将来にプロジェクト コードをオープン ソース化することを計画しています。 |
<<: 海運業界は人工知能を活用して海賊行為と戦うことができる
近年、大手テクノロジー企業は人工知能と機械学習の研究に力を入れています。その中でも、Googleはこ...
[[218838]] Innovation Works の創設者である Kai-Fu Lee 氏は、...
顔認識システムは、今日では物議を醸す技術だと考えられています。 IBM、Google、Microso...
人工知能は多くの業界のワークフローを変革しました。デジタル顧客サービスアシスタント、自動運転車、無人...
Volcano Engine は、大規模モデルのトレンドに関する解答用紙を提出しました。大型モデルサ...
先月、国際的に有名な学術誌「ネイチャー」が2023年のトップ10を発表しました。世界的な科学イベント...
AI は、私たちが行うほぼすべての方法を変えています。私たちが行くところすべてで、かつては人間が行っ...
この記事の主な内容:序文DBSCAN クラスタリング アルゴリズムパラメータ選択DBSCANアルゴリ...
AIエリートが100万以上稼ぐ!マスク氏が設立したOpenAIが誤って給与情報を公開4月23日のニ...
[[400505]] AI(人工知能)がさらに発展するにつれて、新たな用途やメリットが生まれる可能性...
アクセンチュアのアナリストは、2020 年に企業がより多くのイノベーションを獲得するのはクラウド プ...