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 Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° срСда ΠΈ cuda 10.2 (ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈ Π΄ΠΎ Π΅Π΄ΠΈΠ½ nvidia Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€) ΠΎΡ‚ deb.

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

Π‘Π΅Π³Π° инсталирамС docker, Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΡ‚ΠΎ Π·Π° инсталация Π½Π° docker лСсно ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°ΠΌΠ΅Ρ€ΠΈ, Π΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ www.digitalocean.com/community/tutorials/docker-ubuntu-18-04-1-ru, вСрсия 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. Π‘Π»Π΅Π΄Π²Π° Π΄Π° ΠΎΡ‚Π²ΠΎΡ€ΠΈΠΌ

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

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

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

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

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

Interpreter -> /opt/conda/bin/python

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

Sync folder -> /workspace/retinanet

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

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

Deployment->Download

Π©Π΅ сС появи Π΅Π΄ΠΈΠ½ Ρ„Π°ΠΉΠ» ΠΈ Π΄Π²Π΅ ΠΏΠ°ΠΏΠΊΠΈ build, retinanet.egg-info ΠΈ _Π‘.so

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

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

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

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

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

markup_utils/supervisly_to_coco.py

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

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. Има ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° ΠΎΡ‚Ρ€Π΅ΠΆΠ΅Ρ‚Π΅ Π³ΠΎΠ»Π΅ΠΌΠΈ области Π½Π° дСтСкция, Π°ΠΊΠΎ Ρ‚ΡŠΡ€ΡΠΈΡ‚Π΅ ΠΌΠ°Π»ΠΊΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ изобраТСния, ΠΈΠΌΠ°Ρ‚Π΅ малък dataset =), ΠΈ Π½ΠΈΡ‰ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ, Π½ΠΎ Π·Π° Ρ‚ΠΎΠ²Π° Π΄Ρ€ΡƒΠ³ ΠΏΡŠΡ‚.

ΠžΠ±Ρ‰ΠΎ Π²Π·Π΅Ρ‚ΠΎ, Ρ†ΠΈΠΊΡŠΠ»ΡŠΡ‚ Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΡΡŠΡ‰ΠΎ Π΅ слаб, ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ Π½Π΅ запазвашС Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚ΠΎΠ²Π΅, използвашС някакъв уТасСн ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊ ΠΈ Ρ‚.Π½. Но сСга остава само Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ 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 ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для этого уровня ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ:
Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ                : True
ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ_ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ      : O0
Ρ‚ΠΈΠΏ_ΠΌΠΎΠ΄Π΅Π»ΠΈ_привСдСния    : torch.float32
Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ_torch   : False
ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ_batchnorm_fp32  : None
Π³Π»Π°Π²Π½Ρ‹Π΅_вСса            : False
ΠΌΠ°ΡΡˆΡ‚Π°Π±_ΠΏΠΎΡ‚Π΅Ρ€ΡŒ           : 1.0
ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ (Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ kwargs, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Ρ€Π°Π²Π½Ρ‹ None)...
ПослС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ:
Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ                : True
ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ_ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ      : O0
Ρ‚ΠΈΠΏ_ΠΌΠΎΠ΄Π΅Π»ΠΈ_привСдСния    : torch.float32
Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ_torch   : False
ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ_batchnorm_fp32  : None
Π³Π»Π°Π²Π½Ρ‹Π΅_вСса            : False
ΠΌΠ°ΡΡˆΡ‚Π°Π±_ΠΏΠΎΡ‚Π΅Ρ€ΡŒ           : 128.0
ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…...
    Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ: pytorch
    ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅_Ρ€Π°Π·ΠΌΠ΅Ρ€Π°: [1024, 1280], макс: 1280
    устройство: 4 gpu
    ΠΏΠ°ΠΊΠ΅Ρ‚: 4, Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ: смСшанная
ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 20000 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ...
[    1/20000] фокусная потСря: 0.95619, потСря ΠΏΠΎ боксу: 0.51584, 4.042с/4-ΠΏΠ°ΠΊΠ΅Ρ‚ (Π²ΠΏΠ΅Ρ€Π΅Π΄: 0.698с, Π½Π°Π·Π°Π΄: 0.459с), 1.0 ΠΈΠ·ΠΎΠ±Ρ€./с, lr: 0.0001
[   12/20000] фокусная потСря: 0.76191, потСря ΠΏΠΎ боксу: 0.31794, 0.187с/4-ΠΏΠ°ΠΊΠ΅Ρ‚ (Π²ΠΏΠ΅Ρ€Π΅Π΄: 0.055с, Π½Π°Π·Π°Π΄: 0.133с), 21.4 ΠΈΠ·ΠΎΠ±Ρ€./с, lr: 0.0001
[   24/20000] фокусная потСря: 0.65036, потСря ΠΏΠΎ боксу: 0.30269, 0.173с/4-ΠΏΠ°ΠΊΠ΅Ρ‚ (Π²ΠΏΠ΅Ρ€Π΅Π΄: 0.045с, Π½Π°Π·Π°Π΄: 0.128с), 23.1 ΠΈΠ·ΠΎΠ±Ρ€./с, lr: 0.0001
[   36/20000] фокусная потСря: 0.46425, потСря ΠΏΠΎ боксу: 0.23141, 0.178с/4-ΠΏΠ°ΠΊΠ΅Ρ‚ (Π²ΠΏΠ΅Ρ€Π΅Π΄: 0.047с, Π½Π°Π·Π°Π΄: 0.131с), 22.4 ΠΈΠ·ΠΎΠ±Ρ€./с, lr: 0.0001
[   48/20000] фокусная потСря: 0.45115, потСря ΠΏΠΎ боксу: 0.23505, 0.180с/4-ΠΏΠ°ΠΊΠ΅Ρ‚ (Π²ΠΏΠ΅Ρ€Π΅Π΄: 0.047с, Π½Π°Π·Π°Π΄: 0.133с), 22.2 ΠΈΠ·ΠΎΠ±Ρ€./с, lr: 0.0001
[   59/20000] фокусная потСря: 0.38958, потСря ΠΏΠΎ боксу: 0.25373, 0.184с/4-ΠΏΠ°ΠΊΠ΅Ρ‚ (Π²ΠΏΠ΅Ρ€Π΅Π΄: 0.049с, Π½Π°Π·Π°Π΄: 0.134с), 21.8 ΠΈΠ·ΠΎΠ±Ρ€./с, lr: 0.0001
[   71/20000] фокусная потСря: 0.37733, потСря ΠΏΠΎ боксу: 0.23988, 0.174с/4-ΠΏΠ°ΠΊΠ΅Ρ‚ (Π²ΠΏΠ΅Ρ€Π΅Π΄: 0.049с, Π½Π°Π·Π°Π΄: 0.125с), 22.9 ΠΈΠ·ΠΎΠ±Ρ€./с, lr: 0.0001
[   83/20000] фокусная потСря: 0.39514, потСря ΠΏΠΎ боксу: 0.23878, 0.181с/4-ΠΏΠ°ΠΊΠ΅Ρ‚ (Π²ΠΏΠ΅Ρ€Π΅Π΄: 0.048с, Π½Π°Π·Π°Π΄: 0.133с), 22.1 ΠΈΠ·ΠΎΠ±Ρ€./с, lr: 0.0001
[   94/20000] фокусная потСря: 0.39947, потСря ΠΏΠΎ боксу: 0.23817, 0.185с/4-ΠΏΠ°ΠΊΠ΅Ρ‚ (Π²ΠΏΠ΅Ρ€Π΅Π΄: 0.050с, Π½Π°Π·Π°Π΄: 0.134с), 21.6 ΠΈΠ·ΠΎΠ±Ρ€./с, lr: 0.0001
[  105/20000] фокусная потСря: 0.37343, потСря ΠΏΠΎ боксу: 0.20238, 0.182с/4-ΠΏΠ°ΠΊΠ΅Ρ‚ (Π²ΠΏΠ΅Ρ€Π΅Π΄: 0.048с, Π½Π°Π·Π°Π΄: 0.134с), 22.0 ΠΈΠ·ΠΎΠ±Ρ€./с, lr: 0.0001
[  116/20000] фокусная потСря: 0.19689, потСря ΠΏΠΎ боксу: 0.17371, 0.183с/4-ΠΏΠ°ΠΊΠ΅Ρ‚ (Π²ΠΏΠ΅Ρ€Π΅Π΄: 0.050с, Π½Π°Π·Π°Π΄: 0.132с), 21.8 ΠΈΠ·ΠΎΠ±Ρ€./с, lr: 0.0001
[  128/20000] фокусная потСря: 0.20368, потСря ΠΏΠΎ боксу: 0.16538, 0.178с/4-ΠΏΠ°ΠΊΠ΅Ρ‚ (Π²ΠΏΠ΅Ρ€Π΅Π΄: 0.046с, Π½Π°Π·Π°Π΄: 0.131с), 22.5 ΠΈΠ·ΠΎΠ±Ρ€./с, lr: 0.0001
[  140/20000] фокусная потСря: 0.22763, потСря ΠΏΠΎ боксу: 0.15772, 0.176с/4-ΠΏΠ°ΠΊΠ΅Ρ‚ (Π²ΠΏΠ΅Ρ€Π΅Π΄: 0.050с, Π½Π°Π·Π°Π΄: 0.126с), 22.7 ΠΈΠ·ΠΎΠ±Ρ€./с, lr: 0.0001
[  148/20000] фокусная потСря: 0.21997, потСря ΠΏΠΎ боксу: 0.18400, 0.585с/4-ΠΏΠ°ΠΊΠ΅Ρ‚ (Π²ΠΏΠ΅Ρ€Π΅Π΄: 0.047с, Π½Π°Π·Π°Π΄: 0.144с), 6.8 ΠΈΠ·ΠΎΠ±Ρ€./с, 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-like ΠΎΡ‚ ONNX Π² TensorRT Π΅ нСобходимостта Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ фиксиран Ρ€Π°Π·ΠΌΠ΅Ρ€ Upsample ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ConvTranspose2D:

import torch.onnx.symbolic_opset9 as onnx_symbolic
        def upsample_nearest2d(g, input, output_size):
            # Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΏΠ°Ρ€ΡΠ΅Ρ€ΡŠΡ‚ ONNX Π½Π° TRT 5.1/6.0 Π½Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° всички ONNX ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ,
            # Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π΅ Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ upsampling
            # Π’ΡƒΠΊ смС Ρ…Π°Ρ€Π΄ΠΊΠΎΠ΄ΠΈΡ€Π°Π»ΠΈ 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. ΠžΡΡ‚Π°Π²Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ любимия си Ρ‚Ρ€Π΅ΠΉΠ½ Π»ΡƒΠΏ Π·Π° сСгмСнтация ΠΈ Π² продукция!

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

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

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

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

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

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