Bildzitat (links): Sumire Uesaka Official Blog Nekomori Rally
PIFu: Pixel-Aligned Implicit Function for High-Resolution Clothed Human Digitization
Grob gesagt,
** Ein Modell für maschinelles Lernen, das aus einem einzelnen Bild ein 3D-Modell einer Person mit Kleidung generiert **
ist.
We introduce Pixel-aligned Implicit Function (PIFu), a highly effective implicit representation that locally aligns pixels of 2D images with the global context of their corresponding 3D object. Using PIFu, we propose an end-to-end deep learning method for digitizing highly detailed clothed humans that can infer both 3D surface and texture from a single image, and optionally, multiple input images. Highly intricate shapes, such as hairstyles, clothing, as well as their variations and deformations can be digitized in a unified way.
Einführung der pixelausgerichteten impliziten Funktion (PIFu). Dies ist eine sehr effektive implizite Darstellung, die die Pixel eines 2D-Bildes lokal im globalen Kontext des entsprechenden 3D-Objekts ausrichtet. Wir schlagen eine End-to-End-Deep-Learning-Methode zum Digitalisieren hochdetaillierter Kleidung vor, mit der mithilfe von PIFu sowohl 3D-Oberflächen als auch Texturen aus einem einzigen Bild und optional mehreren Eingabebildern abgeleitet werden können. .. Sehr komplexe Formen wie Frisuren und Kleidung sowie deren Variationen und Varianten können einheitlich digitalisiert werden.
Die Installationsmethode ist einfach.
$ git clone https://github.com/shunsukesaito/PIFu.git
$ cd PIFu
$ pip install -r requirements.txt
$ sh ./scripts/download_trained_model.sh
PIFu wird mit einem Beispieldatensatz geliefert, mit dem Sie problemlos arbeiten können.
$ sh ./scripts/test.sh
Dadurch wird eine Datei mit dem Namen "results / pifu_demo / result_ryota.obj" ausgegeben.
MeshLab wird beim Anzeigen von 3D-Modellen empfohlen. Der Grund dafür ist, dass das von PIFu ausgegebene Modell keine Textur aufweist und von VertexColor eingefärbt wird. Es wird empfohlen, da nur wenige Betrachter das mit dieser Scheitelpunktfarbe gefärbte Modell sehen können und es leicht zu erkennen ist.
Es gibt zwei Dinge, die Sie tun müssen, um ein 3D-Modell mit PIFu zu generieren.
Diesmal aus dem kostenlosen Material Pakutaso (www.pakutaso.com), Kostenloses Bild (Foto) von Yukata Brillenjunge (ganzer Körper), der seine Hände auf den Ärmel legt .html) wird verwendet.
Da das Originalbild vertikal lang ist, fügen Sie ein Band hinzu, um es zu einem quadratischen Bild zu machen. Nennen wir das "kimono.png ".
Dann erzeugen Sie ein Maskenbild. Nennen wir dies "kimono_mask.png ". ** Der Name ist hier wichtig. Stellen Sie sicher, dass Sie dem Maskenbild "_mask" hinzufügen. ** ** **
Erstellen Sie dann einen Kimono /
Ordner und kopieren Sie die beiden Dateien.
mkdir kimono/
cp kimono.png kimono/
cp kimono_mask.png kimono/
Erstellen Sie den folgenden Inhalt als scripts / eval.sh
.
scripts/eval.sh
#!/usr/bin/env bash
set -ex
# Training
GPU_ID=0
DISPLAY_ID=$((GPU_ID*10+10))
NAME='pifu_demo'
# Network configuration
BATCH_SIZE=1
MLP_DIM='257 1024 512 256 128 1'
MLP_DIM_COLOR='513 1024 512 256 128 3'
TEST_FOLDER_PATH=$1
shift
# Reconstruction resolution
# NOTE: one can change here to reconstruct mesh in a different resolution.
VOL_RES=$1
shift
CHECKPOINTS_NETG_PATH='./checkpoints/net_G'
CHECKPOINTS_NETC_PATH='./checkpoints/net_C'
# command
CUDA_VISIBLE_DEVICES=${GPU_ID} python ./apps/eval.py \
--name ${NAME} \
--batch_size ${BATCH_SIZE} \
--mlp_dim ${MLP_DIM} \
--mlp_dim_color ${MLP_DIM_COLOR} \
--num_stack 4 \
--num_hourglass 2 \
--resolution ${VOL_RES} \
--hg_down 'ave_pool' \
--norm 'group' \
--norm_color 'group' \
--test_folder_path ${TEST_FOLDER_PATH} \
--load_netG_checkpoint_path ${CHECKPOINTS_NETG_PATH} \
--load_netC_checkpoint_path ${CHECKPOINTS_NETC_PATH}
Schließlich,
$ sh scripts/eval_default.sh kimono/ 256
Erzeugt results / pifu_demo / result_kimono.obj
.
Es gibt eine Methode namens PIFu. Dies ist ein PIFu **, das ich erstellt habe, um hochwertige Texturen zu erstellen. (Ich habe es nur benannt, um es von der ursprünglichen Familie zu unterscheiden.) Es ist nur ein Ausweg, und es gibt einige Dinge, die etwas seltsam sind. Nun, es gibt verschiedene Umstände, also werde ich es später erklären.
Links: Originalbild Mittel: PIFu-Standard Rechts: PIFu
Ein Zweig namens 2_phase_generate in meinem PIFu-Repository.
https://github.com/kotauchisunsun/PIFu/tree/2_phase_generate
In diesem Zweig können Sie mit scripts / eval_two_phase.sh
ausgeben.
Wie man es benutzt
./scripts/eval_two_phase.sh IMAGE_DIR/ VOXEL_RESOLUTION VOXEL_LOAD_SIZE TEX_LOAD_SIZE
Es ist wie es ist. IMAGE_DIR / ist das Verzeichnis, das die Bilder enthält. VOXEL_RESOLUTION wird um 512.1024 empfohlen. Wenn es 1024 ist, werden ungefähr 20 GB Speicher benötigt. Passen Sie diesen Bereich an den Computer an. Es wird empfohlen, VOXEL_LOAD_SIZE auf 512 zu korrigieren. Setzen Sie TEX_LOAD_SIZE entsprechend der Auflösung der Textur auf 1024 oder 2048. Dies ist eine gute Idee, um ein Modell mit einer hochwertigen Textur zu erhalten.
Welcher Bereich ist also illegal? Es ist eine Geschichte. Nun, es sieht aus wie ** mit nicht normalem Verhalten **. Details sind in Pull Request beschrieben, aber ursprünglich sollten VOXEL_LOAD_SIZE und TEX_LOAD_SIZE mit Ausnahme von 512 nicht angegeben werden. darüber. Wenn ich jedoch TEX_LOAD_SIZE auf 1024 setze und hier ausgebe, ist es problematisch, dass ** ein hübsches Modell erstellt wurde **. Zuerst dachte ich: "Wenn ich einen ungültigen Wert in TEX_LOAD_SIZE setze, würde ich sterben" oder "Wenn es sich bewegt, wird die Textur zerbrochen", also habe ich es entsprechend geändert, aber es sieht so aus. Es kam wunderschön heraus. Es ist herausgekommen. Also habe ich eine Pull-Anfrage gestellt, aber es scheint, dass es ursprünglich nutzlos war. Tatsächlich ist die Textur dahinter eher zerkleinert. Links: PIFu Rechts: PIFu
Wie der Autor sagte, wenn Sie eine hochwertige Textur wünschen, warum nicht einfach projizieren? Es wird gesagt, dass es so sein kann. Eigentlich hat PIFu auch eine Funktion zum Projizieren von Texturen, aber ich denke, dass Änderungen wesentlich sind, da ich den Code gesehen habe und es unmöglich ist, ihn in hoher Auflösung auszugeben.
Ich bin glücklich, weil ich Sumipe vorstellen konnte. PIFu kennt seine Existenz seit letztem Jahr und fragte sich, wann der Code veröffentlicht werden würde, aber ich war überrascht, dass er unerwartet früh herauskam. Außerdem war es relativ einfach, sich zu bewegen, und ich bin froh, dass ich es schnell geschafft habe. Ich frage mich jedoch, ob ich es ein bisschen besser machen kann. Sonic Boom Sonic Boom Esaka Kawaii.