写真1枚で体脂肪率を測定!
Global PyTorch Summer Hackathon 2019 への私の投稿。ハッカソン ギャラリーで紹介されるプロジェクトの 5% (参加者 1466 人中) に含まれます。
このコードは、Ubuntu、PyTorch 1.2、Python 3.6、および Nvidia GTX 940MX でテストされています。 Python 仮想環境をセットアップし、次のパッケージをインストールすることをお勧めします。
リポジトリのクローンを作成する
以下をインストールします。
apt-get install tk-dev python-tk
仮想環境をアクティブ化する 必要な Python パッケージを仮想環境にインストールする
(pytorch)$ pip3 install torch torchvision (pytorch)$ pip3 install scikit-image opencv-python pandas h5py (pytorch)$ pip3 install cffi (pytorch)$ pip3 install cython (pytorch)$ pip3 install requests (pytorch)$ pip3 install future
NMS 拡張機能をビルドする
cd lib/ python3 setup3.py build_ext --inplace
python3 measure_body.py
これはdata/inputs
からサンプル写真を取得し、体脂肪率を予測します。
写真撮影の注意事項
モデルは首と胴囲を推定して体脂肪率を予測します。したがって、首と腰の部分が写真ではっきりと見える必要があります。また、このモデルはカメラから少なくとも 1 m 離れた場所に立っているときに最適に機能します。いくつかの例:
良い例
画像をdata/inputs/
に貼り付けます
python3 measure_body.py --image_name <name_of_your_image>.jpg
を実行します。
結果が画面に表示されます。
単眼深度推定ネットワークを使用して、ピクセル レベルの深度マップを生成します。これは、CVPR 2019 の論文「凍りついた人々を観察することで、人の感動の深さを学ぶ」に基づいています。同時に、RetinaNet 物体検出モデルが微調整され、身体部分の位置を推定できるようになりました。両方のネットワークに PyTorch が使用されました。この情報を組み合わせて、身体測定値と体脂肪率を計算します。 exif データのカメラ固有の一部も推定に使用されます。計算にはNavyの体脂肪式を使用します。
深度推定コードは、このリポジトリ (この素晴らしい Google AI 論文の実装) から借用および変更されました。
Retinanet コードは、この PyTorch 実装から借用および変更されています。
NMSコードはこちらから。