ВСнсорРВ 6.ΠΊΠΊΠΊ – Π·Π°ΠΊΡ™ΡƒΡ‡ΠΈΠ²Π°ΡšΠ΅ високих пСрформанси Π·Π° ΠΌΠΎΠ΄Π΅Π»Π΅ Π΄ΡƒΠ±ΠΎΠΊΠΎΠ³ ΡƒΡ‡Π΅ΡšΠ° (Π΄Π΅Ρ‚Π΅ΠΊΡ†ΠΈΡ˜Π° ΠΈ ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° ΠΎΠ±Ρ˜Π΅ΠΊΠ°Ρ‚Π°)

ВСнсорРВ 6.ΠΊΠΊΠΊ – Π·Π°ΠΊΡ™ΡƒΡ‡ΠΈΠ²Π°ΡšΠ΅ високих пСрформанси Π·Π° ΠΌΠΎΠ΄Π΅Π»Π΅ Π΄ΡƒΠ±ΠΎΠΊΠΎΠ³ ΡƒΡ‡Π΅ΡšΠ° (Π΄Π΅Ρ‚Π΅ΠΊΡ†ΠΈΡ˜Π° ΠΈ ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° ΠΎΠ±Ρ˜Π΅ΠΊΠ°Ρ‚Π°)
Π‘ΠΎΠ»ΠΈ само ΠΏΡ€Π²ΠΈ ΠΏΡƒΡ‚!

Π—Π΄Ρ€Π°Π²ΠΎ свима! Π”Ρ€Π°Π³ΠΈ ΠΏΡ€ΠΈΡ˜Π°Ρ‚Π΅Ρ™ΠΈ, Ρƒ ΠΎΠ²ΠΎΠΌ Ρ‡Π»Π°Π½ΠΊΡƒ ΠΆΠ΅Π»ΠΈΠΌ Π΄Π° ΠΏΠΎΠ΄Π΅Π»ΠΈΠΌ својС искуство ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ° ВСнсорРВ, РСтинаНСт заснованог Π½Π° ΡΠΏΡ€Π΅ΠΌΠΈΡˆΡ‚Ρƒ Π³ΠΈΡ‚Ρ…ΡƒΠ±.Ρ†ΠΎΠΌ/Π°ΠΈΠ΄ΠΎΠ½Ρ†Ρ…ΡƒΠΊ/Ρ€Π΅Ρ‚ΠΈΠ½Π°Π½Π΅Ρ‚-СкамплСс (ΠΎΠ²ΠΎ јС Π²ΠΈΡ™ΡƒΡˆΠΊΠ° Π·Π²Π°Π½ΠΈΡ‡Π½Π΅ Ρ€Π΅ΠΏΠ΅ ΠΈΠ· ΠΠ’Π˜Π”Π˜Π, ΡˆΡ‚ΠΎ Ρ›Π΅ Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡƒΡ›ΠΈΡ‚ΠΈ Π΄Π° ΡˆΡ‚ΠΎ ΠΏΡ€Π΅ ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Π΄Π° користитС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΎΠ²Π°Π½Π΅ ΠΌΠΎΠ΄Π΅Π»Π΅ Ρƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡšΠΈ). ΠŸΡ€Π΅Π»ΠΈΡΡ‚Π°Π²Π°ΡšΠ΅ ΠΏΠΎΡ€ΡƒΠΊΠ° Π½Π° ΠΊΠ°Π½Π°Π»ΠΈΠΌΠ° Π·Π°Ρ˜Π΅Π΄Π½ΠΈΡ†Π΅ одс.Π°ΠΈ, Π½Π°ΠΈΠ»Π°Π·ΠΈΠΌ Π½Π° ΠΏΠΈΡ‚Π°ΡšΠ° ΠΎ ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΡƒ ВСнсорРВ-Π° ΠΈ ΠΏΠΈΡ‚Π°ΡšΠ° сС ΡƒΠ³Π»Π°Π²Π½ΠΎΠΌ ΠΏΠΎΠ½Π°Π²Ρ™Π°Ρ˜Ρƒ, ΠΏΠ° сам ΠΎΠ΄Π»ΡƒΡ‡ΠΈΠΎ Π΄Π° напишСм ΡˆΡ‚ΠΎ јС ΠΌΠΎΠ³ΡƒΡ›Π΅ ΠΏΠΎΡ‚ΠΏΡƒΠ½ΠΈΡ˜ΠΈ Π’ΠΎΠ΄ΠΈΡ‡ Π·Π° ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ΅ Π±Ρ€Π·ΠΎΠ³ Π·Π°ΠΊΡ™ΡƒΡ‡ΠΈΠ²Π°ΡšΠ° заснованог Π½Π° ВСнсорРВ, РСтинаНСт, Π£Π½Π΅Ρ‚ ΠΈ Π΄ΠΎΡ†ΠΊΠ΅Ρ€-Ρƒ.

Опис Π·Π°Π΄Π°Ρ‚ΠΊΠ°

ΠŸΡ€Π΅Π΄Π»Π°ΠΆΠ΅ΠΌ Π΄Π° сС Π·Π°Π΄Π°Ρ‚Π°ΠΊ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡˆΠ΅ Π½Π° овај Π½Π°Ρ‡ΠΈΠ½: ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ јС Π΄Π° ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌΠΎ скуп ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°, Ρ‚Ρ€Π΅Π½ΠΈΡ€Π°ΠΌΠΎ RetinaNet/Unet ΠΌΡ€Π΅ΠΆΡƒ Π½Π° Pytorch-Ρƒ 1.3+, ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΡƒΡ˜Π΅ΠΌΠΎ добијСнС Ρ‚Π΅ΠΆΠΈΠ½Π΅ Ρƒ ONNX, Π·Π°Ρ‚ΠΈΠΌ ΠΈΡ… ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΡƒΡ˜Π΅ΠΌΠΎ Ρƒ TensorRT Снџин ΠΈ ΠΏΠΎΠΊΡ€Π΅Π½Π΅ΠΌΠΎ Ρ†Π΅Π»Ρƒ ствар Ρƒ Docker-Ρƒ, ΠΏΠΎΠΆΠ΅Ρ™Π½ΠΎ Π½Π° Ubuntu 18 ΠΈ Π²Π΅ΠΎΠΌΠ° ΠΏΠΎΠΆΠ΅Ρ™Π½ΠΎ Π½Π° ARM (Jetson)* Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ, Ρ‡ΠΈΠΌΠ΅ сС ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π° Ρ€ΡƒΡ‡Π½ΠΎ Ρ€Π°ΡΠΏΠΎΡ€Π΅Ρ’ΠΈΠ²Π°ΡšΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ°. ΠšΡ€Π°Ρ˜ΡšΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Ρ›Π΅ Π±ΠΈΡ‚ΠΈ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ спрСман Π½Π΅ само Π·Π° ΠΈΠ·Π²ΠΎΠ· ΠΈ ΠΎΠ±ΡƒΠΊΡƒ RetinaNet/Unet-Π°, Π²Π΅Ρ› ΠΈ Π·Π° ΠΏΠΎΡ‚ΠΏΡƒΠ½ΠΈ Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ ΠΎΠ±ΡƒΠΊΡƒ систСма ΠΊΠ»Π°ΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ ΠΈ ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π΅, са свим ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΠΌ Ρ…Π°Ρ€Π΄Π²Π΅Ρ€ΠΎΠΌ.

Π€Π°Π·Π° 1. ΠŸΡ€ΠΈΠΏΡ€Π΅ΠΌΠ° ΠΎΠΊΠΎΠ»ΠΈΠ½Π΅

ОвдС јС Π²Π°ΠΆΠ½ΠΎ Π½Π°ΠΏΠΎΠΌΠ΅Π½ΡƒΡ‚ΠΈ Π΄Π° сам сС Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΏΠΎΡ‚ΠΏΡƒΠ½ΠΎ ΡƒΠ΄Π°Ρ™ΠΈΠΎ ΠΎΠ΄ ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ° ΠΈ ΠΏΠΎΡΡ‚Π°Π²Ρ™Π°ΡšΠ° Π±Π°Ρ€ Π½Π΅ΠΊΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π° дСсктоп машини, ΠΊΠ°ΠΎ ΠΈ Π½Π° Π΄Π΅Π²Π±ΠΎΠΊ-Ρƒ. ЈСдина ствар ΠΊΠΎΡ˜Ρƒ ΠΌΠΎΡ€Π°Ρ‚Π΅ Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ ΠΈ инсталиратС јС ΠΏΠΈΡ‚Ρ…ΠΎΠ½ Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅ ΠΈ Ρ†ΡƒΠ΄Π° 10.2 (ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΠΈ Π½Π° јСдан Π½Π²ΠΈΠ΄ΠΈΠ° Π΄Ρ€Π°Ρ˜Π²Π΅Ρ€) ΠΈΠ· Π΄Π΅Π±-Π°.

ΠŸΡ€Π΅Ρ‚ΠΏΠΎΡΡ‚Π°Π²ΠΈΠΌΠΎ Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ свСТС инсталиран Ubuntu 18. Π₯ајдС Π΄Π° инсталирамо cuda 10.2 (deb). НСћу Π΄Π΅Ρ‚Π°Ρ™Π½ΠΎ описивати процСс ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π΅, Π·Π²Π°Π½ΠΈΡ‡Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° јС сасвим Π΄ΠΎΠ²ΠΎΡ™Π½Π°.

Π‘Π°Π΄Π° Ρ…Π°Ρ˜Π΄Π΅ Π΄Π° инсталирамо Π΄ΠΎΡ†ΠΊΠ΅Ρ€, Π²ΠΎΠ΄ΠΈΡ‡ Π·Π° ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Ρƒ Π΄ΠΎΡ†ΠΊΠ΅Ρ€-Π° сС Π»Π°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ ΠΏΡ€ΠΎΠ½Π°Ρ›ΠΈ, Π΅Π²ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° www.digitalocean.com/community/tutorials/docker-ubuntu-18-04-1-ru, Π²Π΅Ρ€Π·ΠΈΡ˜Π° 19+ јС Π²Π΅Ρ› доступна - ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°Ρ˜Ρ‚Π΅ јС. Па, Π½Π΅ Π·Π°Π±ΠΎΡ€Π°Π²ΠΈΡ‚Π΅ Π΄Π° ΠΎΠΌΠΎΠ³ΡƒΡ›ΠΈΡ‚Π΅ ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ΅ Π΄ΠΎΡ†ΠΊΠ΅Ρ€-Π° Π±Π΅Π· судо-Π°, Ρ‚ΠΎ Ρ›Π΅ Π±ΠΈΡ‚ΠΈ згоднијС. Након ΡˆΡ‚ΠΎ јС свС испало, Ρ€Π°Π΄ΠΈΠΌΠΎ ΠΎΠ²ΠΎ:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

И Π½Π΅ ΠΌΠΎΡ€Π°Ρ‚Π΅ Ρ‡Π°ΠΊ Π½ΠΈ Π΄Π° Π³Π»Π΅Π΄Π°Ρ‚Π΅ Ρƒ Π·Π²Π°Π½ΠΈΡ‡Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ Π³ΠΈΡ‚Ρ…ΡƒΠ±.Ρ†ΠΎΠΌ/ΠΠ’Π˜Π”Π˜Π/Π½Π²ΠΈΠ΄ΠΈΠ°-Π΄ΠΎΡ†ΠΊΠ΅Ρ€.

Π₯ајдС сада Π΄Π° ΡƒΡ€Π°Π΄ΠΈΠΌΠΎ Π³ΠΈΡ‚ ΠΊΠ»ΠΎΠ½ Π³ΠΈΡ‚Ρ…ΡƒΠ±.Ρ†ΠΎΠΌ/Π°ΠΈΠ΄ΠΎΠ½Ρ†Ρ…ΡƒΠΊ/Ρ€Π΅Ρ‚ΠΈΠ½Π°Π½Π΅Ρ‚-СкамплСс.

ΠžΡΡ‚Π°Π»ΠΎ јС још само ΠΌΠ°Π»ΠΎ, Π΄Π° бисмо ΠΏΠΎΡ‡Π΅Π»ΠΈ Π΄Π° користимо Π΄ΠΎΡ†ΠΊΠ΅Ρ€ са Π½Π²ΠΈΠ΄ΠΈΠ° сликом, ΠΌΠΎΡ€Π°Ρ›Π΅ΠΌΠΎ Π΄Π° сС Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΡƒΡ˜Π΅ΠΌΠΎ Ρƒ НГЦ Π¦Π»ΠΎΡƒΠ΄-Ρƒ ΠΈ Π΄Π° сС ΠΏΡ€ΠΈΡ˜Π°Π²ΠΈΠΌΠΎ. Π₯ајдСмо ΠΎΠ²Π°ΠΌΠΎ Π½Π³Ρ†.Π½Π²ΠΈΠ΄ΠΈΠ°.Ρ†ΠΎΠΌ, Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΡƒΡ˜Ρ‚Π΅ сС ΠΈ Π½Π°ΠΊΠΎΠ½ ΡˆΡ‚ΠΎ ΡƒΡ’Π΅ΠΌΠΎ Ρƒ НГЦ Π¦Π»ΠΎΡƒΠ΄, ΠΊΠ»ΠΈΠΊΠ½ΠΈΡ‚Π΅ Π½Π° Π‘Π•Π’Π£ΠŸ Ρƒ Π³ΠΎΡ€ΡšΠ΅ΠΌ Π»Π΅Π²ΠΎΠΌ ΡƒΠ³Π»Ρƒ Π΅ΠΊΡ€Π°Π½Π° ΠΈΠ»ΠΈ ΠΏΡ€Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΠ²Ρƒ Π²Π΅Π·Ρƒ Π½Π³Ρ†.Π½Π²ΠΈΠ΄ΠΈΠ°.Ρ†ΠΎΠΌ/сСтуп/Π°ΠΏΠΈ-ΠΊΠ΅ΠΈ. ΠšΠ»ΠΈΠΊΠ½ΠΈΡ‚Π΅ Π½Π° β€žΠ³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ˜ ΠΊΡ™ΡƒΡ‡β€œ. ΠŸΡ€Π΅ΠΏΠΎΡ€ΡƒΡ‡ΡƒΡ˜Π΅ΠΌ Π΄Π° Π³Π° сачуватС, ΠΈΠ½Π°Ρ‡Π΅ Ρ›Π΅Ρ‚Π΅ слСдСћи ΠΏΡƒΡ‚ ΠΊΠ°Π΄Π° Π³Π° посСтитС ΠΌΠΎΡ€Π°Ρ‚ΠΈ ΠΏΠΎΠ½ΠΎΠ²ΠΎ Π΄Π° Π³Π° Π³Π΅Π½Π΅Ρ€ΠΈΡˆΠ΅Ρ‚Π΅ ΠΈ, сходно Ρ‚ΠΎΠΌΠ΅, поставитС Π½Π° Π½ΠΎΠ²ΠΈ Π°ΡƒΡ‚ΠΎΠΌΠΎΠ±ΠΈΠ» ΠΈ ΠΏΠΎΠ½ΠΎΠ²ΠΈΡ‚Π΅ ΠΎΠ²Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Ρƒ.

Π₯ајдС Π΄Π° ΡƒΡ€Π°Π΄ΠΈΠΌΠΎ:

docker login nvcr.io
Username: $oauthtoken
Password: <Your Key> - сгСнСрированный ΠΊΠ»ΡŽΡ‡

ΠšΠΎΡ€ΠΈΡΠ½ΠΈΡ‡ΠΊΠΎ ΠΈΠΌΠ΅ сС Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎ ΠΊΠΎΠΏΠΈΡ€Π°. Па, ΡΠΌΠ°Ρ‚Ρ€Π°Ρ˜Ρ‚Π΅ Π΄Π° јС ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅ распорСђСно!

Π€Π°Π·Π° 2: Π˜Π·Π³Ρ€Π°Π΄ΡšΠ° Π΄ΠΎΡ†ΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Π°

Π£ Π΄Ρ€ΡƒΠ³ΠΎΡ˜ Ρ„Π°Π·ΠΈ нашСг Ρ€Π°Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ›Π΅ΠΌΠΎ Π΄ΠΎΡ†ΠΊΠ΅Ρ€ ΠΈ ΡƒΠΏΠΎΠ·Π½Π°Ρ‚ΠΈ сС са њСговим ΡƒΠ½ΡƒΡ‚Ρ€Π°ΡˆΡšΠΈΠΌ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΠΌΠ°.
ИдСмо Ρƒ основну фасциклу Ρƒ односу Π½Π° ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚ Ρ€Π΅Ρ‚ΠΈΠ½Π°-СкамплСс ΠΈ ΠΈΠ·Π²Ρ€ΡˆΠΈΠΌΠΎ

docker build --build-arg USER=$USER --build-arg UID=$UID --build-arg GID=$GID --build-arg PW=alex -t retinanet:latest retinanet/

Π”ΠΎΡ†ΠΊΠ΅Ρ€ Π³Ρ€Π°Π΄ΠΈΠΌΠΎ Ρ‚Π°ΠΊΠΎ ΡˆΡ‚ΠΎ Ρƒ њСга ΠΏΡ€ΠΎΠΏΡƒΡˆΡ‚Π°ΠΌΠΎ Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½ΠΎΠ³ корисника - ΠΎΠ²ΠΎ јС Π²Π΅ΠΎΠΌΠ° корисно Π°ΠΊΠΎ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π½Π΅ΡˆΡ‚ΠΎ Π½Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½ΠΈ Π’ΠžΠ›Π£ΠœΠ• са ΠΏΡ€Π°Π²ΠΈΠΌΠ° Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½ΠΎΠ³ корисника, ΠΈΠ½Π°Ρ‡Π΅ Ρ›Π΅ Π±ΠΈΡ‚ΠΈ Ρ€ΠΎΠΎΡ‚ ΠΈ Π±ΠΎΠ».

Π”ΠΎΠΊ сС Π΄ΠΎΡ†ΠΊΠ΅Ρ€ Π³Ρ€Π°Π΄ΠΈ, Ρ…Π°Ρ˜Π΄Π΅ Π΄Π° испитамо Π”ΠΎΡ†ΠΊΠ΅Ρ€Ρ„ΠΈΠ»Π΅:

FROM nvcr.io/nvidia/pytorch:19.10-py3

ARG USER=alex
ARG UID=1000
ARG GID=1000
ARG PW=alex
RUN useradd -m ${USER} --uid=${UID} && echo "${USER}:${PW}" | chpasswd

RUN apt-get -y update && apt-get -y upgrade && apt-get -y install curl && apt-get -y install wget && apt-get -y install git && apt-get -y install automake && apt-get install -y sudo && adduser ${USER} sudo
RUN pip install git+https://github.com/bonlime/pytorch-tools.git@master

COPY . retinanet/
RUN pip install --no-cache-dir -e retinanet/
RUN pip install /workspace/retinanet/extras/tensorrt-6.0.1.5-cp36-none-linux_x86_64.whl
RUN pip install tensorboardx
RUN pip install albumentations
RUN pip install setproctitle
RUN pip install paramiko
RUN pip install flask
RUN pip install mem_top
RUN pip install arrow
RUN pip install pycuda
RUN pip install torchvision
RUN pip install pretrainedmodels
RUN pip install efficientnet-pytorch
RUN pip install git+https://github.com/qubvel/segmentation_models.pytorch
RUN pip install pytorch_toolbelt

RUN chown -R ${USER}:${USER} retinanet/

RUN cd /workspace/retinanet/extras/cppapi && mkdir build && cd build && cmake -DCMAKE_CUDA_FLAGS="--expt-extended-lambda -std=c++14" .. && make && cd /workspace

RUN apt-get install -y openssh-server && apt install -y tmux && apt-get -y install bison flex && apt-cache search pcre && apt-get -y install net-tools && apt-get -y install nmap
RUN apt-get -y install libpcre3 libpcre3-dev && apt-get -y install iputils-ping

RUN mkdir /var/run/sshd
RUN echo 'root:pass' | chpasswd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed 's@sessions*requireds*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd

ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile
CMD ["/usr/sbin/sshd", "-D"]

Као ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΠΈ ΠΈΠ· тСкста, ΡƒΠ·ΠΈΠΌΠ°ΠΌΠΎ свС нашС ΠΎΠΌΠΈΡ™Π΅Π½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅, ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°ΠΌΠΎ retinanet, додајСмо Π½Π΅ΠΊΠ΅ основнС Π°Π»Π°Ρ‚Π΅ Π·Π° лакши Ρ€Π°Π΄ са... Ubuntu ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡˆΠ΅ΠΌΠΎ OpenSSH сСрвСр. ΠŸΡ€Π²Π° линија Π½Π°ΡΠ»Π΅Ρ’ΡƒΡ˜Π΅ NVIDIA слику Π·Π° ΠΊΠΎΡ˜Ρƒ смо ΠΊΡ€Π΅ΠΈΡ€Π°Π»ΠΈ NGC Cloud ΠΏΡ€ΠΈΡ˜Π°Π²Ρƒ ΠΈ која садрТи Pytorch1.3, TensorRT6.xxx ΠΈ Π³ΠΎΠΌΠΈΠ»Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° којС Π½Π°ΠΌ ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π°Ρ˜Ρƒ Π΄Π° ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°ΠΌΠΎ CPP ΠΈΠ·Π²ΠΎΡ€Π½ΠΈ ΠΊΠΎΠ΄ Π·Π° наш Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€.

Π€Π°Π·Π° 3: ΠŸΠΎΠΊΡ€Π΅Ρ‚Π°ΡšΠ΅ ΠΈ ΠΎΡ‚ΠΊΠ»Π°ΡšΠ°ΡšΠ΅ Π³Ρ€Π΅ΡˆΠ°ΠΊΠ° Ρƒ Π”ΠΎΡ†ΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Ρƒ

ΠŸΡ€Π΅Ρ’ΠΈΠΌΠΎ Π½Π° Π³Π»Π°Π²Π½ΠΈ ΡΠ»ΡƒΡ‡Π°Ρ˜ ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€Π° ΠΈ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΎΠ³ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ°; ΠΏΡ€Π²ΠΎ, Ρ…Π°Ρ˜Π΄Π΅ Π΄Π° ΠΏΠΎΠΊΡ€Π΅Π½Π΅ΠΌΠΎ Π½Π²ΠΈΠ΄ΠΈΠ° Π΄ΠΎΡ†ΠΊΠ΅Ρ€. Π₯ајдС Π΄Π° ΡƒΡ€Π°Π΄ΠΈΠΌΠΎ:

docker run --gpus all --net=host -v /home/<your_user_name>:/workspace/mounted_vol -d -P --rm --ipc=host -it retinanet:latest

ΠšΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ јС сада доступан ΠΏΡ€Π΅ΠΊΠΎ ссх-Π° @Π»ΠΎΠΊΠ°Π»Π½ΠΈ Π΄ΠΎΠΌΠ°Ρ›ΠΈΠ½. Након ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ ΠΏΠΎΠΊΡ€Π΅Ρ‚Π°ΡšΠ°, ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚ Ρƒ ΠŸΠΈΠ¦Ρ…Π°Ρ€ΠΌ-Ρƒ. Π—Π°Ρ‚ΠΈΠΌ ΠΎΡ‚Π²Π°Ρ€Π°ΠΌΠΎ

Settings->Project Interpreter->Add->Ssh Interpreter

ΠšΠΎΡ€Π°ΠΊ КБНУМКБ
ВСнсорРВ 6.ΠΊΠΊΠΊ – Π·Π°ΠΊΡ™ΡƒΡ‡ΠΈΠ²Π°ΡšΠ΅ високих пСрформанси Π·Π° ΠΌΠΎΠ΄Π΅Π»Π΅ Π΄ΡƒΠ±ΠΎΠΊΠΎΠ³ ΡƒΡ‡Π΅ΡšΠ° (Π΄Π΅Ρ‚Π΅ΠΊΡ†ΠΈΡ˜Π° ΠΈ ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° ΠΎΠ±Ρ˜Π΅ΠΊΠ°Ρ‚Π°)

ΠšΠΎΡ€Π°ΠΊ КБНУМКБ
ВСнсорРВ 6.ΠΊΠΊΠΊ – Π·Π°ΠΊΡ™ΡƒΡ‡ΠΈΠ²Π°ΡšΠ΅ високих пСрформанси Π·Π° ΠΌΠΎΠ΄Π΅Π»Π΅ Π΄ΡƒΠ±ΠΎΠΊΠΎΠ³ ΡƒΡ‡Π΅ΡšΠ° (Π΄Π΅Ρ‚Π΅ΠΊΡ†ΠΈΡ˜Π° ΠΈ ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° ΠΎΠ±Ρ˜Π΅ΠΊΠ°Ρ‚Π°)

ΠšΠΎΡ€Π°ΠΊ КБНУМКБ
ВСнсорРВ 6.ΠΊΠΊΠΊ – Π·Π°ΠΊΡ™ΡƒΡ‡ΠΈΠ²Π°ΡšΠ΅ високих пСрформанси Π·Π° ΠΌΠΎΠ΄Π΅Π»Π΅ Π΄ΡƒΠ±ΠΎΠΊΠΎΠ³ ΡƒΡ‡Π΅ΡšΠ° (Π΄Π΅Ρ‚Π΅ΠΊΡ†ΠΈΡ˜Π° ΠΈ ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° ΠΎΠ±Ρ˜Π΅ΠΊΠ°Ρ‚Π°)

Π‘ΠΈΡ€Π°ΠΌΠΎ свС ΠΊΠ°ΠΎ Π½Π° снимцима Π΅ΠΊΡ€Π°Π½Π°,

Interpreter -> /opt/conda/bin/python

- ΠΎΠ²ΠΎ Ρ›Π΅ Π±ΠΈΡ‚ΠΈ Ρƒ ΠŸΠΈΡ‚Ρ…ΠΎΠ½3.6 ΠΈ

Sync folder -> /workspace/retinanet

ΠŸΡ€ΠΈΡ‚ΠΈΡΠ½Π΅ΠΌΠΎ Π·Π°Π²Ρ€ΡˆΠΈ, Ρ‡Π΅ΠΊΠ°ΠΌΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€Π°ΡšΠ΅ ΠΈ Ρ‚ΠΎ јС Ρ‚ΠΎ, ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅ јС спрСмно Π·Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Ρƒ!

Π’ΠΠ–ΠΠž !!! ΠžΠ΄ΠΌΠ°Ρ… Π½Π°ΠΊΠΎΠ½ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€Π°ΡšΠ°, ΠΏΠΎΠ²ΡƒΡ†ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°Π½Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ Π·Π° Π Π΅Ρ‚ΠΈΠ½Π°Π½Π΅Ρ‚ ΠΈΠ· Π”ΠΎΡ†ΠΊΠ΅Ρ€-Π°. Π£ контСкстном ΠΌΠ΅Π½ΠΈΡ˜Ρƒ Ρƒ ΠΊΠΎΡ€Π΅Π½Ρƒ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Π° ΠΈΠ·Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ ставку

Deployment->Download

ΠŸΠΎΡ˜Π°Π²ΠΈΡ›Π΅ сС јСдна Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° ΠΈ Π΄Π²Π΅ фасциклС: Π±ΡƒΠΈΠ»Π΄, Ρ€Π΅Ρ‚ΠΈΠ½Π°Π½Π΅Ρ‚.Π΅Π³Π³-ΠΈΠ½Ρ„ΠΎ ΠΈ _Π‘.со

ВСнсорРВ 6.ΠΊΠΊΠΊ – Π·Π°ΠΊΡ™ΡƒΡ‡ΠΈΠ²Π°ΡšΠ΅ високих пСрформанси Π·Π° ΠΌΠΎΠ΄Π΅Π»Π΅ Π΄ΡƒΠ±ΠΎΠΊΠΎΠ³ ΡƒΡ‡Π΅ΡšΠ° (Π΄Π΅Ρ‚Π΅ΠΊΡ†ΠΈΡ˜Π° ΠΈ ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° ΠΎΠ±Ρ˜Π΅ΠΊΠ°Ρ‚Π°)

Ако ваш ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚ ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΎΠ²Π°ΠΊΠΎ, ΠΎΠ½Π΄Π° ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ΅ Π²ΠΈΠ΄ΠΈ свС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ ΠΈ спрСмни смо Π΄Π° ΠΎΠ±ΡƒΡ‡ΠΈΠΌΠΎ РСтинаНСт.

Π€Π°Π·Π° 4. ΠžΠ·Π½Π°Ρ‡ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ ΠΈ ΠΎΠ±ΡƒΡ‡ΠΈΡ‚Π΅ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€

Π—Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°ΡšΠ΅ ΡƒΠ³Π»Π°Π²Π½ΠΎΠΌ користим Π½Π°Π΄Π³Π»Π΅Π΄Π°Ρ‚ΠΈ.Π»ΠΈ β€” ΠΏΡ€ΠΈΡ˜Π°Ρ‚Π°Π½ ΠΈ Π·Π³ΠΎΠ΄Π°Π½ Π°Π»Π°Ρ‚, Π½Π΅Π΄Π°Π²Π½ΠΎ јС исправљСна Π³ΠΎΠΌΠΈΠ»Π° Π³Ρ€Π΅ΡˆΠ°ΠΊΠ° ΠΈ Π·Π½Π°Ρ‚Π½ΠΎ сС Π±ΠΎΡ™Π΅ понашао.

ΠŸΡ€Π΅Ρ‚ΠΏΠΎΡΡ‚Π°Π²ΠΈΠΌΠΎ Π΄Π° стС ΠΎΠ·Π½Π°Ρ‡ΠΈΠ»ΠΈ скуп ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈ ΠΏΡ€Π΅ΡƒΠ·Π΅Π»ΠΈ Π³Π°, Π°Π»ΠΈ Π½Π΅Ρ›Π΅Ρ‚Π΅ ΠΌΠΎΡ›ΠΈ ΠΎΠ΄ΠΌΠ°Ρ… Π΄Π° Π³Π° ставитС Ρƒ наш РСтинаНСт, ΠΏΠΎΡˆΡ‚ΠΎ јС Ρƒ свом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ ΠΈ Π·Π° Ρ‚ΠΎ ΠΌΠΎΡ€Π°ΠΌΠΎ Π΄Π° Π³Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΡƒΡ˜Π΅ΠΌΠΎ Ρƒ ЦОЦО. Алат Π·Π° ΠΊΠΎΠ½Π²Π΅Ρ€Π·ΠΈΡ˜Ρƒ сС Π½Π°Π»Π°Π·ΠΈ Ρƒ:

markup_utils/supervisly_to_coco.py

Π˜ΠΌΠ°Ρ˜Ρ‚Π΅ Π½Π° ΡƒΠΌΡƒ Π΄Π° јС ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ˜Π° Ρƒ скрипти ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈ Π΄Π° ΠΌΠΎΡ€Π°Ρ‚Π΅ Π΄Π° унСсСтС ΡΠ²ΠΎΡ˜Ρƒ (Π½Π΅ΠΌΠ° ΠΏΠΎΡ‚Ρ€Π΅Π±Π΅ Π΄Π° Π΄ΠΎΠ΄Π°Ρ˜Π΅Ρ‚Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ˜Ρƒ ΠΏΠΎΠ·Π°Π΄ΠΈΠ½Π΅)

categories = [{'id': 1, 'name': '1'}, 
                  {'id': 2, 'name': '2'}, 
                  {'id': 3, 'name': '3'},
                  {'id': 4, 'name': '4'}] 

Из Π½Π΅ΠΊΠΎΠ³ Ρ€Π°Π·Π»ΠΎΠ³Π°, Π°ΡƒΡ‚ΠΎΡ€ΠΈ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΎΠ³ ΡΠΏΡ€Π΅ΠΌΠΈΡˆΡ‚Π° су ΠΎΠ΄Π»ΡƒΡ‡ΠΈΠ»ΠΈ Π΄Π° Π½Π΅ ΠΎΠ±ΡƒΡ‡Π°Π²Π°Ρ‚Π΅ Π½ΠΈΡˆΡ‚Π° осим ЦОЦО/Π’ΠžΠ¦ Π·Π° Π΄Π΅Ρ‚Π΅ΠΊΡ†ΠΈΡ˜Ρƒ, ΠΏΠ° су ΠΌΠΎΡ€Π°Π»ΠΈ ΠΌΠ°Π»ΠΎ Π΄Π° ΠΈΠ·ΠΌΠ΅Π½Π΅ ΠΈΠ·Π²ΠΎΡ€Π½ΠΈ Ρ„Π°Ρ˜Π»

retinanet/dataset.py

Π”ΠΎΠ΄Π°Π²Π°ΡšΠ΅ΠΌ ΡΠ²ΠΎΡ˜ΠΈΡ… ΠΎΠΌΠΈΡ™Π΅Π½ΠΈΡ… ΡƒΠ²Π΅Ρ›Π°ΡšΠ° ΠΎΠ²Π΄Π΅ албуммСнтатионс.рСадтхСдоцс.ΠΈΠΎ/Π΅Π½/латСст ΠΈ ΠΈΠ·Ρ€Π΅Π·Π°Ρ‚ΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ˜Π΅ ΠΎΠΆΠΈΡ‡Π΅Π½ΠΈΡ… ΠΊΠ°Π±Π»ΠΎΠ²Π° ΠΈΠ· ЦОЦО-Π°. Π’Π°ΠΊΠΎΡ’Π΅ јС ΠΌΠΎΠ³ΡƒΡ›Π΅ исСцати Π²Π΅Π»ΠΈΠΊΠ° ΠΏΠΎΠ΄Ρ€ΡƒΡ‡Ρ˜Π° Π΄Π΅Ρ‚Π΅ΠΊΡ†ΠΈΡ˜Π΅, Π°ΠΊΠΎ Ρ‚Ρ€Π°ΠΆΠΈΡ‚Π΅ ΠΌΠ°Π»Π΅ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚Π΅ Π½Π° Π²Π΅Π»ΠΈΠΊΠΈΠΌ сликама, ΠΈΠΌΠ°Ρ‚Π΅ ΠΌΠ°Π»ΠΈ скуп ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° =), ΠΈ Π½ΠΈΡˆΡ‚Π° Π½Π΅ Ρ€Π°Π΄ΠΈ, Π°Π»ΠΈ вишС ΠΎ Ρ‚ΠΎΠΌΠ΅ Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡƒΡ‚.

Π“Π΅Π½Π΅Ρ€Π°Π»Π½ΠΎ, ΠΏΠ΅Ρ‚Ρ™Π° Π²ΠΎΠ·ΠΎΠ²Π° јС Ρ‚Π°ΠΊΠΎΡ’Π΅ слаба, Ρƒ ΠΏΠΎΡ‡Π΅Ρ‚ΠΊΡƒ нијС сачувала ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π΅ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ²Π΅, користила јС Π½Π΅ΠΊΡƒ врсту ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ³ распорСда ΠΈΡ‚Π΄. Али сада свС ΡˆΡ‚ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΡƒΡ€Π°Π΄ΠΈΡ‚Π΅ јС Π΄Π° ΠΈΠ·Π°Π±Π΅Ρ€Π΅Ρ‚Π΅ окосницу ΠΈ ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚Π΅

/opt/conda/bin/python retinanet/main.py

са ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠΌΠ°:

train retinanet_rn34fpn.pth
--backbone ResNet34FPN
--classes 12
--val-iters 10
--images /workspace/mounted_vol/dataset/train/images
--annotations /workspace/mounted_vol/dataset/train_12_class.json
--val-images /workspace/mounted_vol/dataset/test/images_small
--val-annotations /workspace/mounted_vol/dataset/val_10_class_cropped.json
--jitter 256 512
--max-size 512
--batch 32

Π£ ΠΊΠΎΠ½Π·ΠΎΠ»ΠΈ Ρ›Π΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΠΈ:

Initializing model...
     model: RetinaNet
  backbone: ResNet18FPN
   classes: 2, anchors: 9
Selected optimization level O0:  Pure FP32 training.

Defaults for this optimization level are:
enabled                : True
opt_level              : O0
cast_model_type        : torch.float32
patch_torch_functions  : False
keep_batchnorm_fp32    : None
master_weights         : False
loss_scale             : 1.0
Processing user overrides (additional kwargs that are not None)...
After processing overrides, optimization options are:
enabled                : True
opt_level              : O0
cast_model_type        : torch.float32
patch_torch_functions  : False
keep_batchnorm_fp32    : None
master_weights         : False
loss_scale             : 128.0
Preparing dataset...
    loader: pytorch
    resize: [1024, 1280], max: 1280
    device: 4 gpus
    batch: 4, precision: mixed
Training model for 20000 iterations...
[    1/20000] focal loss: 0.95619, box loss: 0.51584, 4.042s/4-batch (fw: 0.698s, bw: 0.459s), 1.0 im/s, lr: 0.0001
[   12/20000] focal loss: 0.76191, box loss: 0.31794, 0.187s/4-batch (fw: 0.055s, bw: 0.133s), 21.4 im/s, lr: 0.0001
[   24/20000] focal loss: 0.65036, box loss: 0.30269, 0.173s/4-batch (fw: 0.045s, bw: 0.128s), 23.1 im/s, lr: 0.0001
[   36/20000] focal loss: 0.46425, box loss: 0.23141, 0.178s/4-batch (fw: 0.047s, bw: 0.131s), 22.4 im/s, lr: 0.0001
[   48/20000] focal loss: 0.45115, box loss: 0.23505, 0.180s/4-batch (fw: 0.047s, bw: 0.133s), 22.2 im/s, lr: 0.0001
[   59/20000] focal loss: 0.38958, box loss: 0.25373, 0.184s/4-batch (fw: 0.049s, bw: 0.134s), 21.8 im/s, lr: 0.0001
[   71/20000] focal loss: 0.37733, box loss: 0.23988, 0.174s/4-batch (fw: 0.049s, bw: 0.125s), 22.9 im/s, lr: 0.0001
[   83/20000] focal loss: 0.39514, box loss: 0.23878, 0.181s/4-batch (fw: 0.048s, bw: 0.133s), 22.1 im/s, lr: 0.0001
[   94/20000] focal loss: 0.39947, box loss: 0.23817, 0.185s/4-batch (fw: 0.050s, bw: 0.134s), 21.6 im/s, lr: 0.0001
[  105/20000] focal loss: 0.37343, box loss: 0.20238, 0.182s/4-batch (fw: 0.048s, bw: 0.134s), 22.0 im/s, lr: 0.0001
[  116/20000] focal loss: 0.19689, box loss: 0.17371, 0.183s/4-batch (fw: 0.050s, bw: 0.132s), 21.8 im/s, lr: 0.0001
[  128/20000] focal loss: 0.20368, box loss: 0.16538, 0.178s/4-batch (fw: 0.046s, bw: 0.131s), 22.5 im/s, lr: 0.0001
[  140/20000] focal loss: 0.22763, box loss: 0.15772, 0.176s/4-batch (fw: 0.050s, bw: 0.126s), 22.7 im/s, lr: 0.0001
[  148/20000] focal loss: 0.21997, box loss: 0.18400, 0.585s/4-batch (fw: 0.047s, bw: 0.144s), 6.8 im/s, lr: 0.0001
 Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.52674
 Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.91450
 Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.35172
 Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.61881
 Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = -1.00000
 Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = -1.00000
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.58824
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.61765
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.61765
 Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.61765
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = -1.00000
 Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = -1.00000
Saving model: 148

Π”Π° бистС истраТили Ρ†Π΅ΠΎ скуп ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€Π°, ΠΏΠΎΠ³Π»Π΅Π΄Π°Ρ˜Ρ‚Π΅

retinanet/main.py

Π“Π΅Π½Π΅Ρ€Π°Π»Π½ΠΎ, ΠΎΠ½ΠΈ су стандардни Π·Π° Π΄Π΅Ρ‚Π΅ΠΊΡ†ΠΈΡ˜Ρƒ ΠΈ ΠΈΠΌΠ°Ρ˜Ρƒ опис. Π—Π°ΠΏΠΎΡ‡Π½ΠΈΡ‚Π΅ ΠΎΠ±ΡƒΠΊΡƒ ΠΈ ΡΠ°Ρ‡Π΅ΠΊΠ°Ρ˜Ρ‚Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°ΠΊΡ™ΡƒΡ‡ΠΊΠ° ΠΌΠΎΠΆΠ΅ сС Π²ΠΈΠ΄Π΅Ρ‚ΠΈ Ρƒ:

retinanet/infer_example.py

ΠΈΠ»ΠΈ ΠΏΠΎΠΊΡ€Π΅Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

/opt/conda/bin/python retinanet/main.py infer retinanet_rn34fpn.pth 
--images /workspace/mounted_vol/dataset/test/images 
--annotations /workspace/mounted_vol/dataset/val.json 
--output result.json 
--resize 256 
--max-size 512 
--batch 32

Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡ˜ΡƒΠΌ Π²Π΅Ρ› ΠΈΠΌΠ° Π€ΠΎΡ†Π°Π» Лосс ΠΈ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΡƒΠ³Ρ€Π°Ρ’Π΅Π½ΠΈΡ… окосница, Π° Ρ‚Π°ΠΊΠΎΡ’Π΅ јС Π»Π°ΠΊΠΎ ΡƒΠ³Ρ€Π°Π΄ΠΈΡ‚ΠΈ својС

retinanet/backbones/*.py

Π£ Ρ‚Π°Π±Π΅Π»ΠΈ Π°ΡƒΡ‚ΠΎΡ€ΠΈ Π΄Π°Ρ˜Ρƒ Π½Π΅ΠΊΠ΅ карактСристикС:

ВСнсорРВ 6.ΠΊΠΊΠΊ – Π·Π°ΠΊΡ™ΡƒΡ‡ΠΈΠ²Π°ΡšΠ΅ високих пСрформанси Π·Π° ΠΌΠΎΠ΄Π΅Π»Π΅ Π΄ΡƒΠ±ΠΎΠΊΠΎΠ³ ΡƒΡ‡Π΅ΡšΠ° (Π΄Π΅Ρ‚Π΅ΠΊΡ†ΠΈΡ˜Π° ΠΈ ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° ΠΎΠ±Ρ˜Π΅ΠΊΠ°Ρ‚Π°)

Π’Ρƒ су ΠΈ окосницС Π Π΅ΡΠΠ΅ΠšΡΡ‚50_32ΠΊ4дЀПН ΠΈ Π Π΅ΡΠΠ΅ΠšΡΡ‚101_32ΠΊ8дЀПН, ΠΏΡ€Π΅ΡƒΠ·Π΅Ρ‚Π΅ ΠΈΠ· торцхвисион-Π°.
Надам сС Π΄Π° стС ΠΌΠ°Π»ΠΎ схватили Π΄Π΅Ρ‚Π΅ΠΊΡ†ΠΈΡ˜Ρƒ, Π°Π»ΠΈ свакако Π±ΠΈ Ρ‚Ρ€Π΅Π±Π°Π»ΠΎ Π΄Π° ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚Π΅ Π·Π²Π°Π½ΠΈΡ‡Π½Ρƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Ρƒ Π΄Π° бистС Ρ‚ΠΎ ΡƒΡ€Π°Π΄ΠΈΠ»ΠΈ Ρ€Π°Π·ΡƒΠΌΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈΠ·Π²ΠΎΠ·Π° ΠΈ Π΅Π²ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ€Π°ΡšΠ°.

Π€Π°Π·Π° 5. Извоз ΠΈ Π·Π°ΠΊΡ™ΡƒΡ‡ΠΈΠ²Π°ΡšΠ΅ Π£Π½Π΅Ρ‚ ΠΌΠΎΠ΄Π΅Π»Π° са РСснСт Π΅Π½ΠΊΠΎΠ΄Π΅Ρ€ΠΎΠΌ

Као ΡˆΡ‚ΠΎ стС Π²Π΅Ρ€ΠΎΠ²Π°Ρ‚Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Π·Π° ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Ρƒ су инсталиранС Ρƒ Π”ΠΎΡ†ΠΊΠ΅Ρ€Ρ„ΠΈΠ»Π΅-Ρƒ, Π° посСбно Π΄ΠΈΠ²Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π³ΠΈΡ‚Ρ…ΡƒΠ±.Ρ†ΠΎΠΌ/ΠΊΡƒΠ±Π²Π΅Π»/сСгмСнтатион_модСлс.ΠΏΠΈΡ‚ΠΎΡ€Ρ†Ρ…. Π£ ΠΏΠ°ΠΊΠ΅Ρ‚Ρƒ ΡƒΠ½ΠΈΡ‚Π΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ½Π°Ρ›ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π·Π°ΠΊΡ™ΡƒΡ‡ΠΈΠ²Π°ΡšΠ° ΠΈ ΠΈΠ·Π²ΠΎΠ·Π° ΠΏΠΈΡ‚ΠΎΡ€Ρ†Ρ… ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈΡ… Ρ‚Π°Ρ‡Π°ΠΊΠ° Ρƒ ВСнсорРВ ΠΌΠΎΡ‚ΠΎΡ€.

Π“Π»Π°Π²Π½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΡ€ΠΈ ΠΈΠ·Π²ΠΎΠ·Ρƒ ΠΌΠΎΠ΄Π΅Π»Π° сличних Π£Π½Π΅Ρ‚-Ρƒ са ОННКБ-Π° Π½Π° ВСнсоРВ јС ΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π΄Π° сС подСси фиксна Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° УпсамплС-Π° ΠΈΠ»ΠΈ Π΄Π° сС користи ЦонвВранспосС2Π”:

import torch.onnx.symbolic_opset9 as onnx_symbolic
        def upsample_nearest2d(g, input, output_size):
            # Currently, TRT 5.1/6.0 ONNX Parser does not support all ONNX ops
            # needed to support dynamic upsampling ONNX forumlation
            # Here we hardcode scale=2 as a temporary workaround
            scales = g.op("Constant", value_t=torch.tensor([1., 1., 2., 2.]))
            return g.op("Upsample", input, scales, mode_s="nearest")

        onnx_symbolic.upsample_nearest2d = upsample_nearest2d

ΠšΠΎΡ€ΠΈΡΡ‚Π΅Ρ›ΠΈ ΠΎΠ²Ρƒ Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Ρƒ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡƒΡ€Π°Π΄ΠΈΡ‚Π΅ аутоматски ΠΏΡ€ΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΈΠ·Π²ΠΎΠ·Π° Ρƒ ОННКБ, Π°Π»ΠΈ Π²Π΅Ρ› Ρƒ Π²Π΅Ρ€Π·ΠΈΡ˜ΠΈ 7 ВСнсорРВ-Π° овај ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ јС Ρ€Π΅ΡˆΠ΅Π½ ΠΈ ΠΌΠΎΡ€Π°ΠΌΠΎ још ΠΌΠ°Π»ΠΎ Π΄Π° сачСкамо.

Π—Π°ΠΊΡ™ΡƒΡ‡Π°ΠΊ

Када сам ΠΏΠΎΡ‡Π΅ΠΎ Π΄Π° користим Π”ΠΎΡ†ΠΊΠ΅Ρ€, ΡΡƒΠΌΡšΠ°ΠΎ сам Ρƒ њСговС пСрформансС Π·Π° мојС Π·Π°Π΄Π°Ρ‚ΠΊΠ΅. ЈСдна ΠΎΠ΄ ΠΌΠΎΡ˜ΠΈΡ… Ρ˜Π΅Π΄ΠΈΠ½ΠΈΡ†Π° Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½ΠΎ ΠΈΠΌΠ° доста ΠΌΡ€Π΅ΠΆΠ½ΠΎΠ³ ΡΠ°ΠΎΠ±Ρ€Π°Ρ›Π°Ρ˜Π° који Π³Π΅Π½Π΅Ρ€ΠΈΡˆΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΊΠ°ΠΌΠ΅Ρ€Π°.

ВСнсорРВ 6.ΠΊΠΊΠΊ – Π·Π°ΠΊΡ™ΡƒΡ‡ΠΈΠ²Π°ΡšΠ΅ високих пСрформанси Π·Π° ΠΌΠΎΠ΄Π΅Π»Π΅ Π΄ΡƒΠ±ΠΎΠΊΠΎΠ³ ΡƒΡ‡Π΅ΡšΠ° (Π΄Π΅Ρ‚Π΅ΠΊΡ†ΠΈΡ˜Π° ΠΈ ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° ΠΎΠ±Ρ˜Π΅ΠΊΠ°Ρ‚Π°)

Π Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΠΈ тСстови Π½Π° Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Ρƒ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ су ΠΎ Ρ€Π΅Π»Π°Ρ‚ΠΈΠ²Π½ΠΎ Π²Π΅Π»ΠΈΠΊΠΈΠΌ Ρ‚Ρ€ΠΎΡˆΠΊΠΎΠ²ΠΈΠΌΠ° Π·Π° ΠΌΡ€Π΅ΠΆΠ½Ρƒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Ρƒ ΠΈ снимањС Π½Π° Π’ΠžΠ›Π£ΠœΠ•, плус Π½Π΅ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈ ΠΈ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΈ Π“Π˜Π›, Π° ΠΏΠΎΡˆΡ‚ΠΎ јС снимањС ΠΎΠΊΠ²ΠΈΡ€Π°, ΡƒΠΏΡ€Π°Π²Ρ™Π°ΡšΠ΅ Π΄Ρ€Π°Ρ˜Π²Π΅Ρ€ΠΎΠΌ ΠΈ прСнос ΠΎΠΊΠ²ΠΈΡ€Π° ΠΏΡ€Π΅ΠΊΠΎ ΠΌΡ€Π΅ΠΆΠ΅ атомска ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π° Ρƒ Ρ€Π΅ΠΆΠΈΠΌΡƒ Ρ‚Π΅ΡˆΠΊΠΎ Ρƒ Ρ€Π΅Π°Π»Π½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Ρƒ, кашњСња Ρƒ ΠΌΡ€Π΅ΠΆΠΈ су Π²Π΅ΠΎΠΌΠ° ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π° Π·Π° ΠΌΠ΅Π½Π΅.

Али свС јС испало Ρƒ Ρ€Π΅Π΄Ρƒ =)

ПБ ΠžΡΡ‚Π°Ρ˜Π΅ само Π΄Π° Π΄ΠΎΠ΄Π°Ρ‚Π΅ ΡΠ²ΠΎΡ˜Ρƒ ΠΎΠΌΠΈΡ™Π΅Π½Ρƒ ΠΏΠ΅Ρ‚Ρ™Ρƒ Π²ΠΎΠ·Π° Π·Π° ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Ρƒ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡšΡƒ!

Π₯Π²Π°Π»Π°

Π₯Π²Π°Π»Π° Π·Π°Ρ˜Π΅Π΄Π½ΠΈΡ†ΠΈ одс.Π°ΠΈ, Π±Π΅Π· њСга јС Π½Π΅ΠΌΠΎΠ³ΡƒΡ›Π΅ Ρ€Π°Π·Π²ΠΈΡ˜Π°Ρ‚ΠΈ сС! Π₯Π²Π°Π»Π° ΠΏΡƒΠ½ΠΎ Π½01Π·3, који ΠΌΠ΅ јС ΠΎΡ…Ρ€Π°Π±Ρ€ΠΈΠΎ Π΄Π° Ρ€Π°Π΄ΠΈΠΌ Π”Π›, Π·Π±ΠΎΠ³ свог Π½Π΅ΠΏΡ€ΠΎΡ†Π΅ΡšΠΈΠ²ΠΎΠ³ савСта ΠΈ ΠΈΠ·ΡƒΠ·Π΅Ρ‚Π½ΠΎΠ³ профСсионализма!

ΠšΠΎΡ€ΠΈΡΡ‚ΠΈΡ‚Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΎΠ²Π°Π½Π΅ ΠΌΠΎΠ΄Π΅Π»Π΅ Ρƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡšΠΈ!

ВСнсорРВ 6.ΠΊΠΊΠΊ – Π·Π°ΠΊΡ™ΡƒΡ‡ΠΈΠ²Π°ΡšΠ΅ високих пСрформанси Π·Π° ΠΌΠΎΠ΄Π΅Π»Π΅ Π΄ΡƒΠ±ΠΎΠΊΠΎΠ³ ΡƒΡ‡Π΅ΡšΠ° (Π΄Π΅Ρ‚Π΅ΠΊΡ†ΠΈΡ˜Π° ΠΈ ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° ΠΎΠ±Ρ˜Π΅ΠΊΠ°Ρ‚Π°) Аурораи, Π΄ΠΎΠΎ

Π˜Π·Π²ΠΎΡ€: Π²Π²Π².Ρ…Π°Π±Ρ€.Ρ†ΠΎΠΌ

ΠšΡƒΠΏΠΈΡ‚Π΅ ΠΏΠΎΡƒΠ·Π΄Π°Π½ хостинг Π·Π° ΡΠ°Ρ˜Ρ‚ΠΎΠ²Π΅ са Π”Π”ΠΎΠ‘ Π·Π°ΡˆΡ‚ΠΈΡ‚ΠΎΠΌ, Π’ΠŸΠ‘ Π’Π”Π‘ сСрвСрС πŸ”₯ ΠšΡƒΠΏΠΈΡ‚Π΅ ΠΏΠΎΡƒΠ·Π΄Π°Π½ Π²Π΅Π± хостинг са DDoS Π·Π°ΡˆΡ‚ΠΈΡ‚ΠΎΠΌ, VPS VDS сСрвСрС | ProHoster