Messen Sie Ihren Körperfettanteil mit nur einem einzigen Bild!
Mein Beitrag für den Global PyTorch Summer Hackathon 2019. Unter 5 % (von 1466 Teilnehmern) Projekten, die in der Hackathon-Galerie vorgestellt werden.
Dieser Code wurde auf Ubuntu, PyTorch 1.2, Python 3.6 und Nvidia GTX 940MX getestet. Es wird empfohlen, eine virtuelle Python-Umgebung einzurichten und die folgenden Pakete zu installieren.
Klonen Sie das Repo
Installieren Sie Folgendes:
apt-get install tk-dev python-tk
Aktivieren Sie die virtuelle Installation der erforderlichen Python-Pakete in einer virtuellen Umgebung
(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
Erstellen Sie die NMS-Erweiterung
cd lib/ python3 setup3.py build_ext --inplace
python3 measure_body.py
Dadurch wird ein Beispielbild aus data/inputs
erstellt und der Körperfettanteil vorhergesagt.
Anleitung zum Fotografieren
Das Modell schätzt Ihren Hals- und Taillenumfang, um Ihren Körperfettanteil vorherzusagen. Daher müssen Ihr Hals- und Taillenbereich auf dem Bild deutlich sichtbar sein. Außerdem funktioniert das Modell am besten, wenn Sie mindestens 1 m von der Kamera entfernt stehen. Einige Beispiele:
Gutes Beispiel
Fügen Sie Ihr Bild in data/inputs/
ein.
Führen Sie python3 measure_body.py --image_name <name_of_your_image>.jpg
aus
Ihre Ergebnisse werden auf dem Bildschirm angezeigt.
Es verwendet ein monokulares Tiefenschätzungsnetzwerk, um eine Tiefenkarte auf Pixelebene zu erstellen. Dies basierte auf dem CVPR-Papier von 2019 „Learning the Depths of Moving People by Watching Frozen People“. Gleichzeitig wurde das Objekterkennungsmodell von RetinaNet verfeinert, um die Position Ihrer Körperteile abzuschätzen. Für beide Netzwerke wurde PyTorch verwendet. Diese Informationen werden kombiniert, um Ihre Körpermaße und Ihren Körperfettanteil zu berechnen. Zur Schätzung werden auch einige Kameraeigenschaften aus den Exif-Daten verwendet. Zur Berechnung wird die Körperfettformel der Marine verwendet.
Der Tiefenschätzungscode wurde aus diesem Repo ausgeliehen und geändert (Implementierung dieses großartigen Google AI-Artikels).
Der Retinanet-Code wurde von dieser PyTorch-Implementierung entlehnt und geändert.
NMS-Code von hier.