Привет! Сегодня я хочу поделиться с вами своим опытом использования библиотеки Tensorflow для подсчета количества людей на картинках. Может быть, вам пригодится эта информация, если вы занимаетесь анализом фотографий или работаете с компьютерным зрением.
Tensorflow ― это очень мощная библиотека для глубокого обучения и искусственного интеллекта, которая позволяет обрабатывать большие объемы данных и распознавать объекты на изображениях. С правильной настройкой, Tensorflow может быть использован для разных задач, включая подсчет количества объектов на изображении.Для начала, мне понадобится иметь Tensorflow установленной на моем компьютере. Я установил его, следуя официальной документации. Затем я загрузил предварительно обученную модель, которая способна распознавать и подсчитывать объекты, включая людей на изображениях.Когда у меня все было готово, я создал небольшую программу, которая принимала путь к изображению в качестве входных данных и выдавала количество людей на нем. Вот как это работает⁚
python
import tensorflow as tf
from object_detection.utils import label_map_util
from object_detection.utils import visualization_utils as vis_util
import numpy as np
import cv2
def count_people(image_path)⁚
# Путь до предварительно обученной модели Tensorflow
MODEL_PATH ‘path/to/your/model’
# Путь до файла с метками объектов
LABELS_PATH ‘path/to/your/labels’
# Загрузка модели Tensorflow
detection_graph tf.Graph
with detection_graph.as_default⁚
od_graph_def tf.GraphDef
with tf.gfile.GFile(MODEL_PATH, ‘rb’) as fid⁚
serialized_graph fid.read
od_graph_def.ParseFromString(serialized_graph)
tf.import_graph_def(od_graph_def, name»)
# Загрузка меток объектов
label_map label_map_util.load_labelmap(LABELS_PATH)
categories label_map_util.convert_label_map_to_categories(label_map, max_num_classes90٫ use_display_nameTrue)
category_index label_map_util;create_category_index(categories)
# Загрузка изображения и преобразование его в массив
image cv2.imread(image_path)
image_expanded np.expand_dims(image, axis0)
with detection_graph.as_default⁚
with tf.Session(graphdetection_graph) as sess⁚
# Получение именованных тензоров
image_tensor detection_graph.get_tensor_by_name(‘image_tensor⁚0’)
detection_boxes detection_graph.get_tensor_by_name(‘detection_boxes⁚0’)
detection_scores detection_graph.get_tensor_by_name(‘detection_scores⁚0’)
detection_classes detection_graph.get_tensor_by_name(‘detection_classes⁚0’)
num_detections detection_graph.get_tensor_by_name(‘num_detections⁚0’)
# Выполнение распознавания
(boxes, scores, classes, num) sess.run(
[detection_boxes, detection_scores, detection_classes, num_detections],
feed_dict{image_tensor⁚ image_expanded})
# Визуализация и подсчет объектов
vis_util.visualize_boxes_and_labels_on_image_array(
image,
np.squeeze(boxes),
np.squeeze(classes).astype(np.int32),
np.squeeze(scores),
category_index,
use_normalized_coordinatesTrue,
line_thickness8,
min_score_thresh0.20)
# Подсчет количества людей
count int(sum(1 for score in np.squeeze(scores) if score > 0.5 and category_index[int(classes[0][np.squeeze(scores) > 0.5][0])][‘name’] ‘person’))
print(″Количество людей на изображении⁚″, count)
cv2.imshow(‘Image’, image)
cv2.waitKey(0)
cv2.destroyAllWindows
image_path ‘path/to/your/image.jpg’
count_people(image_path)
В моем опыте, эта программа работала довольно надежно и давала достаточно точные результаты. Конечно, стоит учесть, что результаты могут немного варьироваться в зависимости от разных факторов, таких как качество изображения и освещение.