{"id":348119,"date":"2023-05-30T21:00:14","date_gmt":"2023-05-30T21:00:14","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=348119"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=348119","title":{"rendered":"<span>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Computer Vision<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b40\/014\/9bc\/b400149bc495007fe40818dcbe321084.gif\" alt=\"\u041c\u043e\u0434\u0435\u043b\u044c \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430\" title=\"\u041c\u043e\u0434\u0435\u043b\u044c \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430\" width=\"544\" height=\"306\"><\/p>\n<div><figcaption>\u041c\u043e\u0434\u0435\u043b\u044c \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u042d\u0442\u043e \u043c\u043e\u044f \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0425\u0430\u0431\u0440 (\u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0441\u0443\u0434\u0438\u0442\u0435 \u0441\u0442\u0440\u043e\u0433\u043e).<\/p>\n<p>\u0414\u0435\u043b\u043e \u0431\u044b\u043b\u043e \u0442\u0430\u043a: \u0441\u043c\u043e\u0442\u0440\u0435\u043b \u044f \u043a\u0430\u043a-\u0442\u043e \u0432 \u043e\u043a\u043d\u043e \u0438 \u0443\u0432\u0438\u0434\u0435\u043b, \u043a\u0430\u043a \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0441\u0438\u0434\u0438\u0442 \u0432 \u043c\u0430\u0448\u0438\u043d\u0435 \u043d\u0430 \u043f\u0430\u0440\u043a\u043e\u0432\u043a\u0435 \u0438 \u0436\u0434\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u0411\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0438 \u044f \u0441\u0438\u0436\u0443 \u0432 \u043c\u0430\u0448\u0438\u043d\u0435 \u0438 \u0436\u0434\u0443, \u043a\u043e\u0433\u0434\u0430 \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043f\u0430\u0440\u043a\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0435\u0433\u043e \u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u044f. \u0418 \u0442\u0443\u0442 \u044f \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0430 \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u041a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0435 \u0417\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e? \u0417\u0430\u0447\u0435\u043c \u044f \u0443\u0447\u0438\u043b\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0435\u0439, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043c\u043e\u0433\u0443 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u043e \u043c\u0435\u043d\u044f?<\/p>\n<p>\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0438\u0434\u0435\u044f \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u043b\u0430\u0441\u044c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c: \u041c\u043e\u0434\u0435\u043b\u044c \u043d\u0430 \u0431\u0430\u0437\u0435 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0433\u043e \u0437\u0440\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 \u0432\u0435\u0431-\u043a\u0430\u043c\u0435\u0440\u0443, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0434\u043e\u043c\u0430, \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u043f\u0430\u0440\u043a\u043e\u0432\u043a\u0435 \u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 telegram-\u0431\u043e\u0442\u0430 \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f. \u0420\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u043c \u043d\u0430 Python.<\/p>\n<p><strong>\u0418\u0442\u0430\u043a, \u0422\u0417 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u043e\u0442 \u043c\u0435\u043d\u044f \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043e, \u0442\u0435\u043f\u0435\u0440\u044c \u0437\u0430 \u0434\u0435\u043b\u043e!<\/strong><\/p>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435 \u0441 \u0447\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0431\u044b\u043b\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f, \u044d\u0442\u043e \u0440\u0435\u0448\u0438\u0442\u044c, \u043a\u0430\u043a\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u043e\u0439 \u0432\u044b\u0431\u043e\u0440 \u043f\u0430\u043b \u043d\u0430 Fast R-\u0421NN. \u041c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0430 \u0445\u043e\u0440\u043e\u0448\u0435\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u043d\u0435\u0439 <s>\u043f\u0440\u043e\u043a\u0440\u0430\u0441\u0442\u0438\u043d\u0430\u0446\u0438\u0438<\/s> \u043e\u0431\u0434\u0443\u043c\u044b\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044f \u0440\u0435\u0448\u0438\u043b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u043e\u0442 YOLO (\u0432\u0437\u044f\u043b \u043d\u0435 \u0441\u0430\u043c\u0443\u044e \u043d\u043e\u0432\u0443\u044e 4 \u0432\u0435\u0440\u0441\u0438\u044e).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2e3\/a35\/2e4\/2e3a352e47a1ce4c67eac4e74708ce2d.png\" alt=\"YOLO4\" title=\"YOLO4\" width=\"1486\" height=\"794\"><\/p>\n<div><figcaption>YOLO4<\/figcaption><\/div>\n<\/figure>\n<p>\u0421 \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u043e\u043a\u043e\u043d\u0447\u0435\u043d\u043e, \u0441 \u0442\u044f\u0436\u0435\u043b\u044b\u043c\u0438 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0442\u043e\u0436\u0435, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0443.<\/p>\n<pre><code class=\"python\">#\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 import cv2 import numpy as np import pandas as pd from art import tprint import matplotlib.pylab as plt import requests<\/code><\/pre>\n<p>1) \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a\u0430\u043c\u0435\u0440\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 CV. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u044f \u0434\u0435\u043b\u0430\u043b \u043d\u0430 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435\u043e, \u043d\u043e \u0435\u0441\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u0432\u0435\u0431-\u043a\u0430\u043c\u0435\u0440\u043e\u0439, \u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c cv2.VideoCapture() \u0446\u0438\u0444\u0440\u0443 \u043d\u043e\u043b\u044c. \u0414\u0430\u043b\u0435\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u043a\u0430\u0436\u0434\u044b\u043c \u043a\u0430\u0434\u0440\u043e\u043c (\u0431\u0435\u0440\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u0434\u0440 \u0432\u0438\u0434\u0435\u043e \u0438 \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0435\u043c \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 \u043d\u0430\u0448\u0443 \u043c\u043e\u0434\u0435\u043b\u044c).<\/p>\n<pre><code class=\"python\">#\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0432\u0438\u0434\u0435\u043e video_capture = cv2.VideoCapture(video_path)  #\u041f\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u0436\u0430\u0442\u0430 \u043a\u043b\u0430\u0432\u0438\u0448\u0430 q \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c while video_capture.isOpened(): &nbsp; &nbsp;  &nbsp; &nbsp; ret, image_to_process = video_capture.read()  &nbsp; &nbsp; #\u041f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u043d\u0433 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0440\u0430\u0431\u043e\u0442\u0430 YOLO &nbsp; &nbsp; height, width, _ = image_to_process.shape &nbsp; &nbsp; blob = cv2.dnn.blobFromImage(image_to_process, 1 \/ 255, (608, 608), &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(0, 0, 0), swapRB=True, crop=False) &nbsp; &nbsp; net.setInput(blob) &nbsp; &nbsp; outs = net.forward(out_layers) &nbsp; &nbsp; class_indexes, class_scores, boxes = ([] for i in range(3))  &nbsp; &nbsp; #\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u043a\u0430\u0434\u0440\u0435 &nbsp; &nbsp; for out in outs: &nbsp; &nbsp; &nbsp; &nbsp; for obj in out: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scores = obj[5:] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; class_index = np.argmax(scores)<\/code><\/pre>\n<p>2) \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433: \u0440\u0430\u0431\u043e\u0442\u0430 YOLO \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u0430. YOLO \u043c\u043e\u0436\u0435\u0442 \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c 80 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043d\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u0448\u0438\u043d\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0442\u0441\u0435\u043a\u0430\u0435\u043c \u0432\u0441\u0451 \u043b\u0438\u0448\u043d\u0435\u0435. \u0411\u0435\u0440\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e Bounding Boxes \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043a\u043b\u0430\u0441\u0441\u0430 car.<\/p>\n<pre><code class=\"python\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #\u0412 \u043a\u043b\u0430\u0441\u0441\u0435 2 (car) \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u0438 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if class_index == 2:  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; class_score = scores[class_index] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if class_score &gt; 0: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; center_x = int(obj[0] * width) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; center_y = int(obj[1] * height) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obj_width = int(obj[2] * width) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obj_height = int(obj[3] * height) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; box = [center_x - obj_width \/\/ 2, center_y - obj_height \/\/ 2, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obj_width, obj_height]  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #BB &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; boxes.append(box) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; class_indexes.append(class_index) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; class_scores.append(float(class_score))<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438: \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u0435\u0442 \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c YOLO4 (\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437 \u0431\u0443\u0434\u0443 \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0436\u0438\u0440\u0430\u0444\u0430 \u0432\u0435\u0440\u0445\u043e\u043c \u043d\u0430 \u0441\u043d\u043e\u0443\u0431\u043e\u0440\u0434\u0435).<\/p>\n<pre><code class=\"python\">['person', 'bicycle', 'car', 'motorbike', 'aeroplane', 'bus', 'train', 'truck', 'boat', 'traffic light','fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana',  'apple', 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza',  'donut', 'cake', 'chair', 'sofa', 'pottedplant', 'bed', 'diningtable',  'toilet', 'tvmonitor', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock',  'vase', 'scissors', 'teddy bear', 'hair drier', 'toothbrush']<\/code><\/pre>\n<p>3) \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u043a\u0430\u044f \u0447\u0430\u0441\u0442\u044c. \u0427\u0442\u043e \u043c\u044b \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u043c \u043f\u043e\u0434 \u043f\u0430\u043a\u043e\u0432\u043e\u0447\u043d\u044b\u043c\u0438 \u043c\u0435\u0441\u0442\u0430\u043c\u0438? \u0421\u0430\u043c\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0438 \u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0435: \u0432\u0437\u044f\u0442\u044c \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0442\u043e\u044f\u0442 \u043c\u0430\u0448\u0438\u043d\u044b! \u0422\u043e \u0435\u0441\u0442\u044c, \u043f\u043e\u0434 \u0432\u0441\u0435\u043c\u0438 \u043c\u0430\u0448\u0438\u043d\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438\u0441\u044c \u0432 \u043a\u0430\u0434\u0440\u0435, \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430. \u0427\u0442\u043e \u0436, \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 (\u0443\u0441\u043b\u043e\u0436\u043d\u0438\u0442\u044c \u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u0441\u043f\u0435\u0435\u043c)<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8d7\/768\/129\/8d77681290fa3014e07c3d1fe59a0574.png\" alt=\"\u041f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u043a\u0430\u0434\u0440\u0435\" title=\"\u041f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u043a\u0430\u0434\u0440\u0435\" width=\"2560\" height=\"1193\"><\/p>\n<div><figcaption>\u041f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u043a\u0430\u0434\u0440\u0435<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e first_frame_parking_spaces \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0432\u0441\u0435 BBoxes, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438\u0441\u044c \u0432 \u043a\u0430\u0434\u0440\u0435. \u042d\u0442\u043e \u043d\u0430\u0448\u0438 \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430 (\u043d\u0430 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435, \u043f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u0438\u0434\u0435\u043e \u043d\u0430 \u043f\u0430\u0440\u043a\u043e\u0432\u043a\u0435 \u0431\u044b\u043b\u0438 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430, \u043d\u043e \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u0432\u0441\u0451 \u0432\u0441\u0435\u0433\u0434\u0430 \u0437\u0430\u043d\u044f\u0442\u043e). \u041f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430 \u043c\u044b \u0437\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u043c \u0434\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u043a\u043e\u043d\u0446\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b (\u041e\u043d\u0438 \u0443 \u043d\u0430\u0441 \u0432\u044b\u0441\u0435\u0447\u0435\u043d\u044b \u0432 \u043a\u0430\u043c\u043d\u0435, \u044d\u0442\u043e \u043d\u0430\u0448 \u0437\u043e\u043b\u043e\u0442\u043e\u0439 \u0433\u0440\u0430\u0430\u043b\u044c, \u044d\u0442\u043e \u0441\u0430\u043b\u0430\u0442 \u043e\u043b\u0438\u0432\u044c\u0435 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u0433\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u0442\u0440\u043e\u0433\u0430\u0442\u044c).<\/p>\n<pre><code class=\"python\">#\u041f\u0415\u0420\u0412\u042b\u0419 \u041a\u0410\u0414\u0420, \u041e\u041f\u0420\u0415\u0414\u0415\u041b\u042f\u0415\u041c \u041f\u0410\u0420\u041a\u041e\u041c\u0415\u0421\u0422\u0410 if not first_frame_parking_spaces:     #\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c, \u0447\u0442\u043e \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e     first_frame_parking_spaces = boxes     first_frame_parking_score = class_scores<\/code><\/pre>\n<p>4) \u0422\u0435\u043f\u0435\u0440\u044c \u0431\u0443\u0434\u0435\u043c \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u0438 \u043c\u0430\u0448\u0438\u043d\u044b \u0432 \u043a\u0430\u0434\u0440\u0435. \u042d\u0442\u043e \u0443\u0436\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u0417\u0434\u0435\u0441\u044c \u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u041a\u0430\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0447\u0442\u043e \u043c\u0430\u0448\u0438\u043d\u0430 \u0441\u0442\u043e\u0438\u0442 \u043d\u0430 \u043f\u0430\u0440\u043a\u043e\u043c\u0435\u0441\u0442\u0435? \u0421\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u0438\u0445 BoundingBoxes, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Intersection over Union (IoU).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/436\/46f\/a4b\/43646fa4b47c4dfe4f2a7e118d1493c4.png\" alt=\"IoU\" title=\"IoU\" width=\"1200\" height=\"579\"><\/p>\n<div><figcaption>IoU<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u043c\u0430\u0448\u0438\u043d \u0432 \u0440\u0430\u043d\u0434\u043e\u043c\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0442\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u043f\u0430\u0440\u043a\u043e\u043c\u0435\u0441\u0442 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043c\u0430\u0448\u0438\u043d\u0430\u043c\u0438 \u0432 \u043a\u0430\u0434\u0440\u0435. \u0415\u0441\u043b\u0438 \u043c\u0430\u0448\u0438\u043d\u0430 \u0432 \u043a\u0430\u0434\u0440\u0435 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u0430\u0440\u043a\u043e\u043c\u0435\u0441\u0442\u043e\u043c, \u0442\u043e IoU \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 0.8-0.9, \u0432 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 0.0, \u043a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8f6\/547\/871\/8f6547871a336e40ad2c339bd723f392.png\" alt=\"IoU = 0.83, \u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043d\u044f\u0442\u043e\" title=\"IoU = 0.83, \u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043d\u044f\u0442\u043e\" width=\"1126\" height=\"128\"><\/p>\n<div><figcaption>IoU = 0.83, \u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043d\u044f\u0442\u043e<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u043e\u0433\u0434\u0430 \u0435\u0441\u043b\u0438 \u043c\u0430\u0448\u0438\u043d\u0430 \u0443\u0435\u0437\u0436\u0430\u0435\u0442, \u0442\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 BBox \u043c\u0430\u0448\u0438\u043d\u044b \u0441 BBox \u043f\u0430\u0440\u043a\u043e\u043c\u0435\u0441\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0442\u044c\u0441\u044f \u0438 \u043f\u043e\u0441\u043b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u043e\u0433\u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431 \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0432\u0448\u0435\u043c\u0441\u044f \u043f\u0430\u0440\u043a\u043e\u043c\u0435\u0441\u0442\u0435. \u041b\u043e\u0433\u0438\u0447\u043d\u043e? \u041b\u043e\u0433\u0438\u0447\u043d\u043e! \u041d\u043e\u2026 \u0422\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u2026<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043c\u044b \u0441\u043d\u0438\u043c\u0430\u0435\u043c \u0447\u0435\u0442\u043a\u043e \u0441\u0432\u0435\u0440\u0445\u0443, \u0442\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0435\u0442, \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u044b\u0448\u0435. \u041d\u043e \u0435\u0441\u043b\u0438  \u043f\u043e\u0434 \u0443\u0433\u043b\u043e\u043c, \u0442\u043e \u0432\u043e\u0442 \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442: \u0442\u0430\u043a \u043a\u0430\u043a BoundingBoxes \u043e\u0442 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u043c\u0430\u0448\u0438\u043d \u043c\u043e\u0433\u0443\u0442 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u0442\u044c\u0441\u044f \u0441 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u043c\u0438 \u043f\u0430\u0440\u043a\u043e\u043c\u0435\u0441\u0442\u0430\u043c\u0438, \u0442\u043e \u0432 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u043e\u0434\u043d\u043e \u0438\u0437 \u043f\u0430\u0440\u043a\u043e\u043c\u0435\u0441\u0442 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f, \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0435 \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u0442 \u0435\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u043c\u0430\u0448\u0438\u043d \u0440\u044f\u0434\u043e\u043c \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u0435\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0434\u0432\u0430 \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430 (\u0441\u0432\u043e\u0451 \u0438 \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0432\u0448\u0435\u0435\u0441\u044f).<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0f3\/566\/3ff\/0f35663ffd263e36c353adf0fb72a111.png\" alt=\"\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 IoU=0.35\" title=\"\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 IoU=0.35\" width=\"372\" height=\"229\"><\/p>\n<div><figcaption>\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 IoU=0.35<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u043e\u0442 \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u0435\u0441\u043b\u0438 \u043c\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u044d\u0442\u043e \u0432 \u0446\u0438\u0444\u0440\u0430\u0445:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0da\/772\/e1d\/0da772e1d9acf76f09da790cb705d678.png\" alt=\"\u0423\u043c\u0435\u043d\u044c\u0448\u0430\u044e\u0449\u0435\u0435\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 IoU \u044d\u0442\u043e \u0443\u0435\u0437\u0436\u0430\u044e\u0449\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430, \u0430 IoU=0.35 \u044d\u0442\u043e \u043c\u0430\u0448\u0438\u043d\u0430 \u0441\u0442\u043e\u044f\u0449\u0430\u044f \u0440\u044f\u0434\u043e\u043c\" title=\"\u0423\u043c\u0435\u043d\u044c\u0448\u0430\u044e\u0449\u0435\u0435\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 IoU \u044d\u0442\u043e \u0443\u0435\u0437\u0436\u0430\u044e\u0449\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430, \u0430 IoU=0.35 \u044d\u0442\u043e \u043c\u0430\u0448\u0438\u043d\u0430 \u0441\u0442\u043e\u044f\u0449\u0430\u044f \u0440\u044f\u0434\u043e\u043c\" width=\"509\" height=\"235\"><\/p>\n<div><figcaption>\u0423\u043c\u0435\u043d\u044c\u0448\u0430\u044e\u0449\u0435\u0435\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 IoU \u044d\u0442\u043e \u0443\u0435\u0437\u0436\u0430\u044e\u0449\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430, \u0430 IoU=0.35 \u044d\u0442\u043e \u043c\u0430\u0448\u0438\u043d\u0430 \u0441\u0442\u043e\u044f\u0449\u0430\u044f \u0440\u044f\u0434\u043e\u043c<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043e\u043f\u0440\u043e\u0441: \u043a\u0430\u043a \u00ab\u0432\u044b\u0442\u0430\u0449\u0438\u0442\u044c\u00bb \u043d\u0443\u0436\u043d\u043e\u0435 IoU \u0438 \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438, \u0447\u0442\u043e \u044d\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430\u0448\u0430 \u043c\u0430\u0448\u0438\u043d\u0430? \u0421\u0434\u0435\u043b\u0430\u0435\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432. \u0421\u043c\u044b\u0441\u043b \u0442\u0430\u043a\u043e\u0439: \u041f\u0435\u0440\u0432\u0430\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f &#8212; \u0431\u0435\u0440\u0435\u043c \u0432\u0441\u0435, \u0447\u0442\u043e \u043f\u043e IoU \u043c\u0435\u043d\u044c\u0448\u0435 0.4 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 0 (\u0437\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e\u0433\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0434\u0435\u0442\u0435\u043a\u0446\u0438\u0438 &#8212; \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 BoundingBox \u043c\u0430\u0448\u0438\u043d\u044b \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u043c\u0430\u0448\u0438\u043d\u044b \u0432 \u043a\u0430\u0434\u0440\u0435). \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u043e\u0442\u0441\u0435\u0447\u0435\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u043f\u043e IoU \u043c\u0435\u043d\u044c\u0448\u0435 0.15, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432 \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b IoU, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f BoundingBox, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u043e\u043f\u0430\u043b \u043f\u043e\u0434 \u043f\u0435\u0440\u0432\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435, \u0430 \u043f\u043e\u0442\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044f. \u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u0430\u0434\u0440\u044b \u0438 \u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u0440\u044f\u0434 (\u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 10 \u043a\u0430\u0434\u0440\u043e\u0432) \u0443 \u043d\u0430\u0441 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0430 \u0443\u0441\u043b\u043e\u0432\u0438\u044f, \u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u044d\u0442\u043e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e.<\/p>\n<p>\u0412\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u0447\u0435\u0445\u0430\u0440\u0434\u044b \u043a\u0430\u0434\u0440\u043e\u0432. \u0415\u0441\u043b\u0438 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u0443 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f BoundingBox \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442 \u043f\u0435\u0440\u0432\u043e\u043c\u0443 \u0443\u0441\u043b\u043e\u0432\u0438\u044e, \u0442\u043e \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0441\u0431\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043a\u0430\u0434\u0440\u043e\u0432 \u0434\u043b\u044f BoundingBox, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442 \u043e\u0431\u043e\u0438\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c. \u0422\u0443\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0442\u0430\u043d\u0446\u044b \u0441 \u0431\u0443\u0431\u043d\u043e\u043c. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d (\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439) \u0444\u0438\u043b\u044c\u0442\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0437\u0430 \u0447\u0435\u0445\u0430\u0440\u0434\u0443 BBoxes \u0438 \u043e\u0431\u043d\u0443\u043b\u044f\u0442\u044c \u0441\u0447\u0451\u0442\u0447\u0438\u043a free_parking_timer. \u042d\u0445, \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u043f\u0440\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u043a\u043e\u0434\u0430 \u043d\u0438\u0436\u0435 \u0441\u0442\u0430\u043d\u0435\u0442 \u044f\u0441\u043d\u0435\u0435 \ud83d\ude42<\/p>\n<pre><code class=\"python\">#IoU overlaps = compute_overlaps(np.array(parking_spaces), np.array(cars_boxes))  for parking_space_one, area_overlap in zip(parking_spaces, overlaps):          max_IoU = max(area_overlap)     sort_IoU = np.sort(area_overlap[area_overlap &gt; 0])[::-1] &nbsp; &nbsp; &nbsp;          if free_parking_space == False:                  if 0.0 &lt; max_IoU &lt; 0.4:              #\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u043a\u043e\u043c\u0435\u0441\u0442 \u043f\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044e 1: 0.0 &lt; IoU &lt; 0.4             len_sort = len(sort_IoU)              #\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u043a\u043e\u043c\u0435\u0441\u0442 \u043f\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044e 2: IoU &gt; 0.15             sort_IoU_2 = sort_IoU[sort_IoU &gt; 0.15]             len_sort_2 = len(sort_IoU_2)              #\u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0442\u043e\u0431\u044b \u0443\u0434\u043e\u0432\u043b\u044f\u0442\u0432\u043e\u0440\u044f\u043b\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044e 1 \u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044e 2             if (check_det_frame == parking_space_one) &amp; (len_sort != len_sort_2):                 #\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u0430\u0434\u0440\u044b \u043f\u043e\u0434\u0440\u044f\u0434 \u0441 \u043f\u0443\u0441\u0442\u044b\u043c\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438                 free_parking_timer += 1              elif check_det_frame == None:                 check_det_frame = parking_space_one              else:                 #\u0424\u0438\u043b\u044c\u0442\u0440 \u043e\u0442 \u0447\u0435\u0445\u0430\u0440\u0434\u044b \u043c\u0435\u0441\u0442 (\u0435\u0441\u043b\u0438 \u043c\u0435\u0441\u0442\u043e \u0447\u0435\u0440\u0435\u0434\u0443\u0435\u0442\u0441\u044f, \u0442\u043e \"\u0441\u043a\u0430\u0447\u0435\u0442\")                 free_parking_timer_bag1 += 1                 if free_parking_timer_bag1 == 2:                     #\u041e\u0431\u043d\u0443\u043b\u044f\u0435\u043c \u0441\u0447\u0451\u0442\u0447\u0438\u043a, \u0435\u0441\u043b\u0438 \u043f\u0430\u0440\u043a\u043e\u043c\u0435\u0441\u0442\u043e \"\u0441\u043a\u0430\u0447\u0435\u0442\"                     check_det_frame = parking_space_one                     free_parking_timer = 0              #\u0415\u0441\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 10 \u043a\u0430\u0434\u0440\u043e\u0432 \u043f\u043e\u0434\u0440\u044f\u0434, \u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c, \u0447\u0442\u043e \u043c\u0435\u0441\u0442\u043e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e             if free_parking_timer == 10:                 #\u041f\u043e\u043c\u0435\u0447\u0430\u0435\u043c \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e                 free_parking_space = True                 free_parking_space_box = parking_space_one                 #\u041e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0440\u0430\u043c\u043a\u0443 \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430                  x_free, y_free, w_free, h_free = parking_space_one<\/code><\/pre>\n<p>\u0418 \u0432\u043e\u0442 \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u0442\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0441\u043e\u0431\u043b\u044e\u0434\u0435\u043d\u044b \u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 10 \u043a\u0430\u0434\u0440\u043e\u0432, \u043c\u044b \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043c\u0435\u0442\u0438\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 BBox \u043a\u0430\u043a \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0444\u043b\u0430\u0433 free_parking_space \u0432 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 True.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/917\/978\/c21\/917978c21226b2abe06ea7b99bcbc5d2.gif\" alt=\"\u0420\u0430\u0431\u043e\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u0438\" title=\"\u0420\u0430\u0431\u043e\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u0438\" width=\"544\" height=\"306\"><\/p>\n<div><figcaption>\u0420\u0430\u0431\u043e\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0442\u043e\u0438\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0432\u0435\u0449\u044c: \u0435\u0441\u043b\u0438 free_parking_space=True, \u043d\u043e \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442, \u0442\u043e \u0443 \u043d\u0430\u0441 \u043e\u043f\u044f\u0442\u044c \u043d\u0435\u0442 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \ud83d\ude41<\/p>\n<pre><code class=\"python\">#\u0415\u0441\u043b\u0438 \u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442, \u0442\u043e \u043f\u043e\u043c\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u043c\u0435\u0441\u0442 overlaps = compute_overlaps(np.array([free_parking_space_box]),                              np.array(cars_boxes)) for area_overlap in overlaps: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;     max_IoU = max(area_overlap)     if max_IoU &gt; 0.6:         free_parking_space = False         telegram_message = False<\/code><\/pre>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e &#8212; \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u0442\u044c telegram \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043d\u0435 \u0431\u0443\u0434\u0443 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043b\u0438\u0448\u044c \u043e\u0442\u0440\u044b\u0432\u043e\u043a \u043a\u043e\u0434\u0430 \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439.<\/p>\n<pre><code class=\"python\">TOKEN = \"\u2026\" chat_id = \"\u2026\"    #\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0444\u043e\u0442\u043e \u0432 telegram def send_photo_file(chat_id, img): &nbsp; &nbsp; files = {'photo': open(img, 'rb')} &nbsp; &nbsp; requests.post(f'https:\/\/api.telegram.org\/bot{TOKEN}\/sendPhoto?chat_id={chat_id}', files=files)  #\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 telegram def send_telegram_message(message): &nbsp; &nbsp; requests.get(f'https:\/\/api.telegram.org\/bot{TOKEN}\/sendMessage?chat_id={chat_id}&amp;text={message}').json()<\/code><\/pre>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f &#8212; \u0432\u0441\u0451! \u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441\u0431\u043e\u0440\u043a\u0438, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043c\u043e\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043d\u0430 GitHub (<a href=\"https:\/\/github.com\/Mazepov\/Parking_Space_Detector\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/Mazepov\/Parking_Space_Detector<\/a>).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7e3\/ded\/0d7\/7e3ded0d792c13073ee4d3b2e92244dd.gif\" alt=\"\u0420\u0430\u0431\u043e\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0447\u0435\u0440\u0435\u0437 telegram\" title=\"\u0420\u0430\u0431\u043e\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0447\u0435\u0440\u0435\u0437 telegram\" width=\"544\" height=\"306\"><\/p>\n<div><figcaption>\u0420\u0430\u0431\u043e\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0447\u0435\u0440\u0435\u0437 telegram<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043a\u043e\u0434\u0430 \u043e\u0447\u0435\u043d\u044c \u0442\u043e\u043d\u043a\u0430\u044f \u0438, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043d\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f. \u0423\u0432\u0435\u0440\u0435\u043d, \u043f\u0440\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0444\u0443\u0442\u043e\u0436\u0430\u0445 \u0431\u0443\u0434\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u0412 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u043c\u0435\u0441\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u0435 \u043f\u0430\u0440\u043a\u043e\u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u0430\u0434\u0440\u0435, \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435. \u041d\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u0431\u0430\u0437\u0430 \u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438 \u043b\u0443\u0447\u0448\u0435\u0439 \u0434\u0435\u0442\u0435\u043a\u0446\u0438\u0438 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 YOLO \u0447\u0430\u0441\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043a\u0438\u043d\u0443\u0442\u044c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u043c \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0434\u0435\u0442\u0435\u043a\u0446\u0438\u0438 \u043c\u0430\u0448\u0438\u043d\u044b), \u043e\u0434\u043d\u0430\u043a\u043e, \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0435\u0449\u0451 \u0434\u043e\u043b\u0433\u043e, \u043d\u043e \u0443\u0436\u0435 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445.<\/p>\n<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u044d\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0437\u0430\u043d\u044f\u043b\u043e \u0443 \u043c\u0435\u043d\u044f \u0442\u0440\u0438 \u043d\u0435\u0434\u0435\u043b\u0438 \u0432\u044f\u043b\u044b\u0445 \u043a\u043e\u0432\u044b\u0440\u044f\u043d\u0438\u0439 \u0438 \u0434\u0432\u0430 \u043f\u043e\u043b\u043d\u044b\u0445 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0443\u0441\u0438\u043b\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (\u043f\u043b\u044e\u0441 \u0434\u0435\u043d\u044c \u043d\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438).<\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0443 \u043c\u0435\u043d\u044f \u0432\u0441\u0451! \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0431\u044b\u043b \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439, \u0431\u0443\u0434\u0443 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0435\u043d \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c \u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c. \u0412 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Computer Vision \u0438 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0435\u0439.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<p> <!----> <!----><\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/738720\/\"> https:\/\/habr.com\/ru\/articles\/738720\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<figure class=\"full-width\">\n<div><figcaption>\u041c\u043e\u0434\u0435\u043b\u044c \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u042d\u0442\u043e \u043c\u043e\u044f \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0425\u0430\u0431\u0440 (\u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0441\u0443\u0434\u0438\u0442\u0435 \u0441\u0442\u0440\u043e\u0433\u043e).<\/p>\n<p>\u0414\u0435\u043b\u043e \u0431\u044b\u043b\u043e \u0442\u0430\u043a: \u0441\u043c\u043e\u0442\u0440\u0435\u043b \u044f \u043a\u0430\u043a-\u0442\u043e \u0432 \u043e\u043a\u043d\u043e \u0438 \u0443\u0432\u0438\u0434\u0435\u043b, \u043a\u0430\u043a \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0441\u0438\u0434\u0438\u0442 \u0432 \u043c\u0430\u0448\u0438\u043d\u0435 \u043d\u0430 \u043f\u0430\u0440\u043a\u043e\u0432\u043a\u0435 \u0438 \u0436\u0434\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u0411\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0438 \u044f \u0441\u0438\u0436\u0443 \u0432 \u043c\u0430\u0448\u0438\u043d\u0435 \u0438 \u0436\u0434\u0443, \u043a\u043e\u0433\u0434\u0430 \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043f\u0430\u0440\u043a\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0435\u0433\u043e \u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u044f. \u0418 \u0442\u0443\u0442 \u044f \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0430 \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u041a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0435 \u0417\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e? \u0417\u0430\u0447\u0435\u043c \u044f \u0443\u0447\u0438\u043b\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0435\u0439, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043c\u043e\u0433\u0443 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u043e \u043c\u0435\u043d\u044f?<\/p>\n<p>\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0438\u0434\u0435\u044f \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u043b\u0430\u0441\u044c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c: \u041c\u043e\u0434\u0435\u043b\u044c \u043d\u0430 \u0431\u0430\u0437\u0435 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0433\u043e \u0437\u0440\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 \u0432\u0435\u0431-\u043a\u0430\u043c\u0435\u0440\u0443, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0434\u043e\u043c\u0430, \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u043f\u0430\u0440\u043a\u043e\u0432\u043a\u0435 \u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 telegram-\u0431\u043e\u0442\u0430 \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f. \u0420\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u043c \u043d\u0430 Python.<\/p>\n<p><strong>\u0418\u0442\u0430\u043a, \u0422\u0417 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u043e\u0442 \u043c\u0435\u043d\u044f \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043e, \u0442\u0435\u043f\u0435\u0440\u044c \u0437\u0430 \u0434\u0435\u043b\u043e!<\/strong><\/p>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435 \u0441 \u0447\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0431\u044b\u043b\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f, \u044d\u0442\u043e \u0440\u0435\u0448\u0438\u0442\u044c, \u043a\u0430\u043a\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u043e\u0439 \u0432\u044b\u0431\u043e\u0440 \u043f\u0430\u043b \u043d\u0430 Fast R-\u0421NN. \u041c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0430 \u0445\u043e\u0440\u043e\u0448\u0435\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u043d\u0435\u0439 <s>\u043f\u0440\u043e\u043a\u0440\u0430\u0441\u0442\u0438\u043d\u0430\u0446\u0438\u0438<\/s> \u043e\u0431\u0434\u0443\u043c\u044b\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044f \u0440\u0435\u0448\u0438\u043b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u043e\u0442 YOLO (\u0432\u0437\u044f\u043b \u043d\u0435 \u0441\u0430\u043c\u0443\u044e \u043d\u043e\u0432\u0443\u044e 4 \u0432\u0435\u0440\u0441\u0438\u044e).<\/p>\n<figure class=\"full-width\">\n<div><figcaption>YOLO4<\/figcaption><\/div>\n<\/figure>\n<p>\u0421 \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u043e\u043a\u043e\u043d\u0447\u0435\u043d\u043e, \u0441 \u0442\u044f\u0436\u0435\u043b\u044b\u043c\u0438 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0442\u043e\u0436\u0435, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0443.<\/p>\n<pre><code class=\"python\">#\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 import cv2 import numpy as np import pandas as pd from art import tprint import matplotlib.pylab as plt import requests<\/code><\/pre>\n<p>1) \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a\u0430\u043c\u0435\u0440\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 CV. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u044f \u0434\u0435\u043b\u0430\u043b \u043d\u0430 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435\u043e, \u043d\u043e \u0435\u0441\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u0432\u0435\u0431-\u043a\u0430\u043c\u0435\u0440\u043e\u0439, \u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c cv2.VideoCapture() \u0446\u0438\u0444\u0440\u0443 \u043d\u043e\u043b\u044c. \u0414\u0430\u043b\u0435\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u043a\u0430\u0436\u0434\u044b\u043c \u043a\u0430\u0434\u0440\u043e\u043c (\u0431\u0435\u0440\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u0434\u0440 \u0432\u0438\u0434\u0435\u043e \u0438 \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0435\u043c \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 \u043d\u0430\u0448\u0443 \u043c\u043e\u0434\u0435\u043b\u044c).<\/p>\n<pre><code class=\"python\">#\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0432\u0438\u0434\u0435\u043e video_capture = cv2.VideoCapture(video_path)  #\u041f\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u0436\u0430\u0442\u0430 \u043a\u043b\u0430\u0432\u0438\u0448\u0430 q \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c while video_capture.isOpened(): &nbsp; &nbsp;  &nbsp; &nbsp; ret, image_to_process = video_capture.read()  &nbsp; &nbsp; #\u041f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u043d\u0433 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0440\u0430\u0431\u043e\u0442\u0430 YOLO &nbsp; &nbsp; height, width, _ = image_to_process.shape &nbsp; &nbsp; blob = cv2.dnn.blobFromImage(image_to_process, 1 \/ 255, (608, 608), &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(0, 0, 0), swapRB=True, crop=False) &nbsp; &nbsp; net.setInput(blob) &nbsp; &nbsp; outs = net.forward(out_layers) &nbsp; &nbsp; class_indexes, class_scores, boxes = ([] for i in range(3))  &nbsp; &nbsp; #\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u043a\u0430\u0434\u0440\u0435 &nbsp; &nbsp; for out in outs: &nbsp; &nbsp; &nbsp; &nbsp; for obj in out: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scores = obj[5:] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; class_index = np.argmax(scores)<\/code><\/pre>\n<p>2) \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0433: \u0440\u0430\u0431\u043e\u0442\u0430 YOLO \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u0430. YOLO \u043c\u043e\u0436\u0435\u0442 \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c 80 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043d\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u0448\u0438\u043d\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0442\u0441\u0435\u043a\u0430\u0435\u043c \u0432\u0441\u0451 \u043b\u0438\u0448\u043d\u0435\u0435. \u0411\u0435\u0440\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e Bounding Boxes \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043a\u043b\u0430\u0441\u0441\u0430 car.<\/p>\n<pre><code class=\"python\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #\u0412 \u043a\u043b\u0430\u0441\u0441\u0435 2 (car) \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u0438 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if class_index == 2:  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; class_score = scores[class_index] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if class_score &gt; 0: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; center_x = int(obj[0] * width) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; center_y = int(obj[1] * height) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obj_width = int(obj[2] * width) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obj_height = int(obj[3] * height) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; box = [center_x - obj_width \/\/ 2, center_y - obj_height \/\/ 2, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obj_width, obj_height]  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #BB &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; boxes.append(box) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; class_indexes.append(class_index) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; class_scores.append(float(class_score))<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438: \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u0435\u0442 \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c YOLO4 (\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437 \u0431\u0443\u0434\u0443 \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0436\u0438\u0440\u0430\u0444\u0430 \u0432\u0435\u0440\u0445\u043e\u043c \u043d\u0430 \u0441\u043d\u043e\u0443\u0431\u043e\u0440\u0434\u0435).<\/p>\n<pre><code class=\"python\">['person', 'bicycle', 'car', 'motorbike', 'aeroplane', 'bus', 'train', 'truck', 'boat', 'traffic light','fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana',  'apple', 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza',  'donut', 'cake', 'chair', 'sofa', 'pottedplant', 'bed', 'diningtable',  'toilet', 'tvmonitor', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock',  'vase', 'scissors', 'teddy bear', 'hair drier', 'toothbrush']<\/code><\/pre>\n<p>3) \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u043a\u0430\u044f \u0447\u0430\u0441\u0442\u044c. \u0427\u0442\u043e \u043c\u044b \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u043c \u043f\u043e\u0434 \u043f\u0430\u043a\u043e\u0432\u043e\u0447\u043d\u044b\u043c\u0438 \u043c\u0435\u0441\u0442\u0430\u043c\u0438? \u0421\u0430\u043c\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0438 \u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0435: \u0432\u0437\u044f\u0442\u044c \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0442\u043e\u044f\u0442 \u043c\u0430\u0448\u0438\u043d\u044b! \u0422\u043e \u0435\u0441\u0442\u044c, \u043f\u043e\u0434 \u0432\u0441\u0435\u043c\u0438 \u043c\u0430\u0448\u0438\u043d\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438\u0441\u044c \u0432 \u043a\u0430\u0434\u0440\u0435, \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430. \u0427\u0442\u043e \u0436, \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 (\u0443\u0441\u043b\u043e\u0436\u043d\u0438\u0442\u044c \u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u0441\u043f\u0435\u0435\u043c)<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u043a\u0430\u0434\u0440\u0435<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e first_frame_parking_spaces \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0432\u0441\u0435 BBoxes, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438\u0441\u044c \u0432 \u043a\u0430\u0434\u0440\u0435. \u042d\u0442\u043e \u043d\u0430\u0448\u0438 \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430 (\u043d\u0430 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435, \u043f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u0438\u0434\u0435\u043e \u043d\u0430 \u043f\u0430\u0440\u043a\u043e\u0432\u043a\u0435 \u0431\u044b\u043b\u0438 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430, \u043d\u043e \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u0432\u0441\u0451 \u0432\u0441\u0435\u0433\u0434\u0430 \u0437\u0430\u043d\u044f\u0442\u043e). \u041f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430 \u043c\u044b \u0437\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u043c \u0434\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u043a\u043e\u043d\u0446\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b (\u041e\u043d\u0438 \u0443 \u043d\u0430\u0441 \u0432\u044b\u0441\u0435\u0447\u0435\u043d\u044b \u0432 \u043a\u0430\u043c\u043d\u0435, \u044d\u0442\u043e \u043d\u0430\u0448 \u0437\u043e\u043b\u043e\u0442\u043e\u0439 \u0433\u0440\u0430\u0430\u043b\u044c, \u044d\u0442\u043e \u0441\u0430\u043b\u0430\u0442 \u043e\u043b\u0438\u0432\u044c\u0435 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u0433\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u0442\u0440\u043e\u0433\u0430\u0442\u044c).<\/p>\n<pre><code class=\"python\">#\u041f\u0415\u0420\u0412\u042b\u0419 \u041a\u0410\u0414\u0420, \u041e\u041f\u0420\u0415\u0414\u0415\u041b\u042f\u0415\u041c \u041f\u0410\u0420\u041a\u041e\u041c\u0415\u0421\u0422\u0410 if not first_frame_parking_spaces:     #\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c, \u0447\u0442\u043e \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e     first_frame_parking_spaces = boxes     first_frame_parking_score = class_scores<\/code><\/pre>\n<p>4) \u0422\u0435\u043f\u0435\u0440\u044c \u0431\u0443\u0434\u0435\u043c \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u0438 \u043c\u0430\u0448\u0438\u043d\u044b \u0432 \u043a\u0430\u0434\u0440\u0435. \u042d\u0442\u043e \u0443\u0436\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u0417\u0434\u0435\u0441\u044c \u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u041a\u0430\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0447\u0442\u043e \u043c\u0430\u0448\u0438\u043d\u0430 \u0441\u0442\u043e\u0438\u0442 \u043d\u0430 \u043f\u0430\u0440\u043a\u043e\u043c\u0435\u0441\u0442\u0435? \u0421\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u0438\u0445 BoundingBoxes, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Intersection over Union (IoU).<\/p>\n<figure class=\"full-width\">\n<div><figcaption>IoU<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u043c\u0430\u0448\u0438\u043d \u0432 \u0440\u0430\u043d\u0434\u043e\u043c\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0442\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u043f\u0430\u0440\u043a\u043e\u043c\u0435\u0441\u0442 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043c\u0430\u0448\u0438\u043d\u0430\u043c\u0438 \u0432 \u043a\u0430\u0434\u0440\u0435. \u0415\u0441\u043b\u0438 \u043c\u0430\u0448\u0438\u043d\u0430 \u0432 \u043a\u0430\u0434\u0440\u0435 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u0430\u0440\u043a\u043e\u043c\u0435\u0441\u0442\u043e\u043c, \u0442\u043e IoU \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 0.8-0.9, \u0432 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 0.0, \u043a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>IoU = 0.83, \u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043d\u044f\u0442\u043e<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u043e\u0433\u0434\u0430 \u0435\u0441\u043b\u0438 \u043c\u0430\u0448\u0438\u043d\u0430 \u0443\u0435\u0437\u0436\u0430\u0435\u0442, \u0442\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 BBox \u043c\u0430\u0448\u0438\u043d\u044b \u0441 BBox \u043f\u0430\u0440\u043a\u043e\u043c\u0435\u0441\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0442\u044c\u0441\u044f \u0438 \u043f\u043e\u0441\u043b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u043e\u0433\u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431 \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0432\u0448\u0435\u043c\u0441\u044f \u043f\u0430\u0440\u043a\u043e\u043c\u0435\u0441\u0442\u0435. \u041b\u043e\u0433\u0438\u0447\u043d\u043e? \u041b\u043e\u0433\u0438\u0447\u043d\u043e! \u041d\u043e\u2026 \u0422\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u2026<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043c\u044b \u0441\u043d\u0438\u043c\u0430\u0435\u043c \u0447\u0435\u0442\u043a\u043e \u0441\u0432\u0435\u0440\u0445\u0443, \u0442\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0435\u0442, \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u044b\u0448\u0435. \u041d\u043e \u0435\u0441\u043b\u0438  \u043f\u043e\u0434 \u0443\u0433\u043b\u043e\u043c, \u0442\u043e \u0432\u043e\u0442 \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442: \u0442\u0430\u043a \u043a\u0430\u043a BoundingBoxes \u043e\u0442 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u043c\u0430\u0448\u0438\u043d \u043c\u043e\u0433\u0443\u0442 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u0442\u044c\u0441\u044f \u0441 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u043c\u0438 \u043f\u0430\u0440\u043a\u043e\u043c\u0435\u0441\u0442\u0430\u043c\u0438, \u0442\u043e \u0432 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u043e\u0434\u043d\u043e \u0438\u0437 \u043f\u0430\u0440\u043a\u043e\u043c\u0435\u0441\u0442 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f, \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0435 \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u0442 \u0435\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u043c\u0430\u0448\u0438\u043d \u0440\u044f\u0434\u043e\u043c \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u0435\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0434\u0432\u0430 \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430 (\u0441\u0432\u043e\u0451 \u0438 \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0432\u0448\u0435\u0435\u0441\u044f).<\/p>\n<figure class=\"\">\n<div><figcaption>\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 IoU=0.35<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u043e\u0442 \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u0435\u0441\u043b\u0438 \u043c\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u044d\u0442\u043e \u0432 \u0446\u0438\u0444\u0440\u0430\u0445:<\/p>\n<figure class=\"\">\n<div><figcaption>\u0423\u043c\u0435\u043d\u044c\u0448\u0430\u044e\u0449\u0435\u0435\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 IoU \u044d\u0442\u043e \u0443\u0435\u0437\u0436\u0430\u044e\u0449\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430, \u0430 IoU=0.35 \u044d\u0442\u043e \u043c\u0430\u0448\u0438\u043d\u0430 \u0441\u0442\u043e\u044f\u0449\u0430\u044f \u0440\u044f\u0434\u043e\u043c<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043e\u043f\u0440\u043e\u0441: \u043a\u0430\u043a \u00ab\u0432\u044b\u0442\u0430\u0449\u0438\u0442\u044c\u00bb \u043d\u0443\u0436\u043d\u043e\u0435 IoU \u0438 \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438, \u0447\u0442\u043e \u044d\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430\u0448\u0430 \u043c\u0430\u0448\u0438\u043d\u0430? \u0421\u0434\u0435\u043b\u0430\u0435\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432. \u0421\u043c\u044b\u0441\u043b \u0442\u0430\u043a\u043e\u0439: \u041f\u0435\u0440\u0432\u0430\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f &#8212; \u0431\u0435\u0440\u0435\u043c \u0432\u0441\u0435, \u0447\u0442\u043e \u043f\u043e IoU \u043c\u0435\u043d\u044c\u0448\u0435 0.4 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 0 (\u0437\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e\u0433\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0434\u0435\u0442\u0435\u043a\u0446\u0438\u0438 &#8212; \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 BoundingBox \u043c\u0430\u0448\u0438\u043d\u044b \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u043c\u0430\u0448\u0438\u043d\u044b \u0432 \u043a\u0430\u0434\u0440\u0435). \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u043e\u0442\u0441\u0435\u0447\u0435\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u043f\u043e IoU \u043c\u0435\u043d\u044c\u0448\u0435 0.15, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432 \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b IoU, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f BoundingBox, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u043e\u043f\u0430\u043b \u043f\u043e\u0434 \u043f\u0435\u0440\u0432\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435, \u0430 \u043f\u043e\u0442\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044f. \u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u0430\u0434\u0440\u044b \u0438 \u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u0440\u044f\u0434 (\u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 10 \u043a\u0430\u0434\u0440\u043e\u0432) \u0443 \u043d\u0430\u0441 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0430 \u0443\u0441\u043b\u043e\u0432\u0438\u044f, \u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u044d\u0442\u043e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e.<\/p>\n<p>\u0412\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u0447\u0435\u0445\u0430\u0440\u0434\u044b \u043a\u0430\u0434\u0440\u043e\u0432. \u0415\u0441\u043b\u0438 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u0443 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f BoundingBox \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442 \u043f\u0435\u0440\u0432\u043e\u043c\u0443 \u0443\u0441\u043b\u043e\u0432\u0438\u044e, \u0442\u043e \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0441\u0431\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043a\u0430\u0434\u0440\u043e\u0432 \u0434\u043b\u044f BoundingBox, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442 \u043e\u0431\u043e\u0438\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c. \u0422\u0443\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0442\u0430\u043d\u0446\u044b \u0441 \u0431\u0443\u0431\u043d\u043e\u043c. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d (\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439) \u0444\u0438\u043b\u044c\u0442\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0437\u0430 \u0447\u0435\u0445\u0430\u0440\u0434\u0443 BBoxes \u0438 \u043e\u0431\u043d\u0443\u043b\u044f\u0442\u044c \u0441\u0447\u0451\u0442\u0447\u0438\u043a free_parking_timer. \u042d\u0445, \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u043f\u0440\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u043a\u043e\u0434\u0430 \u043d\u0438\u0436\u0435 \u0441\u0442\u0430\u043d\u0435\u0442 \u044f\u0441\u043d\u0435\u0435 \ud83d\ude42<\/p>\n<pre><code class=\"python\">#IoU overlaps = compute_overlaps(np.array(parking_spaces), np.array(cars_boxes))  for parking_space_one, area_overlap in zip(parking_spaces, overlaps):          max_IoU = max(area_overlap)     sort_IoU = np.sort(area_overlap[area_overlap &gt; 0])[::-1] &nbsp; &nbsp; &nbsp;          if free_parking_space == False:                  if 0.0 &lt; max_IoU &lt; 0.4:              #\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u043a\u043e\u043c\u0435\u0441\u0442 \u043f\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044e 1: 0.0 &lt; IoU &lt; 0.4             len_sort = len(sort_IoU)              #\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u043a\u043e\u043c\u0435\u0441\u0442 \u043f\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044e 2: IoU &gt; 0.15             sort_IoU_2 = sort_IoU[sort_IoU &gt; 0.15]             len_sort_2 = len(sort_IoU_2)              #\u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0442\u043e\u0431\u044b \u0443\u0434\u043e\u0432\u043b\u044f\u0442\u0432\u043e\u0440\u044f\u043b\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044e 1 \u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044e 2             if (check_det_frame == parking_space_one) &amp; (len_sort != len_sort_2):                 #\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u0430\u0434\u0440\u044b \u043f\u043e\u0434\u0440\u044f\u0434 \u0441 \u043f\u0443\u0441\u0442\u044b\u043c\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438                 free_parking_timer += 1              elif check_det_frame == None:                 check_det_frame = parking_space_one              else:                 #\u0424\u0438\u043b\u044c\u0442\u0440 \u043e\u0442 \u0447\u0435\u0445\u0430\u0440\u0434\u044b \u043c\u0435\u0441\u0442 (\u0435\u0441\u043b\u0438 \u043c\u0435\u0441\u0442\u043e \u0447\u0435\u0440\u0435\u0434\u0443\u0435\u0442\u0441\u044f, \u0442\u043e \"\u0441\u043a\u0430\u0447\u0435\u0442\")                 free_parking_timer_bag1 += 1                 if free_parking_timer_bag1 == 2:                     #\u041e\u0431\u043d\u0443\u043b\u044f\u0435\u043c \u0441\u0447\u0451\u0442\u0447\u0438\u043a, \u0435\u0441\u043b\u0438 \u043f\u0430\u0440\u043a\u043e\u043c\u0435\u0441\u0442\u043e \"\u0441\u043a\u0430\u0447\u0435\u0442\"                     check_det_frame = parking_space_one                     free_parking_timer = 0              #\u0415\u0441\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 10 \u043a\u0430\u0434\u0440\u043e\u0432 \u043f\u043e\u0434\u0440\u044f\u0434, \u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c, \u0447\u0442\u043e \u043c\u0435\u0441\u0442\u043e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e             if free_parking_timer == 10:                 #\u041f\u043e\u043c\u0435\u0447\u0430\u0435\u043c \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e                 free_parking_space = True                 free_parking_space_box = parking_space_one                 #\u041e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0440\u0430\u043c\u043a\u0443 \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430                  x_free, y_free, w_free, h_free = parking_space_one<\/code><\/pre>\n<p>\u0418 \u0432\u043e\u0442 \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u0442\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0441\u043e\u0431\u043b\u044e\u0434\u0435\u043d\u044b \u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 10 \u043a\u0430\u0434\u0440\u043e\u0432, \u043c\u044b \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043c\u0435\u0442\u0438\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 BBox \u043a\u0430\u043a \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0444\u043b\u0430\u0433 free_parking_space \u0432 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 True.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0430\u0431\u043e\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0442\u043e\u0438\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0432\u0435\u0449\u044c: \u0435\u0441\u043b\u0438 free_parking_space=True, \u043d\u043e \u043f\u0430\u0440\u043a\u043e\u0432\u043e\u0447\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442, \u0442\u043e \u0443 \u043d\u0430\u0441 \u043e\u043f\u044f\u0442\u044c \u043d\u0435\u0442 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \ud83d\ude41<\/p>\n<pre><code class=\"python\">#\u0415\u0441\u043b\u0438 \u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442, \u0442\u043e \u043f\u043e\u043c\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u043c\u0435\u0441\u0442 overlaps =<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-348119","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/348119","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=348119"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/348119\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=348119"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=348119"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=348119"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}