TensorRT 6.x.x.x β€” високоСфСктивСн инфСрСнс Π·Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° Π΄ΡŠΠ»Π±ΠΎΡ‡ΠΈΠ½Π½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ (ΠžΡ‚ΠΊΡ€ΠΈΡ‚ΠΈΠ΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΈ БСгмСнтация)

TensorRT 6.x.x.x β€” високоСфСктивСн инфСрСнс Π·Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° Π΄ΡŠΠ»Π±ΠΎΡ‡ΠΈΠ½Π½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ (ΠžΡ‚ΠΊΡ€ΠΈΡ‚ΠΈΠ΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΈ БСгмСнтация)
Π‘ΠΎΠ»ΠΊΠ°Ρ‚Π° Π΅ само Π² ΠΏΡŠΡ€Π²ΠΈΡ ΠΏΡŠΡ‚!

Π—Π΄Ρ€Π°Π²Π΅ΠΉΡ‚Π΅ Π½Π° всички! Бкъпи приятСли, Π² Ρ‚Π°Π·ΠΈ статия искам Π΄Π° сподСля ΠΎΠΏΠΈΡ‚Π° си с ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°Ρ‚Π° Π½Π° TensorRT, RetinaNet, Π±Π°Π·ΠΈΡ€Π°Π½ΠΎ Π½Π° рСпозитория github.com/aidonchuk/retinanet-examples (Ρ‚ΠΎΠ²Π° Π΅ Ρ„ΠΎΡ€ΠΊ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΎΡ‚ΠΎ Ρ€Π΅ΠΏΠΎ ΠΎΡ‚ nvidia, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π±ΡŠΡ€Π·ΠΎ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² продукция). ΠŸΡ€Π΅Π²ΡŠΡ€Ρ‚Π°ΠΉΠΊΠΈ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡΡ‚Π° Π² ΠΊΠ°Π½Π°Π»ΠΈΡ‚Π΅ Π½Π° общността ods.ai, сС сблъсквам с Π²ΡŠΠΏΡ€ΠΎΡΠΈ относно ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°Ρ‚Π° Π½Π° TensorRT ΠΈ основно Π²ΡŠΠΏΡ€ΠΎΡΠΈΡ‚Π΅ сС повтарят, Π·Π°Ρ‚ΠΎΠ²Π° Ρ€Π΅ΡˆΠΈΡ… Π΄Π° напиша ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ сС ΠΌΠΎΠΆΠ΅ ΠΏΠΎ-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ Π·Π° Π±ΡŠΡ€Π· инфСрСнс с TensorRT, RetinaNet, Unet ΠΈ docker.

ОписаниС Π½Π° Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π°

ΠŸΡ€Π΅Π΄Π»Π°Π³Π°ΠΌ Π΄Π° поставим Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½: трябва Π΄Π° ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°ΠΌΠ΅ датасСта, Π΄Π° ΠΎΠ±ΡƒΡ‡ΠΈΠΌ ΠΌΡ€Π΅ΠΆΠ° RetinaNet/Unet Π½Π° Pytorch1.3+, Π΄Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°ΠΌΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ‚Π΅ тСТСсти Π² ONNX, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Π΄Π° Π³ΠΈ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°ΠΌΠ΅ Π² TensorRT engine ΠΈ всичко Ρ‚ΠΎΠ²Π° Π΄Π° стартирамС Π² docker, Π·Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½Π΅ Π½Π° Ubuntu 18 ΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ‡Π½ΠΎ Π½Π° ARM(Jetson)* Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°ΠΉΠΊΠΈ Ρ€ΡŠΡ‡Π½Π°Ρ‚Π° настройка Π½Π° срСдата. Π’ ΠΊΡ€Π°ΠΉΠ½Π°Ρ‚Π° смСтка Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Π³ΠΎΡ‚ΠΎΠ² Π½Π΅ само Π·Π° Скспорта ΠΈ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° RetinaNet/Unet, Π½ΠΎ ΠΈ Π·Π° ΠΏΡŠΠ»Π½ΠΎΡ†Π΅Π½Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½Π° класификация, сСгмСнтация с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°Ρ‚Π° инфраструктура.

Π•Ρ‚Π°ΠΏ 1. ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π½Π° срСдата

Π’ΡƒΠΊ Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ, Ρ‡Π΅ Π² послСдно Π²Ρ€Π΅ΠΌΠ΅ напълно съм сС ΠΎΡ‚ΠΊΠ°Π·Π°Π» ΠΎΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈ настройванСто Π½Π° ΠΊΠ°ΠΊΠ²ΠΈΡ‚ΠΎ ΠΈ Π΄Π° Π±ΠΈΠ»ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° дСсктоп ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π°, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π½Π° devbox. ЕдинствСното, ΠΊΠΎΠ΅Ρ‚ΠΎ трябва Π΄Π° създам ΠΈ инсталирам, Π΅ python virtual environment ΠΈ cuda 10.2 (ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅ Π΄ΠΎ Π΅Π΄ΠΈΠ½ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ nvidia) ΠΎΡ‚ deb.

Π”Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ новоинсталирана Ubuntu 18. НСка инсталирамС cuda 10.2(deb), ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π·Π° процСса Π½Π° инсталация няма Π΄Π° спирам, ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π°Ρ‚Π° докумСнтация Π΅ напълно Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½Π°.

Π‘Π΅Π³Π° Ρ‰Π΅ инсталирамС docker, Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΡ‚ΠΎ Π·Π° инсталиранС Π½Π° Π΄ΠΎΠΊΠ΅Ρ€Π° лСсно ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°ΠΌΠ΅Ρ€ΠΈ, Π΅Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ www.digitalocean.com/community/tutorials/docker-ubuntu-18-04-1-bg, Π²Π΅Ρ‡Π΅ Π΅ Π½Π°Π»ΠΈΡ‡Π½Π° вСрсия 19+ β€” инсталирамС я. И Π½Π΅ забравяйтС Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ docker Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π±Π΅Π· sudo, Ρ‚Π°ΠΊΠ° Ρ‰Π΅ Π΅ ΠΏΠΎ-ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ всичко Π΅ Π½Π°Ρ€Π΅Π΄, ΠΏΡ€Π°Π²ΠΈΠΌ слСдното:

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

И Π΄ΠΎΡ€ΠΈ Π½Π΅ Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π° ΠΏΠΎΠ³Π»Π΅ΠΆΠ΄Π°Ρ‚Π΅ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΎΡ‚ΠΎ Ρ€Π΅ΠΏΠΎ github.com/NVIDIA/nvidia-docker.

Π‘Π΅Π³Π° ΠΏΡ€Π°Π²ΠΈΠΌ git clone github.com/aidonchuk/retinanet-examples.

ΠžΡΡ‚Π°Π½Π°Π»ΠΎ Π΅ съвсСм ΠΌΠ°Π»ΠΊΠΎ, Π·Π° Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ docker с nvidia-ΠΎΠ±Ρ€Π°Π·, трябва Π΄Π° сС рСгистрирамС Π² NGC Cloud ΠΈ Π΄Π° Π²Π»Π΅Π·Π΅ΠΌ. ΠžΡ‚ΠΈΠ²Π°ΠΌΠ΅ Ρ‚ΡƒΠΊ ngc.nvidia.com, рСгистрирамС сС ΠΈ слСд ΠΊΠ°Ρ‚ΠΎ Π²Π»Π΅Π·Π΅ΠΌ Π² NGC Cloud, натискамС SETUP Π² горния ляв ъгъл Π½Π° Π΅ΠΊΡ€Π°Π½Π° ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ ΠΏΠΎ Ρ‚Π°Π·ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠ° ngc.nvidia.com/setup/api-key. НатискамС β€žΠ³Π΅Π½Π΅Ρ€ΠΈΡ€Π°ΠΉ ΠΊΠ»ΡŽΡ‡β€œ. ΠŸΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π΄Π° Π³ΠΎ Π·Π°ΠΏΠ°Π·ΠΈΡ‚Π΅, ΠΈΠ½Π°Ρ‡Π΅ ΠΏΡ€ΠΈ слСдващото посСщСниС Ρ‰Π΅ трябва Π΄Π° Π³ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚Π΅ ΠΎΡ‚Π½ΠΎΠ²ΠΎ ΠΈ, ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ, ΠΏΡ€ΠΈ Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° Π½ΠΎΠ²Π° машина, Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈΡ‚Π΅ Ρ‚Π°Π·ΠΈ опСрация ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ.

ИзпълнявамС:

docker login nvcr.io
Username: $oauthtoken
Password:  - гСнСрираният ΠΊΠ»ΡŽΡ‡

ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΊΠΎΠΏΠΈΡ€Π°ΠΌΠ΅ Username. Π•, Π΅Ρ‚ΠΎ, срСдата Π΅ Ρ€Π°Π·Π³Ρ€ΡŠΠ½Π°Ρ‚Π°!

Π•Ρ‚Π°ΠΏ 2. БглобяванС Π½Π° docker ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€

На втория Π΅Ρ‚Π°ΠΏ ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½ΠΈ Ρ‰Π΅ сглобим docker ΠΈ Ρ‰Π΅ сС Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΠΌ с Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΠΈ.
ΠŸΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ Π² ΠΊΠΎΡ€Π΅Π½ΠΎΠ²Π°Ρ‚Π° ΠΏΠ°ΠΏΠΊΠ° относно ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° retina-examples ΠΈ изпълнявамС

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

БглобявамС docker, ΠΏΡ€Π΅Π΄Π°Π²Π°ΠΉΠΊΠΈ Π² Π½Π΅Π³ΠΎ тСкущия ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» β€” Ρ‚ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π°ΠΊΠΎ Ρ‰Π΅ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π½Π΅Ρ‰ΠΎ Π½Π° монтирания VOLUME с ΠΏΡ€Π°Π²Π°Ρ‚Π° Π½Π° тСкущия ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», ΠΈΠ½Π°Ρ‡Π΅ Ρ‰Π΅ бъдС root ΠΈ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ.

Π”ΠΎΠΊΠ°Ρ‚ΠΎ сС сглобява docker, Π½Π΅ΠΊΠ° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Dockerfile:

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.x.x.x ΠΈ ΠΎΡ‰Π΅ мноТСство Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, позволяващи Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°ΠΌΠ΅ cpp ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° нашия Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€.

Π•Ρ‚Π°ΠΏ 3. Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°Π½Π΅ ΠΈ отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² docker ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°

ΠŸΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ към основния случай Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈ срСдата Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, ΠΏΡŠΡ€Π²ΠΎ Ρ‰Π΅ стартирамС nvidia docker. ИзпълнявамС:

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

Π‘Π΅Π³Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ ΠΏΠΎ ssh @localhost. Π‘Π»Π΅Π΄ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΡ‚ΠΎ стартиранС, отварямС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² PyCharm. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° отварямС

Настройки->Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°->ДобавянС->Ssh ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€

Π‘Ρ‚ΡŠΠΏΠΊΠ° 1
TensorRT 6.x.x.x β€” високоСфСктивСн инфСрСнс Π·Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° Π΄ΡŠΠ»Π±ΠΎΡ‡ΠΈΠ½Π½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ (ΠžΡ‚ΠΊΡ€ΠΈΡ‚ΠΈΠ΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΈ БСгмСнтация)

Π‘Ρ‚ΡŠΠΏΠΊΠ° 2
TensorRT 6.x.x.x β€” високоСфСктивСн инфСрСнс Π·Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° Π΄ΡŠΠ»Π±ΠΎΡ‡ΠΈΠ½Π½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ (ΠžΡ‚ΠΊΡ€ΠΈΡ‚ΠΈΠ΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΈ БСгмСнтация)

Π‘Ρ‚ΡŠΠΏΠΊΠ° 3
TensorRT 6.x.x.x β€” високоСфСктивСн инфСрСнс Π·Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° Π΄ΡŠΠ»Π±ΠΎΡ‡ΠΈΠ½Π½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ (ΠžΡ‚ΠΊΡ€ΠΈΡ‚ΠΈΠ΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΈ БСгмСнтация)

Π˜Π·Π±ΠΈΡ€Π°ΠΌΠ΅ всичко ΠΊΠ°ΠΊΡ‚ΠΎ Π½Π° Π΅ΠΊΡ€Π°Π½Π°,

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ -> /opt/conda/bin/python

β€” Ρ‚ΠΎΠ²Π° Ρ‰Π΅ бъдС ln Π½Π° Python3.6 ΠΈ

Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€Π°Ρ‰Π° ΠΏΠ°ΠΏΠΊΠ° -> /workspace/retinanet

НатискамС Π³ΠΎΡ‚ΠΎΠ²ΠΎ, ΠΈΠ·Ρ‡Π°ΠΊΠ²Π°ΠΌΠ΅ индСксиранС ΠΈ всичко, срСдата Π΅ Π³ΠΎΡ‚ΠΎΠ²Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅!

Π’ΠΠ–ΠΠž!!! Π’Π΅Π΄Π½Π°Π³Π° слСд индСксиранСто ΠΈΠ·Ρ‚Π΅Π³Π»Π΅Ρ‚Π΅ ΠΎΡ‚ docker ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° Retinanet. Π’ контСкстното мСню Π² ΠΊΠΎΡ€Π΅Π½Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ опция

Π”Π΅ΠΏΠ»ΠΎΠΉΠΌΠ΅Π½Ρ‚->Π˜Π·Ρ‚Π΅Π³Π»ΡΠ½Π΅

ΠŸΠΎΡΠ²ΡΠ²Π°Ρ‚ сС Π΅Π΄ΠΈΠ½ Ρ„Π°ΠΉΠ» ΠΈ Π΄Π²Π΅ ΠΏΠ°ΠΏΠΊΠΈ build, retinanet.egg-info ΠΈ _Π‘.so

TensorRT 6.x.x.x β€” високоСфСктивСн инфСрСнс Π·Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° Π΄ΡŠΠ»Π±ΠΎΡ‡ΠΈΠ½Π½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ (ΠžΡ‚ΠΊΡ€ΠΈΡ‚ΠΈΠ΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΈ БСгмСнтация)

Ако Π²Π°ΡˆΠΈΡΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°, Π·Π½Π°Ρ‡ΠΈ срСдата Π²ΠΈΠΆΠ΄Π° всичкитС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Π½ΠΈΠ΅ смС Π³ΠΎΡ‚ΠΎΠ²ΠΈ Π·Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½Π° RetinaNet.

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

Π—Π° Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° основно ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ supervise.ly β€” приятСн ΠΈ ΡƒΠ΄ΠΎΠ±Π΅Π½ инструмСнт, ΠΏΡ€Π΅Π· послСдното Π²Ρ€Π΅ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π³Ρ€Π΅ΡˆΠΊΠΈ бяха ΠΏΠΎΠΏΡ€Π°Π²Π΅Π½ΠΈ ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° си.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Π΅ стС ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π»ΠΈ Π½Π°Π±ΠΎΡ€Π° ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ ΠΈ стС Π³ΠΎ ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΠ»ΠΈ, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° Π³ΠΎ поставитС Π² нашия RetinaNet, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π΅ Π² собствСн Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΈ Π·Π° Ρ‚ΠΎΠ²Π° трябва Π΄Π° Π³ΠΎ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°ΠΌΠ΅ Π² COCO. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΡŠΡ‚ Π·Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½Π΅ сС Π½Π°ΠΌΠΈΡ€Π° Π²:

markup_utils/supervisly_to_coco.py

ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ катСгорията Π² скрипта Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈ Π²ΠΈΠ΅ трябва Π΄Π° Π²ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ своитС (Π½Π΅ Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π° добавятС катСгорията Ρ„ΠΎΠ½)

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

АвторитС Π½Π° оригиналния Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΠΎ някаква ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Ρ€Π΅ΡˆΠΈΡ…Π°, Ρ‡Π΅ освСн COCO/VOC няма Π΄Π° ΠΎΠ±ΡƒΡ‡Π°Π²Π°Ρ‚Π΅ Π½ΠΈΡ‰ΠΎ Π·Π° дСтСкция, Π·Π°Ρ‚ΠΎΠ²Π° сС Π½Π°Π»ΠΎΠΆΠΈ ΠΌΠ°Π»ΠΊΠΎ Π΄Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°ΠΌ изходния Ρ„Π°ΠΉΠ»

retinanet/dataset.py

Добавяйки Ρ‚ΡƒΠΊ Π»ΡŽΠ±ΠΈΠΌΠΈΡ‚Π΅ си Π°ΡƒΠ³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ albumentations.readthedocs.io/en/latest ΠΈ Π΄Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅Ρ‚Π΅ строго Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈΡ‚Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠΎΡ‚ COCO. Има ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° ΠΈΠ·Ρ€Π΅ΠΆΠ΅Ρ‚Π΅ Π³ΠΎΠ»Π΅ΠΌΠΈ области Π½Π° дСтСкция, Π°ΠΊΠΎ Ρ‚ΡŠΡ€ΡΠΈΡ‚Π΅ ΠΌΠ°Π»ΠΊΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ изобраТСния, ΠΈΠΌΠ°Ρ‚Π΅ малък Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ =), ΠΈ Π½ΠΈΡ‰ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ, Π½ΠΎ Π·Π° Ρ‚ΠΎΠ²Π° ΠΏΠΎ-късно.

ΠžΠ±Ρ‰ΠΎ ΠΊΠ°Π·Π°Π½ΠΎ, train loop ΡΡŠΡ‰ΠΎ Π΅ отслабСн; ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ Ρ‚ΠΎΠΉ Π½Π΅ запазвашС Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚ΠΎΠ²Π΅Ρ‚Π΅, използвашС някакъв уТасСн scheduler ΠΈ Ρ‚.Π½. Но сСга Π²ΠΈ остава само Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ backbone ΠΈ Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅.

/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

Π’ консолата Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅:

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄Π΅Π»Π°...
     ΠΌΠΎΠ΄Π΅Π»: RetinaNet
  основа: ResNet18FPN
   класовС: 2, Π°Π½ΠΊΠ΅Ρ€ΠΈ: 9
Π˜Π·Π±Ρ€Π°Π½ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π΅Π½ Π½ΠΈΠ²ΠΎ O0:  Чиста FP32 Ρ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²ΠΊΠ°.

ΠŸΡ€Π΅Π΄ΠΏΠΎΡΡ‚Π°Π²ΠΊΠΈ Π·Π° Ρ‚ΠΎΠ²Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎ Π½ΠΈΠ²ΠΎ са:
Π²ΠΊΠ»ΡŽΡ‡Π΅Π½                : Вярно
ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎ Π½ΠΈΠ²ΠΎ   : O0
Ρ‚ΠΈΠΏ Π½Π° ΠΌΠΎΠ΄Π΅Π»Π°          : torch.float32
ΠΏΠΎΠΏΡ€Π°Π²ΠΊΠ° Π½Π° torch Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ  : НСвярно
запазванС на batchnorm fp32    : Няма
основни Ρ‚Π΅Π³Π»Π°         : НСвярно
стСпСн Π½Π° Π·Π°Π³ΡƒΠ±Π°             : 1.0
ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° потрСбитСлскитС прСнастройки (Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ kwargs, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са Няма)...
Π‘Π»Π΅Π΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° прСнастройкитС, ΠΎΠΏΡ†ΠΈΠΈΡ‚Π΅ Π·Π° оптимизация са:
Π²ΠΊΠ»ΡŽΡ‡Π΅Π½                : Вярно
ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎ Π½ΠΈΠ²ΠΎ   : O0
Ρ‚ΠΈΠΏ Π½Π° ΠΌΠΎΠ΄Π΅Π»Π°          : torch.float32
ΠΏΠΎΠΏΡ€Π°Π²ΠΊΠ° Π½Π° torch Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ  : НСвярно
запазванС на batchnorm fp32    : Няма
основни Ρ‚Π΅Π³Π»Π°         : НСвярно
стСпСн Π½Π° Π·Π°Π³ΡƒΠ±Π°             : 128.0
ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π½Π° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ...
    Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅: pytorch
    промяна Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€: [1024, 1280], макс: 1280
    устройство: 4 gpu
    ΠΏΠ°Ρ€Ρ‚ΠΈΠ΄Π°: 4, прСцизност: смСсСна
ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠΎΠ΄Π΅Π»Π° Π·Π° 20000 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ...
[    1/20000] Ρ„ΠΎΠΊΠ°Π»Π½Π° Π·Π°Π³ΡƒΠ±Π°: 0.95619, Π·Π°Π³ΡƒΠ±Π° Π½Π° кутия: 0.51584, 4.042s/4-ΠΏΠ°Ρ€Ρ‚ΠΈΠ΄Π° (fw: 0.698s, bw: 0.459s), 1.0 ΠΈΠΌ/s, lr: 0.0001
[   12/20000] Ρ„ΠΎΠΊΠ°Π»Π½Π° Π·Π°Π³ΡƒΠ±Π°: 0.76191, Π·Π°Π³ΡƒΠ±Π° Π½Π° кутия: 0.31794, 0.187s/4-ΠΏΠ°Ρ€Ρ‚ΠΈΠ΄Π° (fw: 0.055s, bw: 0.133s), 21.4 ΠΈΠΌ/s, lr: 0.0001
[   24/20000] Ρ„ΠΎΠΊΠ°Π»Π½Π° Π·Π°Π³ΡƒΠ±Π°: 0.65036, Π·Π°Π³ΡƒΠ±Π° Π½Π° кутия: 0.30269, 0.173s/4-ΠΏΠ°Ρ€Ρ‚ΠΈΠ΄Π° (fw: 0.045s, bw: 0.128s), 23.1 ΠΈΠΌ/s, lr: 0.0001
[   36/20000] Ρ„ΠΎΠΊΠ°Π»Π½Π° Π·Π°Π³ΡƒΠ±Π°: 0.46425, Π·Π°Π³ΡƒΠ±Π° Π½Π° кутия: 0.23141, 0.178s/4-ΠΏΠ°Ρ€Ρ‚ΠΈΠ΄Π° (fw: 0.047s, bw: 0.131s), 22.4 ΠΈΠΌ/s, lr: 0.0001
[   48/20000] Ρ„ΠΎΠΊΠ°Π»Π½Π° Π·Π°Π³ΡƒΠ±Π°: 0.45115, Π·Π°Π³ΡƒΠ±Π° Π½Π° кутия: 0.23505, 0.180s/4-ΠΏΠ°Ρ€Ρ‚ΠΈΠ΄Π° (fw: 0.047s, bw: 0.133s), 22.2 ΠΈΠΌ/s, lr: 0.0001
[   59/20000] Ρ„ΠΎΠΊΠ°Π»Π½Π° Π·Π°Π³ΡƒΠ±Π°: 0.38958, Π·Π°Π³ΡƒΠ±Π° Π½Π° кутия: 0.25373, 0.184s/4-ΠΏΠ°Ρ€Ρ‚ΠΈΠ΄Π° (fw: 0.049s, bw: 0.134s), 21.8 ΠΈΠΌ/s, lr: 0.0001
[   71/20000] Ρ„ΠΎΠΊΠ°Π»Π½Π° Π·Π°Π³ΡƒΠ±Π°: 0.37733, Π·Π°Π³ΡƒΠ±Π° Π½Π° кутия: 0.23988, 0.174s/4-ΠΏΠ°Ρ€Ρ‚ΠΈΠ΄Π° (fw: 0.049s, bw: 0.125s), 22.9 ΠΈΠΌ/s, lr: 0.0001
[   83/20000] Ρ„ΠΎΠΊΠ°Π»Π½Π° Π·Π°Π³ΡƒΠ±Π°: 0.39514, Π·Π°Π³ΡƒΠ±Π° Π½Π° кутия: 0.23878, 0.181s/4-ΠΏΠ°Ρ€Ρ‚ΠΈΠ΄Π° (fw: 0.048s, bw: 0.133s), 22.1 ΠΈΠΌ/s, lr: 0.0001
[   94/20000] Ρ„ΠΎΠΊΠ°Π»Π½Π° Π·Π°Π³ΡƒΠ±Π°: 0.39947, Π·Π°Π³ΡƒΠ±Π° Π½Π° кутия: 0.23817, 0.185s/4-ΠΏΠ°Ρ€Ρ‚ΠΈΠ΄Π° (fw: 0.050s, bw: 0.134s), 21.6 ΠΈΠΌ/s, lr: 0.0001
[  105/20000] Ρ„ΠΎΠΊΠ°Π»Π½Π° Π·Π°Π³ΡƒΠ±Π°: 0.37343, Π·Π°Π³ΡƒΠ±Π° Π½Π° кутия: 0.20238, 0.182s/4-ΠΏΠ°Ρ€Ρ‚ΠΈΠ΄Π° (fw: 0.048s, bw: 0.134s), 22.0 ΠΈΠΌ/s, lr: 0.0001
[  116/20000] Ρ„ΠΎΠΊΠ°Π»Π½Π° Π·Π°Π³ΡƒΠ±Π°: 0.19689, Π·Π°Π³ΡƒΠ±Π° Π½Π° кутия: 0.17371, 0.183s/4-ΠΏΠ°Ρ€Ρ‚ΠΈΠ΄Π° (fw: 0.050s, bw: 0.132s), 21.8 ΠΈΠΌ/s, lr: 0.0001
[  128/20000] Ρ„ΠΎΠΊΠ°Π»Π½Π° Π·Π°Π³ΡƒΠ±Π°: 0.20368, Π·Π°Π³ΡƒΠ±Π° Π½Π° кутия: 0.16538, 0.178s/4-ΠΏΠ°Ρ€Ρ‚ΠΈΠ΄Π° (fw: 0.046s, bw: 0.131s), 22.5 ΠΈΠΌ/s, lr: 0.0001
[  140/20000] Ρ„ΠΎΠΊΠ°Π»Π½Π° Π·Π°Π³ΡƒΠ±Π°: 0.22763, Π·Π°Π³ΡƒΠ±Π° Π½Π° кутия: 0.15772, 0.176s/4-ΠΏΠ°Ρ€Ρ‚ΠΈΠ΄Π° (fw: 0.050s, bw: 0.126s), 22.7 ΠΈΠΌ/s, lr: 0.0001
[  148/20000] Ρ„ΠΎΠΊΠ°Π»Π½Π° Π·Π°Π³ΡƒΠ±Π°: 0.21997, Π·Π°Π³ΡƒΠ±Π° Π½Π° кутия: 0.18400, 0.585s/4-ΠΏΠ°Ρ€Ρ‚ΠΈΠ΄Π° (fw: 0.047s, bw: 0.144s), 6.8 ΠΈΠΌ/s, lr: 0.0001
 Π‘Ρ€Π΅Π΄Π½Π° ΠŸΡ€Π΅Ρ†ΠΈΠ·Π½ΠΎΡΡ‚  (AP) @[ IoU=0.50:0.95 | област=   всичко | maxDets=100 ] = 0.52674
 Π‘Ρ€Π΅Π΄Π½Π° ΠŸΡ€Π΅Ρ†ΠΈΠ·Π½ΠΎΡΡ‚  (AP) @[ IoU=0.50      | област=   всичко | maxDets=100 ] = 0.91450
 Π‘Ρ€Π΅Π΄Π½Π° ΠŸΡ€Π΅Ρ†ΠΈΠ·Π½ΠΎΡΡ‚  (AP) @[ IoU=0.75      | област=   всичко | maxDets=100 ] = 0.35172
 Π‘Ρ€Π΅Π΄Π½Π° ΠŸΡ€Π΅Ρ†ΠΈΠ·Π½ΠΎΡΡ‚  (AP) @[ IoU=0.50:0.95 | област= малък | maxDets=100 ] = 0.61881
 Π‘Ρ€Π΅Π΄Π½Π° ΠŸΡ€Π΅Ρ†ΠΈΠ·Π½ΠΎΡΡ‚  (AP) @[ IoU=0.50:0.95 | област=срСдСн | maxDets=100 ] = -1.00000
 Π‘Ρ€Π΅Π΄Π½Π° ΠŸΡ€Π΅Ρ†ΠΈΠ·Π½ΠΎΡΡ‚  (AP) @[ IoU=0.50:0.95 | област= голям | maxDets=100 ] = -1.00000
 Π‘Ρ€Π΅Π΄Π½Π° Π’ΡŠΠ·Π²Ρ€Π°Ρ‚Π½Π° Бпособност (AR) @[ IoU=0.50:0.95 | област=   всичко | maxDets=  1 ] = 0.58824
 Π‘Ρ€Π΅Π΄Π½Π° Π’ΡŠΠ·Π²Ρ€Π°Ρ‚Π½Π° Бпособност (AR) @[ IoU=0.50:0.95 | област=   всичко | maxDets= 10 ] = 0.61765
 Π‘Ρ€Π΅Π΄Π½Π° Π’ΡŠΠ·Π²Ρ€Π°Ρ‚Π½Π° Бпособност (AR) @[ IoU=0.50:0.95 | област=   всичко | maxDets= 100 ] = 0.61765
 Π‘Ρ€Π΅Π΄Π½Π° Π’ΡŠΠ·Π²Ρ€Π°Ρ‚Π½Π° Бпособност (AR) @[ IoU=0.50:0.95 | област= малък | maxDets=100 ] = 0.61765
 Π‘Ρ€Π΅Π΄Π½Π° Π’ΡŠΠ·Π²Ρ€Π°Ρ‚Π½Π° Бпособност (AR) @[ IoU=0.50:0.95 | област=срСдСн | maxDets=100 ] = -1.00000
 Π‘Ρ€Π΅Π΄Π½Π° Π’ΡŠΠ·Π²Ρ€Π°Ρ‚Π½Π° Бпособност (AR) @[ IoU=0.50:0.95 | област= голям | maxDets=100 ] = -1.00000
Π—Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄Π΅Π»Π°: 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

Π’ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π²Π΅Ρ‡Π΅ Π΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½ Focal Loss ΠΈ няколко backbone, Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° лСсно ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС добавят свои.

retinanet/backbones/*.py

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π° Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ прСдставят някои характСристики:

TensorRT 6.x.x.x β€” високоСфСктивСн инфСрСнс Π·Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° Π΄ΡŠΠ»Π±ΠΎΡ‡ΠΈΠ½Π½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ (ΠžΡ‚ΠΊΡ€ΠΈΡ‚ΠΈΠ΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΈ БСгмСнтация)

Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΈΠΌΠ° backbone ResNeXt50_32x4dFPN ΠΈ ResNeXt101_32x8dFPN, Π²Π·Π΅Ρ‚ΠΈ ΠΎΡ‚ torchvision.
Надявам сС, Ρ‡Π΅ с дСтСкцията ΠΌΠ°Π»ΠΊΠΎ смС наясно, Π½ΠΎ Π΅ Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π°Ρ‚Π° докумСнтация, Π·Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ Ρ€Π΅ΠΆΠΈΠΌΠΈΡ‚Π΅ Π½Π° СкспортиранС ΠΈ Π»ΠΎΠ³Π²Π°Π½Π΅..

Π•Ρ‚Π°ΠΏ 5. Експорт ΠΈ инфСрСнс Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Unet с Π΅Π½ΠΊΠΎΠ΄Π΅Ρ€ Resnet.

ΠšΠ°ΠΊΡ‚ΠΎ вСроятно стС забСлязали, Π² Dockerfile бяха инсталирани Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π·Π° сСгмСнтация ΠΈ ΠΏΠΎ-спСциално страхотната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° github.com/qubvel/segmentation_models.pytorch. Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΡŽΠ½Π΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° инфСрСнс ΠΈ Скспорт Π½Π° pytorch Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚ΠΈ Π² engine TensorRT.

ΠžΡΠ½ΠΎΠ²Π½ΠΈΡΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΡ€ΠΈ СкспортиранС Π½Π° Unet-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΡ‚ ONNX Π² TensoRT Π΅ нСобходимостта Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ фиксиран Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° Upsample ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ConvTranspose2D:

import torch.onnx.symbolic_opset9 as onnx_symbolic
        def upsample_nearest2d(g, input, output_size):
            # Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, TRT 5.1/6.0 ONNX Parser Π½Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° всички ONNX ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ
            # Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ upsampling ONNX Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠΈ
            # Π’ΡƒΠΊ Ρ‚Π²ΡŠΡ€Π΄ΠΎ Π·Π°Π΄Π°Π²Π°ΠΌΠ΅ scale=2 ΠΊΠ°Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.
            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

Π‘ ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ρ‚ΠΎΠ²Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΈ СкспортиранС Π² ONNX, Π½ΠΎ Π²Π΅Ρ‡Π΅ Π² 7 вСрсия TensorRT Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π΅ Ρ€Π΅ΡˆΠ΅Π½ ΠΈ Π½ΠΈ остава Π΄Π° Ρ‡Π°ΠΊΠ°ΠΌΠ΅ съвсСм ΠΌΠ°Π»ΠΊΠΎ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠšΠΎΠ³Π°Ρ‚ΠΎ Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ… Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ docker, ΠΈΠΌΠ°Ρ… съмнСния относно Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° производитСлност Π·Π° ΠΌΠΎΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ. Π’ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ ΠΌΠΎΠΈΡ‚Π΅ Π°Π³Ρ€Π΅Π³Π°Ρ‚ΠΈ сСга ΠΈΠΌΠ° доста голям ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, създадСн ΠΎΡ‚ няколко ΠΊΠ°ΠΌΠ΅Ρ€ΠΈ.

TensorRT 6.x.x.x β€” високоСфСктивСн инфСрСнс Π·Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° Π΄ΡŠΠ»Π±ΠΎΡ‡ΠΈΠ½Π½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ (ΠžΡ‚ΠΊΡ€ΠΈΡ‚ΠΈΠ΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΈ БСгмСнтация)

Π Π°Π·Π»ΠΈΡ‡Π½ΠΈ тСстовС Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Π³ΠΎΠ²ΠΎΡ€Π΅Ρ…Π° Π·Π° относитСлно голям overhead Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎΡΡ‚ ΠΈ запис Π½Π° VOLUME, плюс всичко нСизвСстСн ΠΈ ΡΡ‚Ρ€Π°ΡˆΠ΅Π½ GIL, Π° Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ сниманСто Π½Π° ΠΊΠ°Π΄ΡŠΡ€, Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΠΈ ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ ΠΏΠΎ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π½Π° ΠΊΠ°Π΄ΡŠΡ€Π° са Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌ hard real-time, Π·Π°ΠΊΡŠΡΠ½Π΅Π½ΠΈΡΡ‚Π° Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π·Π° ΠΌΠ΅Π½ са ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΈ.

Но всичко сС Π½Π°Ρ€Π΅Π΄ΠΈ =)

P.S. ΠžΡΡ‚Π°Π²Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ вашия любими train loop Π·Π° сСгмСнтация ΠΈ Π² продукция!

Благодарности

Благодаря Π½Π° общСството ods.ai, Π±Π΅Π· ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ Π΅ нСвъзмоТно! ΠžΠ³Ρ€ΠΎΠΌΠ½ΠΎ благодаря n01z3, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠ΅ Π½Π°ΠΊΠ°Ρ€Π° Π΄Π° сС Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΠΌ с DL, Π·Π° Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ Π±Π΅Π·Ρ†Π΅Π½Π½ΠΈ ΡΡŠΠ²Π΅Ρ‚ΠΈ ΠΈ ΠΈΠ·Π²ΡŠΠ½Ρ€Π΅Π΄Π΅Π½ ΠΏΡ€ΠΎΡ„Π΅ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·ΡŠΠΌ!

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² продукция!

TensorRT 6.x.x.x β€” високоСфСктивСн инфСрСнс Π·Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° Π΄ΡŠΠ»Π±ΠΎΡ‡ΠΈΠ½Π½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ (ΠžΡ‚ΠΊΡ€ΠΈΡ‚ΠΈΠ΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΈ БСгмСнтация) Aurorai, llc

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster