2.6 KiB
Docker — Phase 1
Zwei getrennte Images (siehe doc/docker_containerization_roadmap.md):
| Image | Dockerfile | Zweck |
|---|---|---|
approbot/blender-renderer:4.5 |
Dockerfile.renderer |
Blender 4.5 headless → erzeugt Test-Szenen (Bilder, npz, Ground-Truth) |
approbot/pose-pipeline:latest |
Dockerfile.pipeline |
schlanke Pose-Schätzung (das eigentliche Produkt) |
Beide teilen sich das data/-Volume: Der Renderer schreibt nach data/simulation/SceneX,
die Pipeline liest von dort und schreibt nach data/evaluations/SceneX.
Bauen
cd setup/generateSets
docker compose build
Die Blender-Patch-Version steht in Dockerfile.renderer (ARG BLENDER_VERSION=4.5.0) —
muss unter download.blender.org existieren; bei Bedarf anpassen:
docker compose build --build-arg BLENDER_VERSION=4.5.3 renderer
Rendern (Test-Daten erzeugen)
docker compose run --rm renderer --poses 8 # nur Pose 8
docker compose run --rm renderer # alle robot_test_poses
CPU-Rendering ist Default. Für GPU (Cycles, deutlich schneller): NVIDIA Container Toolkit
installieren und den deploy:-Block in docker-compose.yml einkommentieren.
Pose-Pipeline ausführen
docker compose run --rm pipeline pipeline/run_pipeline.py data/simulation/Scene8
# -> data/evaluations/Scene8/robot_state.json
Benchmark gegen Ground-Truth
docker compose run --rm pipeline benchmark/run_benchmark.py --scenes 8
docker compose run --rm pipeline benchmark/eval_pose.py \
data/evaluations/Scene8/robot_state.json data/simulation/Scene8/pose.json
Hinweise
- cv2 im Renderer liegt in Blenders gebündeltem Python (nicht System-Python) —
siehe
Dockerfile.renderer. Das frühereDockerfilemitpip3 install opencv-pythoninstallierte ins falsche Python und ist ersetzt. - robot.json wird beim Rendern mutiert (Kamera/Pose pro Bild). Für einen einzelnen sequentiellen Lauf ok; für parallele Render-Jobs muss das vorher auf eine temporäre Config pro Job umgestellt werden (Roadmap Phase 2/4, Schlüsselpunkt 3).
- Code wird als Volume gemountet — Änderungen an Python-Scripten wirken ohne Rebuild.
Nur bei geänderten Abhängigkeiten (
requirements.pipeline.txt) oder Blender-Version neu bauen.
Portainer-Stack (optional)
create-portainer-stack.bat legt den Stack per Portainer-API an. In cmd.exe ausführen
(dort ist curl = curl.exe). In PowerShell zum Testen curl.exe statt curl verwenden,
da curl dort ein Alias für Invoke-WebRequest ist:
curl.exe -k -H "X-API-Key: <KEY>" https://localhost:9443/api/endpoints