ΠΈΠ½ΡΠ΅ΡΠ΅Π½Ρ Π² ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠΌ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠΈ ΡΡΠΎ
What Is Machine Learning Inference?
Machine learning (ML) inference is the process of running live data points into a machine learning algorithm (or βML modelβ) to calculate an output such as a single numerical score. This process is also referred to as βoperationalizing an ML modelβ or βputting an ML model into production.β When an ML model is running in production, it is often then described as artificial intelligence (AI) since it is performing functions similar to human thinking and analysis. Machine learning inference basically entails deploying a software application into a production environment, as the ML model is typically just software code that implements a mathematical algorithm. That algorithm makes calculations based on the characteristics of the data, known as βfeaturesβ in the ML vernacular.
An ML lifecycle can be broken up into two main, distinct parts. The first is the training phase, in which an ML model is created or βtrainedβ by running a specified subset of data into the model. ML inference is the second phase, in which the model is put into action on live data to produce actionable output. The data processing by the ML model is often referred to as βscoring,β so one can say that the ML model scores the data, and the output is a score.
ML inference is generally deployed by DevOps engineers or data engineers. Sometimes the data scientists, who are responsible for training the models, are asked to own the ML inference process. This latter situation often causes significant obstacles in getting to the ML inference stage, since data scientists are not necessarily skilled at deploying systems. Successful ML deployments often are the result of tight coordination between different teams, and newer software technologies are also often deployed to try to simplify the process. An emerging discipline known as βMLOpsβ is starting to put more structure and resources around getting ML models into production and maintaining those models when changes are needed.
How Does Machine Learning Inference Work?
To deploy a machine learning inference environment, you need three main components in addition to the model:
The data sources are typically a system that captures the live data from the mechanism that generates the data. For example, a data source might be an Apache Kafka cluster that stores data created by an Internet of Things (IoT) device, a web application log file, or a point-of-sale (POS) machine. Or a data source might simply be a web application that collects user clicks and sends data to the system that hosts the ML model.
The host system for the ML model accepts data from the data sources and inputs the data into the ML model. It is the host system that provides the infrastructure to turn the code in the ML model into a fully operational application. After an output is generated from the ML model, the host system then sends that output to the data destinations. The host system can be, for example, a web application that accepts data input via a REST interface, or a stream processing application that takes an incoming feed of data from Apache Kafka to process many data points per second.
The data destinations are where the host system should deliver the output score from the ML model. A destination can be any type of data repository like Apache Kafka or a database, and from there, downstream applications take further action on the scores. For example, if the ML model calculates a fraud score on purchase data, then the applications associated with the data destinations might send an βapproveβ or βdeclineβ message back to the purchase site.
Challenges of Machine Learning Inference
As mentioned earlier, the work in ML inference can sometimes be misallocated to the data scientist. If given only a low-level set of tools for ML inference, the data scientist may not be successful in the deployment.
Additionally, DevOps and data engineers are sometimes not able to help with deployment, often due to conflicting priorities or a lack of understanding of whatβs required for ML inference. In many cases, the ML model is written in a language like Python, which is popular among data scientists, but the IT team is more well-versed in a language like Java. This means that engineers must take the Python code and translate it to Java to run it within their infrastructure. In addition, the deployment of ML models requires some extra coding to map the input data into a format that the ML model can accept, and this extra work adds to the engineersβ burden when deploying the ML model.
Also, the ML lifecycle typically requires experimentation and periodic updates to the ML models. If deploying the ML model is difficult in the first place, then updating models will be almost as difficult. The whole maintenance effort can be difficult, as there are business continuity and security issues to address.
Another challenge is attaining suitable performance for the workload. REST-based systems that perform the ML inference often suffer from low throughput and high latency. This might be suitable for some environments, but modern deployments that deal with IoT and online transactions are facing huge loads that can overwhelm these simple REST-based deployments. And the system needs to be able to scale to not only handle growing workloads but to also handle temporary load spikes while retaining consistent responsiveness.
When pursuing a machine learning strategy, technology choice is very important to address these challenges. Hazelcast is an example of a software vendor that provides in-memory and streaming technologies that are well-suited for deploying ML inference. Open source editions are available to try out the technology with no commitment.
ΠΡΠ΅Π½ΠΊΠ° ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ° Π½Π΅ΠΉΡΠΎΠ½Π½ΡΡ ΡΠ΅ΡΠ΅ΠΉ
Π Π°Π·Π²ΠΈΡΠΈΠ΅ ΡΡΠ½ΠΊΠ° Π½Π΅ΠΉΡΠΎΠ½Π½ΡΡ ΡΠ΅ΡΠ΅ΠΉ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ ΠΏΠΎΠ΄ ΡΠΎΠ±ΠΎΠΉ ΡΠ΄Π΅ΡΠ΅Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ ΠΆΠ΅Π»Π΅Π·Π° ΠΏΡΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠΌ ΡΠΎΡΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠ±ΡΡΠ½ΠΎ Π½Π΅ΠΉΡΠΎΠ½Π½Π°Ρ ΡΠ΅ΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΡΡΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΡ ΡΡΠ°ΠΏΠ°: ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅, Π΄Π΅ΠΏΠ»ΠΎΠΉ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅Π½Ρ. ΠΡΠ»ΠΈ ΠΏΡΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° Π² ΡΠ΅ΡΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅Π½Ρ β Π½Π΅ΡΠ°ΡΠΊΡΡΡΠ°Ρ ΡΠ΅ΠΌΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠΎΠΈΡ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ.
ΠΠ½ΡΠ΅ΡΠ΅Π½Ρ
ΠΠ½ΡΠ΅ΡΠ΅Π½ΡΠΎΠΌ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ° ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ Π½Π° ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅. ΠΠ½ΡΠ΅ΡΠ΅Π½Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΡΠ°Π·Π½ΡΡ Π½Π΅ΠΉΡΠΎΠ½Π½ΡΡ ΡΠ΅ΡΠ΅ΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ β Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΌΠ°ΡΠΎΠΊ, ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ², Π»ΠΈΡ, Π³ΠΎΠ»ΠΎΡΠΎΠ², Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ. Π’ΠΎ Π΅ΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° ΡΠΆΠ΅ Π³ΠΎΡΠΎΠ²Π° ΠΊ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ.
ΠΠ»Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ CPU, Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ GPU, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ.
ΠΠ½ΡΠ΅ΡΠ΅Π½Ρ Π½Π° CPU
Π ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ CPU, ΠΈΠ½ΡΠ΅ΡΠ΅Π½Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΄ΡΠ°Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΡΠΈΡΠ»ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π²Π½ΠΎ ΡΠΈΡΠ»Ρ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΄Π΅Ρ ΠΈΠ»ΠΈ, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Hyper-threading, ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΎ Π²Π΄Π²ΠΎΠ΅. Π Π΅ΡΠ΅Π½ΠΈΡ Π½Π° ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ΄Π΅ΡΠ½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄ΠΎΡΠΎΠ³ΠΈ, Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ CPU Π½Π° Π±ΠΎΠ»ΡΡΠΈΡ (Π³Π»ΡΠ±ΠΎΠΊΠΈΡ ) Π½Π΅ΠΉΡΠΎΡΠ΅ΡΡΡ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΠ·-Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ° ΠΊΡΡΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ Ρ ΠΠΠ£, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ ΡΠ°ΠΌΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΎΠΉ β Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ° ΡΠ΅ΡΠ°ΡΡΡΡ ΠΏΡΠΎΡΡΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΡΡΡΡ Π½Π° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΄Π΅Ρ CPU.
ΠΠ½ΡΠ΅ΡΠ΅Π½Ρ Π½Π° GPU
ΠΡΠ΅Π½ΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ°
ΠΠ½ΡΠ΅ΡΠ΅Π½Ρ β ΠΏΡΠΎΡΠ΅ΡΡ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΡΠΉ, Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠΎΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΡΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌΡ ΡΠΎΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ². Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ΅Π°Π»ΡΠ½ΠΎ ΡΠΏΠ΅ΡΠ΅ΡΡΡΡ Π² ΠΏΠΎΡΠΎΠ»ΠΎΠΊ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ ΠΊΠ°Π½Π°Π»Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ . ΠΠ· ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌΠΈ Π²ΠΈΠ΄ΡΡΡΡ Π΄Π²Π° Π²ΡΡ ΠΎΠ΄Π° β ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΊ ΡΠ΅ΡΡΠ΅Π·Π½ΡΠΌ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΌΠΎΡΠ½ΠΎΡΡΡΠΌ, Π΅ΡΠ»ΠΈ ΠΊΠ°Π½Π°Π» ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ, ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΅Π³ΠΎ Π½Π° ΠΌΠ΅ΡΡΠ΅, ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΠΎ ΠΈ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΈ Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΡΠ΅Π½ΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΡΡΡΠΎΠΉΡΡΠ², ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ΅Π½Ρ. ΠΠ΅Π΄Ρ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ΅Π½Ρ ΡΡΡΠ°Π½Π½ΡΠΌ, Π΅ΡΠ»ΠΈ Π½Π΅ΠΉΡΠΎΡΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½ΠΎ Π΄Π»Ρ Π΅Π΅ ΡΠ°Π±ΠΎΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΠΎΠΈΠΌΠΎΡΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ²ΡΡ Π°ΠΌΠ΅ΡΠΈΠΊΠ°Π½ΡΠΊΠΈΡ ΠΏΡΠ΅Π·ΠΈΠ΄Π΅Π½ΡΠΎΠ².
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ² Π²ΡΠ΅Π³Π΄Π° Π½Π°ΡΠ΅Π»Π΅Π½Ρ Π½Π° ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ΄Π°ΠΆ. ΠΠ΅ΡΠΎΠ΄ΠΈΠΊΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ, Π±ΡΠ²Π°ΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ²ΠΎΠ΅ΠΎΠ±ΡΠ°Π·Π½ΡΠΌΠΈ, ΠΊΠ°ΠΊ ΠΈ Π²ΡΠ²ΠΎΠ΄Ρ ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π°ΡΡΡΡ Π½Π° Π±Π°Π·Π΅ ΡΠ°ΠΊΠΈΡ ΡΠ΅ΡΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΡΠ°Π»ΠΈΡΡ ΡΡΠ°Π²Π½ΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΄Π΅Ρ ΡΠ°Π·Π½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ², Π·Π°ΡΠ²Π»ΡΡ, ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅ΡΠ°ΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Ρ ΠΎΡΡ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Π΄Π΅ΡΡΡΠΎΠΊ Intel 80486 Π΄Π°ΠΆΠ΅ Ρ ΠΎΠ΄Π½ΠΈΠΌ Intel i5 ΠΌΡΠ³ΠΊΠΎ Π³ΠΎΠ²ΠΎΡΡ Π½Π΅ΡΡΠΈΡΠ½ΠΎ. ΠΡΡΠ°Π»ΠΈΡΡ ΡΡΠ°Π²Π½ΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², Π³ΠΎΡΠ΄ΠΎ Π·Π°ΡΠ²Π»ΡΡ, ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ 100 ΠΊΠ°Π½Π°Π»ΠΎΠ², ΡΠ°ΠΊΡΠΈΡΠ½ΠΎ Π·Π°ΠΌΠ°Π»ΡΠΈΠ²Π°Ρ, ΡΡΠΎ ΡΡΠΈ ΠΏΠΎΡΠΎΠΊΠΈ β 240p. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ·ΠΌΠ΅ΡΡΠ» Π² ΡΠ²ΠΎΠΈΡ ΠΏΠΎΠΏΡΠ³Π°ΡΡ , ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΡΠΈΡ ΠΏΠΎΠΏΡΠ³Π°Π΅Π² c ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ Π±ΡΠ» Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ.
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π΄Π»Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°ΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠΈ Π½Π΅ΠΏΡΠΈΠ³ΠΎΠ΄Π½Ρ. ΠΡ β ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Combox Technology, ΠΊΠ°ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ, Π½ΡΠΆΠ΄Π°Π»ΠΈΡΡ Π² ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ»ΠΈ Π±Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΡ ΠΏΠΎΠΏΡΡΠ°Π»ΠΈΡΡ ΠΏΡΠΈΠ²ΡΠ·Π°ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΊ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ β ΡΠΎΠΉ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΡΠΌΠΎ ΡΠ²ΡΠ·Π°Π½Π° Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ. ΠΡΠ»ΠΎ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΎ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠ΅ΡΠ΅ΠΉ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΉ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π²ΠΈΠ΄Π°Ρ ΡΡΡΡΠΎΠΉΡΡΠ² (ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΡ) Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΎΠΉ ΠΊ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ Π½ΠΈΠΌ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅. ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π»ΠΈ β ΡΡΠΎ ΡΠ΅Π½Π° Π·Π° FPS (frame per second) ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ (relative FPS).
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈΡΡ ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅. ΠΠΌΠ΅Π½Π½ΠΎ ΠΈΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π½Π°ΡΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ² Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ°. ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ° ΠΏΡΠΈ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ FPS ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΏΠ»Π°ΡΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ (SBC) Intel NUC8i5BEK, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π° Π½ΠΈΡ Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅ΡΠ΅ ΡΠ°ΡΠΊΡΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π» ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅Π½Π° Π½Π° CPU ΠΈ GPU. ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π² Π½Π°ΡΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ SBC NUC Server. ΠΠ»Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° OutdoorBox NUC ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Intel NUC4i5MYHE.
ΠΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΠΈΡΡ ΠΊΠ°ΠΊ ΡΠ°Π· Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ Π±ΠΎΠ»Ρ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΠ°ΡΡΠΈ β ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΡ ΠΎΡΠ΅Π½ΠΊΠΈ.
Π§ΡΠΎ ΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅?
OutdoorBox NUC β Π²ΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ° Π½Π° ΠΊΡΠ°Ρ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΡΡΠ°ΡΠΈΠΊ, ΡΠ΅ΡΠ°ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΏΡΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ ΠΈ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ. Π£ΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π²ΠΎ Π²ΡΠ΅ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ IP66, ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π½ΠΈΠ·ΠΊΠΈΠΌ ΡΠ½Π΅ΡΠ³ΠΎΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΠΌ (30ΠΡ) ΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½ΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ ΠΏΡΠΈ Π½ΠΈΠ·ΠΊΠΎΠΉ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ. ΠΠ΄Π½ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ 10 ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ FullHD 15fps.
ΠΠ»Ρ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° ΠΏΡΠΈ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡΡ Π² Π²ΡΡΠΎΠΊΠΈΡ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠΎΡΠ½ΠΎΡΡΡΡ ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ SBC NUC Server, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΡΠΏΡΡΠ΅ Π΄ΠΎ 8 ΡΡΡΡΠΎΠΉΡΡΠ² NUC8i5BEK ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄ΠΎ 80 ΠΏΠΎΡΠΎΠΊΠΎΠ² FullHD 15fps.
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΠ°ΠΊΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π½Π΅ ΠΈΠ·-Π·Π° ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ° ΠΊ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°ΠΌ. ΠΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ, ΠΎΠ±ΡΡΠ°Π΅ΠΌ ΠΈ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠΈΡΡΠ΅ΠΌ Π½Π΅ΠΉΡΠΎΠ½Π½ΡΠ΅ ΡΠ΅ΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠ΅Π»Π΅ΠΉ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΌΠ°ΡΠΎΠΊ ΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ², Π½ΠΎΠΌΠ΅ΡΠ½ΡΡ Π·Π½Π°ΠΊΠΎΠ². ΠΠ»Ρ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π½Π΅ΠΉΡΠΎΠ½Π½ΡΡ ΡΠ΅ΡΡ Π½Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ YOLO (You Only Look Once), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° Π½Π° Π΅Π΅ ΡΠΏΡΠΎΡΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ DarkNet19, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ 19 ΡΠ»ΠΎΠ΅Π², Π²Π·Π°ΠΌΠ΅Π½ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΡ 25, ΠΈ Π½Π΅ΠΉΡΠΎΠ½Π½ΡΡ ΡΠ΅ΡΡ Π½Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ UNET Π΄Π»Ρ Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠ΅ EDGE Ρ MMR (Make and Model Recognition) ΠΈ LPR (Licence Plate Recognition), ΠΊΠΎΡΠΎΡΡΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΠΌΠΈΡΡ β Π² Π½Π°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠΎΠ»ΠΈΡΠΈΠΈ ΠΠΎΠ»ΡΠΌΠ±ΠΈΠΈ, ΠΠ΅ΠΊΡΠΈΠΊΠΈ, ΠΠ΅Π»ΠΎΡΡΡΡΠΈΠΈ, ΠΡΡΠ·ΠΈΠΈ, ΠΠΎΠ»Π³Π°ΡΠΈΠΈ, ΡΠ°ΠΌΠΎΠΆΠ΅Π½Π½ΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°Ρ Π£ΠΊΡΠ°ΠΈΠ½Ρ, ΠΠ·Π΅ΡΠ±Π°ΠΉΠ΄ΠΆΠ°Π½Π°, ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Π³ΠΎΡΠΎΠ΄ΡΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π΅ΠΎΠ½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ ΠΡΠ³Π΅Π½ΡΠΈΠ½Ρ, ΠΠΌΠ°Π½Π°, ΠΠ°Π·Π°Ρ ΡΡΠ°Π½Π°. ΠΡΡΠ΅ΠΊΡ ΠΎΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ SBC NUC Server Π±ΡΠ» ΠΎΡΠ΅Π½Ρ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΈ ΠΎΡΡΠ·Π°Π΅ΠΌΡΠΌ β Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ GPU-ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² Π½Π° Π±Π°Π·Π΅ Tesla T4, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ°Π½Π΅Π΅, ΡΡΠΎΠΈΠΌΠΎΡΡΡΡ 1 200 000 ΡΡΠ±Π»Π΅ΠΉ, Π½Π°ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π΅ΡΠ΅Π²Π»Π΅ Π½Π° 500 000 ΡΡΠ±Π»Π΅ΠΉ, ΡΠ½Π΅ΡΠ³ΠΎΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ Π²ΠΌΠ΅ΡΡΠΎ 2 ΠΊΠΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΡΠ΅Π³ΠΎ 500 ΠΡ. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡΡ ΠΌΠ΅ΡΡΠΎ Π² ΡΡΠΎΠΉΠΊΠ°Ρ β GPU-ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΡΠΎΡΠΌΠ°Ρ 2U-4U, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ 1U Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅. Π§ΡΠΎ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ β ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎΠΉ Π±Π°Π·Π΅, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π² ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΏΠΎΠ΄ Π΄ΡΡΠ³ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ, ΠΊΡΠΎΠΌΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ° (ΠΊΠ»Π°ΡΡΠ΅ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, web-ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΠΏΡ.)
Π ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΡΡ ΠΎΡΠ΅Π½ΠΎΠΊ β ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΈΠ·ΠΌΠ΅ΡΡΠ΅ΡΡΡ Π² Π΄Π΅Π½ΡΠ³Π°Ρ β ΡΠ°ΠΌΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠΏΡΠ³Π°ΡΡ .
TensorRT 6.x.x.x β Π²ΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅Π½Ρ Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π³Π»ΡΠ±ΠΎΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ (Object Detection ΠΈ Segmentation)
ΠΠΎΠ»ΡΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π·!
ΠΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅Ρ! ΠΠΎΡΠΎΠ³ΠΈΠ΅ Π΄ΡΡΠ·ΡΡ, Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ Ρ ΠΎΡΡ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΠ²ΠΎΠΈΠΌ ΠΎΠΏΡΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ TensorRT, RetinaNet Π½Π° Π±Π°Π·Π΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ github.com/aidonchuk/retinanet-examples (ΡΡΠΎ ΡΠΎΡΠΊ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΠΏΡ ΠΎΡ nvidia, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π½Π°ΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² ΠΊΡΠ°ΡΡΠ°ΠΉΡΠΈΠ΅ ΡΡΠΎΠΊΠΈ). ΠΡΠΎΠ»ΠΈΡΡΡΠ²Π°Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΊΠ°Π½Π°Π»Π°Ρ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° ods.ai, Ρ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ Ρ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌΠΈ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ TensorRT, ΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΡΠ΅ΡΠΈΠ» Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ TensorRT, RetinaNet, Unet ΠΈ docker.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ
ΠΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π·Π°Π΄Π°ΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠΈΡΡ Π΄Π°ΡΠ°ΡΠ΅Ρ, ΠΎΠ±ΡΡΠΈΡΡ Π½Π° Π½ΡΠΌ ΡΠ΅ΡΡ RetinaNet/Unet Π½Π° Pytorch1.3+, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π²Π΅ΡΠ° Π² ONNX, Π΄Π°Π»Π΅Π΅ ΡΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ Π² engine TensorRT ΠΈ Π²ΡΡ ΡΡΠΎ Π΄Π΅Π»ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π² docker, ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π° Ubuntu 18 ΠΈ ΠΊΡΠ°ΠΉΠ½Π΅ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π° ARM(Jetson)* Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΡ ΡΡΡΠ½ΠΎΠ΅ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ. Π ΠΈΡΠΎΠ³Π΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π³ΠΎΡΠΎΠ²ΡΠΉ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΡΠΊΡΠΏΠΎΡΡΡ ΠΈ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ RetinaNet/Unet, Π½ΠΎ ΠΈ ΠΊ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΠΎ Π²ΡΠ΅ΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΎΠ±Π²ΡΠ·ΠΊΠΎΠΉ.
ΠΡΠ°ΠΏ 1. ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ
ΠΠ΄Π΅ΡΡ Π²Π°ΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΡΡΠ» ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ Ρ ΠΎΡΡ ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π½Π° desktop ΠΌΠ°ΡΠΈΠ½Π΅, ΠΊΠ°ΠΊ Π²ΠΏΡΠΎΡΠ΅ΠΌ ΠΈ Π½Π° 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-ru, ΡΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Π° 19+ Π²Π΅ΡΡΠΈΡ β ΡΡΠ°Π²ΠΈΠΌ Π΅Ρ. ΠΡ ΠΈ Π½Π΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ docker Π±Π΅Π· sudo, ΡΠ°ΠΊ Π±ΡΠ΄Π΅Ρ ΡΠ΄ΠΎΠ±Π½Π΅Π΅. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²ΡΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ, Π΄Π΅Π»Π°Π΅ΠΌ Π²ΠΎΡ ΡΠ°ΠΊ:
Π ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ Π½Π΅ Π·Π°Π³Π»ΡΠ΄ΡΠ²Π°ΡΡ Π² ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ github.com/NVIDIA/nvidia-docker.
ΠΡΡΠ°Π»ΠΎΡΡ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΡΡΡ-ΡΡΡΡ, Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ docker Ρ nvidia-ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² NGC Cloud ΠΈ Π·Π°Π»ΠΎΠ³ΠΈΠ½ΠΈΡΡΡΡ. ΠΠ΄ΡΠΌ ΡΡΠ΄Π° ngc.nvidia.com, ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΠΌΡΡ ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΏΠΎΠΏΠ°Π΄Π°Π΅ΠΌ Π²Π½ΡΡΡΡ NGC Cloud, ΠΆΠΌΡΠΌ SETUP Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ³Π»Ρ ΡΠΊΡΠ°Π½Π° ΠΈΠ»ΠΈ ΠΏΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ ΡΡΠΎΠΉ ΡΡΡΠ»ΠΊΠ΅ ngc.nvidia.com/setup/api-key. ΠΠΌΡΠΌ Β«ΡΠ³Π΅Π½Π΅ΡΠΈΡΡ ΠΊΠ»ΡΡΒ». ΠΠ³ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ, ΠΈΠ½Π°ΡΠ΅ ΠΏΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π΅Π³ΠΎ ΠΏΡΠΈΠ΄ΡΡΡΡ Π³Π΅Π½Π΅ΡΠΈΡΡ Π·Π°Π½ΠΎΠ²ΠΎ ΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Ρ Π½Π° Π½ΠΎΠ²ΠΎΠΉ ΡΠ°ΡΠΊΠ΅, ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ.
Username ΠΏΡΠΎΡΡΠΎ ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ. ΠΡ Π²ΠΎΡ, ΡΡΠΈΡΠ°ΠΉ, ΡΡΠ΅Π΄Π° ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΠ°!
ΠΡΠ°ΠΏ 2. Π‘Π±ΠΎΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° docker
ΠΠ° Π²ΡΠΎΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ Π½Π°ΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ ΠΌΡ ΡΠΎΠ±Π΅ΡΠ΅ΠΌ docker ΠΈ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠΌΡΡ Ρ Π΅Π³ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΎΡΡΡΠΌΠΈ.
ΠΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ Π² ΠΊΠΎΡΠ½Π΅Π²ΡΡ ΠΏΠ°ΠΏΠΊΡ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΡ retina-examples ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ
ΠΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌ docker ΠΏΡΠΎΠ±ΡΠ°ΡΡΠ²Π°Ρ Π² Π½Π΅Π³ΠΎ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ·Π΅ΡΠ° β ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΡΡΠΎ-ΡΠΎ ΠΏΠΈΡΠ°ΡΡ Π½Π° ΡΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ VOLUME Ρ ΠΏΡΠ°Π²Π°ΠΌΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ·Π΅ΡΠ°, ΠΈΠ½Π°ΡΠ΅ Π±ΡΠ΄Π΅Ρ root ΠΈ Π±ΠΎΠ»Ρ.
ΠΠΎΠΊΠ° ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ docker, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΈΠ·ΡΡΠΈΠΌ Dockerfile:
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΡΠ΅ΠΊΡΡΠ°, ΠΌΡ Π±Π΅ΡΠ΅ΠΌ Π²ΡΠ΅ Π½Π°ΡΠΈ Π»ΡΠ±ΠΈΠΌΡΠ΅ Π»ΠΈΠ±Ρ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌ retinanet, Π½Π°ΠΊΠΈΠ΄ΡΠ²Π°Π΅ΠΌ Π±Π°Π·ΠΎΠ²ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΡΠ°Π±ΠΎΡΡ Ρ Ubuntu ΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ ΡΠ΅ΡΠ²Π΅Ρ openssh. ΠΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ ΠΈΠ΄Π΅Ρ ΠΊΠ°ΠΊ ΡΠ°Π· Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π·Π° nvidia, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΡ Π΄Π΅Π»Π°Π»ΠΈ Π»ΠΎΠ³ΠΈΠ½ Π² NGC Cloud ΠΈ ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Pytorch1.3, TensorRT6.x.x.x ΠΈ Π΅ΡΠ΅ ΠΊΡΡΡ Π»ΠΈΠ±, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ cpp ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ Π½Π°ΡΠ΅Π³ΠΎ Π΄Π΅ΡΠ΅ΠΊΡΠΎΡΠ°.
ΠΡΠ°ΠΏ 3. ΠΠ°ΠΏΡΡΠΊ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° docker
ΠΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌΡ ΠΊΠ΅ΠΉΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° Π·Π°ΠΏΡΡΡΠΈΠΌ nvidia docker. ΠΡΠΏΠΎΠ»Π½ΠΈΠΌ:
Π’Π΅ΠΏΠ΅ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΠΎ ssh @localhost. ΠΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ°, ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡ Π² PyCharm. ΠΠ°Π»Π΅Π΅ ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ
Π¨Π°Π³ 1
Π¨Π°Π³ 2
Π¨Π°Π³ 3
ΠΡΠ±ΠΈΡΠ°Π΅ΠΌ Π²ΡΡ ΠΊΠ°ΠΊ Π½Π° ΡΠΊΡΠΈΠ½ΡΠΎΡΠ°Ρ ,
β ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ln Π½Π° Python3.6 ΠΈ
ΠΠΌΡΠΌ ΡΠΈΠ½ΠΈΡ, ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈ Π²ΡΡ, ΡΡΠ΅Π΄Π° Π³ΠΎΡΠΎΠ²Π° ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ!
ΠΠΠΠΠ. Π‘ΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡΡΠ½ΡΡΡ ΠΈΠ· docker ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ Retinanet. Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠΌ ΠΌΠ΅Π½Ρ Π² ΠΊΠΎΡΠ½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π²ΡΠ±Π΅ΡΠ΅ΠΌ ΠΏΡΠ½ΠΊΡ
ΠΠΎΡΠ²ΡΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°ΠΉΠ» ΠΈ Π΄Π²Π΅ ΠΏΠ°ΠΏΠΊΠΈ build, retinanet.egg-info ΠΈ _Π‘.so
ΠΡΠ»ΠΈ Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ, ΡΠΎ ΡΡΠ΅Π΄Π° Π²ΠΈΠ΄ΠΈΡ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ ΠΌΡ Π³ΠΎΡΠΎΠ²Ρ, ΠΊ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ RetinaNet.
ΠΡΠ°ΠΏ 4. Π Π°Π·ΠΌΠ΅ΡΠ°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΎΠ±ΡΡΠ°Π΅ΠΌ Π΄Π΅ΡΠ΅ΠΊΡΠΎΡ
ΠΠ»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ Ρ, Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ supervise.ly β ΠΏΡΠΈΡΡΠ½Π°Ρ ΠΈ ΡΠ΄ΠΎΠ±Π½Π°Ρ ΡΡΠ»Π·Π°, Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΠ΅ ΠΊΡΡΡ ΠΊΠΎΡΡΠΊΠΎΠ² ΠΏΠΎΡΠΈΠΊΡΠΈΠ»ΠΈ ΠΈ ΠΎΠ½Π° ΡΡΠ°Π»Π° ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ Π»ΡΡΡΠ΅ ΡΠ΅Π±Ρ Π²Π΅ΡΡΠΈ.
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ ΡΡΠΎ Π²Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΈΠ»ΠΈ Π΄Π°ΡΠ°ΡΠ΅Ρ ΠΈ ΡΠΊΠ°ΡΠ°Π»ΠΈ Π΅Π³ΠΎ, Π½ΠΎ ΡΡΠ°Π·Ρ Π·Π°ΡΡΠ½ΡΡΡ Π΅Π³ΠΎ Π² Π½Π°Ρ RetinaNet Π½Π΅ Π²ΡΠΉΠ΄Π΅Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ ΠΈ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² COCO. Π’ΡΠ»Π·Π° Π΄Π»Ρ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Category Π² ΡΠΊΡΠΈΠΏΡΠ΅ ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΡΠ°Π²ΠΈΡΡ ΡΠ²ΠΎΠΈ (ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ background Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½Π΅ Π½Π°Π΄ΠΎ)
ΠΠ²ΡΠΎΡΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΏΠΎΡΠ΅ΠΌΡ-ΡΠΎ ΡΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ Π½ΠΈΡΠ΅Π³ΠΎ ΠΊΡΠΎΠΌΠ΅ COCO/VOC Π²Ρ ΠΎΠ±ΡΡΠ°ΡΡ Π΄Π»Ρ Π΄Π΅ΡΠ΅ΠΊΡΠΈΠΈ Π½Π΅ Π±ΡΠ΄Π΅ΡΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ°ΠΉΠ»
ΠΠΎΠ±Π°Π²ΠΈΠ² ΡΡΡΠ΄Π° Π»ΡΠ±ΠΈΠΌΡΠ΅ Π°ΡΠ³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ albumentations.readthedocs.io/en/latest ΠΈ Π²ΡΠΏΠΈΠ»ΠΈΡΡ ΠΆΡΡΡΠΊΠΎ Π²ΡΠΈΡΡΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΠΈΠ· COCO. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΡΠΎΠΏΠ½ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π΅ΡΠ΅ΠΊΡΠΈΠΈ, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π° Π±ΠΎΠ»ΡΡΠΈΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ°Ρ ΠΈΡΠΈΡΠ΅ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Ρ Π²Π°Ρ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ Π΄Π°ΡΠ°ΡΠ΅Ρ =), ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½ΠΎ ΠΎΠ± ΡΡΠΎΠΌ Π² Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°Π·.
Π ΠΎΠ±ΡΠ΅ΠΌ train loop ΡΠΎΠΆΠ΅ ΡΠ»Π°Π±Π΅Π½ΡΠΊΠΈΠΉ, ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΎΠ½ Π½Π΅ ΡΠΎΡ ΡΠ°Π½ΡΠ» ΡΠ΅ΠΊΠΏΠΎΠΈΠ½ΡΡ, ΡΠ·Π°Π» ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠΆΠ°ΡΠ½ΡΠΉ scheduler ΠΈ Ρ.Π΄. ΠΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Π²Π°ΠΌ ΠΎΡΡΠ°Π»ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠ±ΡΠ°ΡΡ backbone ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ
Π§ΡΠΎ Π±Ρ ΠΈΠ·ΡΡΠΈΡΡ Π²Π΅ΡΡ Π½Π°Π±ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅
Π ΠΎΠ±ΡΠ΅ΠΌ ΠΎΠ½ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Π΄Π»Ρ Π΄Π΅ΡΠ΅ΠΊΡΠΈΠΈ, ΠΈ Ρ Π½ΠΈΡ Π΅ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅. ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π΄ΠΎΠΆΠ΄ΠΈΡΠ΅ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ². ΠΡΠΈΠΌΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²:
ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
Π ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΡΠΆΠ΅ Π²ΡΡΡΠΎΠ΅Π½ Focal Loss ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ backbone, Π° ΡΠ°ΠΊ ΠΆΠ΅ Π»Π΅Π³ΠΊΠΎ Π²ΠΏΠΈΠ»ΠΈΠ²Π°ΡΡΡΡ ΡΠ²ΠΎΠΈ
Π ΡΠ°Π±Π»ΠΈΡΠΊΠ΅ Π°Π²ΡΠΎΡΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ:
Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ backbone ResNeXt50_32x4dFPN ΠΈ ResNeXt101_32x8dFPN, Π²Π·ΡΡΡΠΉ ΠΈΠ· torchvision.
ΠΠ°Π΄Π΅ΡΡΡ Ρ Π΄Π΅ΡΠ΅ΠΊΡΠΈΠ΅ΠΉ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°Π»ΠΈΡΡ, Π½ΠΎ ΡΡΠΎΠΈΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΡΠ΅ΠΆΠΈΠΌΡ ΡΠΊΡΠΏΠΎΡΡΠ° ΠΈ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠ°ΠΏ 5. ΠΠΊΡΠΏΠΎΡΡ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅Π½Ρ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Unet c ΡΠ½ΠΊΠΎΠ΄Π΅ΡΠΎΠΌ Resnet
ΠΠ°ΠΊ Π²Ρ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, ΠΎΠ±ΡΠ°ΡΠΈΠ»ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π² Dockerfile Π±ΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ Π»ΠΈΠ±Π° github.com/qubvel/segmentation_models.pytorch. Π ΠΏΠ°ΠΊΠ΅ΡΠ΅ ΡΠ½Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ° ΠΈ ΡΠΊΡΠΏΠΎΡΡΠ° pytorch ΡΠ΅ΠΊΠΏΠΎΠΈΠ½ΡΠΎΠ² Π² engine TensorRT.
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΈ ΡΠΊΡΠΏΠΎΡΡΠ΅ Unet-like ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΈΠ· ONNX Π² TensoRT β ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π·Π°Π΄Π°Π²Π°ΡΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ Upsample ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ConvTranspose2D:
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΡΠΊΡΠΏΠΎΡΡΠ΅ Π² ONNX, Π½ΠΎ ΡΠΆΠ΅ Π² 7 Π²Π΅ΡΡΠΈΠΈ TensorRT ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ, ΠΈ Π½Π°ΠΌ ΠΎΡΡΠ°Π»ΠΎΡΡ ΠΆΠ΄Π°ΡΡ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ.
ΠΠΎΠ³Π΄Π° Ρ Π½Π°ΡΠ°Π» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ docker Ρ ΠΌΠ΅Π½Ρ Π±ΡΠ»ΠΈ ΡΠΎΠΌΠ½Π΅Π½ΠΈΡ Π½Π° ΡΡΡΡ Π΅Π³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΌΠΎΠΈΡ Π·Π°Π΄Π°Ρ. Π ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΌΠΎΠΈΡ Π°Π³ΡΠ΅Π³Π°ΡΠΎΠ² ΡΠ΅ΠΉΡΠ°Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΡΡΠ°ΡΠΈΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠΉ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΌΠ΅ΡΠ°ΠΌΠΈ.
Π Π°Π·Π½ΡΠ΅ ΡΠ΅ΡΡΡ Π½Π° ΠΏΡΠΎΡΡΠΎΡΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΎΠ± ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠΌ overhead Π½Π° ΡΠ΅ΡΠ΅Π²ΠΎΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡ Π½Π° VOLUME, ΠΏΠ»ΡΡ ΠΊΠΎ Π²ΡΠ΅ΠΌΡ Π½Π΅Π²Π΅Π΄ΠΎΠΌΡΠΉ ΠΈ ΡΡΡΠ°ΡΠ½ΡΠΉ GIL, Π° ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ΅ΠΌΠΊΠ° ΠΊΠ°Π΄ΡΠ°, ΡΠ°Π±ΠΎΡΠ° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΏΠΎ ΡΠ΅ΡΠΈ ΠΊΠ°Π΄ΡΠ° ΡΠ²Π»ΡΡΡΡΡ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ hard real-time, Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ Π² ΡΠ΅ΡΠΈ Π΄Π»Ρ ΠΌΠ΅Π½Ρ ΠΎΡΠ΅Π½Ρ ΠΊΡΠΈΡΠΈΡΠ½Ρ.
P.S. ΠΡΡΠ°ΡΡΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π²Π°Ρ Π»ΡΠ±ΠΈΠΌΡΠΉ ΡΡΠ΅ΠΉΠ½ Π»ΡΠΏ Π΄Π»Ρ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½!
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Ρ ods.ai, Π±Π΅Π· Π½Π΅Π³ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ! ΠΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ n01z3, Π½Π°Π΄ΠΎΡΠΌΠ΅Π²ΡΠ΅ΠΌΡ ΠΌΠ΅Π½Ρ Π·Π°Π½ΡΡΡΡΡ DL, Π·Π° Π΅Π³ΠΎ Π±Π΅ΡΡΠ΅Π½Π½ΡΠ΅ ΡΠΎΠ²Π΅ΡΡ ΠΈ ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΠΈΠ·ΠΌ!
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π² production ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ!
Aurorai, llc
Deep Learning Inference Benchmark β ΠΈΠ·ΠΌΠ΅ΡΡΠ΅ΠΌ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π³Π»ΡΠ±ΠΎΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ
ΠΠ΅ΡΠ΅Π΄ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ Π²ΡΡΠ°Π΅Ρ Π·Π°Π΄Π°ΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΆΠ΅Π»Π΅Π·Π° Π² Π·Π°Π΄Π°ΡΠ΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π³Π»ΡΠ±ΠΎΠΊΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΎΡΠ΅ΡΡΡ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎΠ»Π°-Π²ΠΎΠ·ΡΠ°ΡΡΠ° ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Ρ ΠΎΠ΄ΡΡ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½, ΡΡΠΎΠ±Ρ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅Π½ΡΡΡ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° ΠΈΠ»ΠΈ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠ²Π°ΡΠΎΠΌ. ΠΡ ΡΠΆΠ΅ Π·Π½Π°Π΅ΡΠ΅ ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π²Π°ΡΠ΅ΠΌ ΠΠ, Π½ΠΎ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° Π½Π΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΊΠ°ΠΊ Π²ΡΠ±ΡΠ°ΡΡ ΠΆΠ΅Π»Π΅Π·ΠΎ. ΠΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΡΠ°ΠΌΡΠΉ ΡΠΎΠΏ ΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠ»Π°ΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π·Π° ΠΏΡΠΎΡΡΠ°ΠΈΠ²Π°ΡΡΠΈΠ΅ ΠΌΠΎΡΠ½ΠΎΡΡΠΈ, ΡΠ°ΠΊ ΠΈ Π·Π° ΡΠ»Π΅ΠΊΡΡΠΎΡΠ½Π΅ΡΠ³ΠΈΡ. ΠΠΎΠΆΠ½ΠΎ Π²Π·ΡΡΡ ΡΠ°ΠΌΡΠΉ Π΄Π΅ΡΠ΅Π²ΡΠΉ i3 ΠΈ ΠΏΠΎΡΠΎΠΌ Π²Π΄ΡΡΠ³ ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ²Π΅Π·ΡΠΈ ΠΊΠ°ΡΠΊΠ°Π΄ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π³Π»ΡΠ±ΠΎΠΊΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π½Π° 8 ΠΊΠ°ΠΌΠ΅ΡΠ°Ρ . Π ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠ°ΠΌΠ΅ΡΠ° Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄Π½Π°, ΠΈ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Raspberry Pi Ρ Movidius Neural Compute Stick? ΠΠΎΡΡΠΎΠΌΡ Ρ ΠΎΡΠ΅ΡΡΡ ΠΈΠΌΠ΅ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΎΡΠ΅Π½ΠΊΠΈ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ° Π½Π° ΡΠ°Π·Π½ΠΎΠΌ ΠΆΠ΅Π»Π΅Π·Π΅, ΠΏΡΠΈΡΠ΅ΠΌ Π΅ΡΠ΅ Π΄ΠΎ Π½Π°ΡΠ°Π»Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ.
Π ΡΠ΅Π»ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΡΡΠΈ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Ρ Π³Π»ΡΠ±ΠΎΠΊΠΈΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ:
ΠΠ±ΡΡΡ ΡΡ Π΅ΠΌΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π³Π»ΡΠ±ΠΎΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠ· Π»Π΅ΠΊΡΠΈΠΈ ΠΊΡΡΡΠ° ΠΏΠΎ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ ΠΈ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠΌ Π³Π»ΡΠ±ΠΎΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π² ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΌ Π·ΡΠ΅Π½ΠΈΠΈ
ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΡΠΊΠΎΡΠΎΡΡΠΈ Π·Π°Π»ΠΎΠΆΠ΅Π½Ρ Π΅ΡΠ΅ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΏΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π·Π°Π΄Π°ΡΠΈ, ΠΈ Ρ ΠΎΡΠ΅ΡΡΡ Π΅ΡΠ΅ Π΄ΠΎ Π½Π°ΡΠ°Π»Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄ΠΎΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΡΠ·Π½Π°ΡΡ «ΡΠ»ΠΎΠΆΠΈΡΡΡ» ΠΈΠ»ΠΈ Π½Π΅Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΠ°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Π² Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ° ΡΠ΅ΡΡΡΡΡ. Π Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ DLI benchmark.
DLI benchmark
Π ΡΠ°ΠΌΠΊΠ°Ρ Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠΈΠΈ ITLab ΡΡΡΠ΄Π΅Π½ΡΠ°ΠΌΠΈ ΠΠΠΠ£ ΠΈΠΌ. Π.Π.ΠΠΎΠ±Π°ΡΠ΅Π²ΡΠΊΠΎΠ³ΠΎ Π±ΡΠ» ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ ΠΎΡΠΊΡΡΡΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ DLI (https://github.com/itlab-vision/dl-benchmark), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ°Π·Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π½Π° Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΌ ΠΆΠ΅Π»Π΅Π·Π΅.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ Π·Π°Π»ΠΎΠΆΠ΅Π½Ρ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ:
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°
Π‘Ρ
Π΅ΠΌΠ° ΡΠΎ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ°Π±ΠΎΡΡ DLI-benchmark:
Π’ΠΈΠΏΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ²
ΠΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ Π½Π΅Π΄ΠΎΠ³ΡΡΠΆΠ΅Π½ΠΎ. ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π°ΡΡ Π΄Π²Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΡΠΊΠΎΠΉ (batch=2), ΡΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡΡΡ Π±ΡΡΡΡΠ΅Π΅ ΡΠ΅ΠΌ Π΄Π²Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΡΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΏΠ°ΡΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ½Π°ΡΠ°Π»Π° Π½Π°ΡΠ½Π΅Ρ ΡΠ°ΡΡΠΈ, Π° ΠΏΠΎΡΠΎΠΌ ΠΏΠ°Π΄Π°ΡΡ, ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π»ΡΡΡΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ°ΡΠΊΠΈ Π²Π΅ΡΡΠΌΠ° ΠΏΠΎΠ»Π΅Π·Π½ΠΎ.
Π ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠΆΠΈΠ΄Π°ΡΡΡΡ ΠΊΠΎΠ½ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΌΠΎΠΆΠ½ΠΎ Π½ΠΎΠ²ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Π½Π°ΡΠ°ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΡ. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ³ΠΎ API Π² OpenVINO ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ΅ΠΊΠ²Π΅ΡΡΡ ΠΏΠΎ 1 ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΏΠΎ ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π²ΡΡΠΎΠΊΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ Π½ΠΈΠ·ΠΊΠΈΠ΅ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π²ΡΡΠΎΠΊΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΡΠΎΡ ΡΠ°Π½ΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ Π½ΠΈΠ·ΠΊΠΈΠ΅ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ, ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ Π½ΠΎΠ²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ° Π³Π»ΡΠ±ΠΎΠΊΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠΎΠΊΠ΅ΡΠ½ΡΡ Π²ΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ .
ΠΠ΅ΡΡΠΈΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
Π ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ΄Π°Π²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π° (Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ Π·Π°ΠΏΡΡΠΊ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ), ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΠ½Π°Π»ΠΈΠ· ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ²
Π Ρ ΠΎΠ΄Π΅ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ² ΠΌΡ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π»ΠΈ Π±Π΅Π½ΡΠΌΠ°ΡΠΊ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠΌ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ: CPU i7-7700K, i5-8600K, i3-7100, i7-8700, i3-8100, GPU Intel HD Graphics 630, Intel Neural Compute Stick 2.
ΠΠΎΠΊΠ° ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° OpenVINO. ΠΠΎΠΊΠ΅ΡΡ Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠ° Ρ Caffe, TensofFlow ΠΈ PyTorch Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅.
ΠΠ»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠ°Π±ΠΎΡΡ Π²ΠΎΠ·ΡΠΌΠ΅ΠΌ ΠΌΠΎΠ΄Π΅Π»Ρ ResNet-152 β ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΎΠ±ΡΠ΅ΠΌΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΅ΡΠ°Π΅Ρ Π·Π°Π΄Π°ΡΡ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ImageNet.
ΠΠ° Π³ΡΠ°ΡΠΈΠΊΠ΅ Π½ΠΈΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΡΠΊΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ΅ΠΆΠΈΠΌΠ°Ρ . ΠΠ° Π΄Π°Π½Π½ΠΎΠΌ Π³ΡΠ°ΡΠΈΠΊΠ΅ ΠΏΠΎ ΠΎΡΠΈ X ΠΎΡΠ»ΠΎΠΆΠ΅Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, Π° ΠΏΠΎ ΠΎΡΠΈ Y β ΡΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ (ΠΈΠ»ΠΈ Π·Π°Π΄Π΅ΡΠΆΠΊΠ°, latency) ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΠ° ΡΡΠΎΠΌ Π³ΡΠ°ΡΠΈΠΊΠ΅ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΠΏΡΠΈ ΡΠ΄Π²ΠΎΠ΅Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΠΊΠΎΡΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π² Π΄Π²Π° ΡΠ°Π·Π° β ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΎΡΠ»ΠΈΡΠ½ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»Π»ΠΈΠ·Π°ΡΠΈΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. Π§ΡΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Ρ ΠΎΡΠΎΡΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΈ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠ°ΡΠΊΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ, ΠΈ Π΄Π»Ρ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ FPS (ΡΠΊΠΎΠ»ΡΠΊΠΎ Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ°Π±ΠΎΡΡ) Π½ΡΠΆΠ½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ Π² ΠΏΠ°ΡΠΊΠ΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΡΠΊΠΈ. ΠΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΌΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅ΠΌ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ Π½ΠΈΠΆΠ΅.
ΠΠ·Π³Π»ΡΠ½ΡΠ² Π½Π° ΡΡΠΈ ΡΠΈΡΡΡ, ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ 6 ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΡΡΠΎ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ ΠΏΠ°ΡΠΊΠ°ΠΌΠΈ ΠΏΠΎ 8 ΡΡΡΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π΅Ρ Π½Π° 20% ΠΈΠ·-Π·Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠ»ΠΎΡΠ½ΠΎΠΉ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ. ΠΠΎ Π² ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΌ ΠΠ Π½Π΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ Ρ ΠΎΡΠ΅ΡΡΡ ΠΏΠΈΡΠ°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΡΠΎΠ±Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π² ΠΏΠ°ΡΠΊΠΈ, Π΄Π° ΠΈ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΡΠΎΠ³Π΄Π° Π²ΠΎΠ·ΡΠ°ΡΡΠ°ΡΡβ¦
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π°ΠΌ Π½Π° ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ Π·Π°ΠΏΡΡΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ! OpenVINO ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π΅ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΈΠ· ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ Π±ΠΎΠ»ΡΡΡΡ ΠΏΠ°ΡΠΊΡ, Π° ΠΏΠΎΠ΄Π°Π²Π°ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π° Π½Π΅ Π΄ΠΎΠΆΠΈΠ΄Π°ΡΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π²Ρ Π·Π°Π΄Π°Π΅ΡΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ «ΡΡΡΠΈΠΌΠΎΠ²» (ΡΡΠΎ Π½Π΅ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°; ΡΡΠΎ ΡΡΡΠ½ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°Ρ Π²Π°ΡΡΠ²Π°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π² ΡΠ΅Π±Π΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ), ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΡ.
Π‘ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ OpenVINO Π² Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΏΠ°ΡΠΊΠΈ Π² 1 ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ ΠΌΡ ΠΏΠΎΡΡΠΈ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ Π² ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΏΠ°ΡΠΊΠΈ 8, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΏΠΎΡΡΠΈ Π½Π΅ ΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ΄ Π·Π°ΠΏΡΡΠΊΠ° ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ.