Как подсчитывать на видео проходящих людей по головам?

Здравствуйте! Мне нужно реализовать программу, которая подсчитывает прошедших людей на видео, как в этой статье https://pysource.com/2021/12/07/how-to-count-peopl... . Если кто то знает где можно найти готовые веса для от предварительно обученной модели на датасете голов людей я буду очень благодарен!
  • Вопрос задан
  • 615 просмотров
Пригласить эксперта
Ответы на вопрос 4
@rPman
Боюсь ты не найдешь готовых решений
Мало того, тут нужно искать размеченный датасет голов людей и радоваться этому богатству

Решение для тебя - берешь несколько сотен тысяч видео (разные времена года), нанимаешь десяток человек в помощники и садишься размечать, затем берешь готовые решения по нейронкам, арендуешь на недельку себе кластер с gpu или на месяц другой игровую видеокарту и вперед с примерами от pytorch пилишь результат.

Теперь советы - прежде чем работать с нейронкой, попробуй другие решения, например благодаря тому что видеокамеры у тебя не двигаются, ты можешь получать объекты через разницу дефолтной картинки и текущей (так же можно просто считать по каждому пикселу гистограмму частоты значения интенсивности во времени (лучше брать HSV а не RGB) и вычитать из текущего изображения те цвета, что дольше всего на видео (осторожно в час пик магазин может часами быть битком забитый), добавляешь сюда алгоритмы локального детекта движений (строится карта векторов по всему изображению), т.е. ты можешь с высокой точностью детектировать кусок кадра на основе видео (несколько соседних кадров) который однозначно можно считать человеком (или несколькими), и вот уже вырезая их ты можешь начинать разметку видео для нейронки

p.s. после того как ты на все это портатишь от нескольких сотен тысяч рублей до миллионов, к тебе подойдет такой же как ты сейчас и скажет, а дай мне готовые веса твоей нейронки... куда ты его вежливо пошлешь?
Ответ написан
Stalker_RED
@Stalker_RED
Комментировать
@kalsc12345
Неизвестный человек.
Кхм посути можно OpenCV заюзать
import cv2

# загружаем файл видео
cap = cv2.VideoCapture('video.mp4')

# создаем объект HOG для обнаружения людей
hog = cv2.HOGDescriptor()
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())

# инициализируем счетчик
count = 0

# начинаем чтение видео кадр за кадром
while True:
    ret, frame = cap.read()
    if not ret:
        break

    # обнаруживаем людей на кадре
    boxes, weights = hog.detectMultiScale(frame)

    # рисуем прямоугольники вокруг обнаруженных людей
    for box in boxes:
        x, y, w, h = box
        cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)

    # увеличиваем счетчик на количество обнаруженных людей
    count += len(boxes)

    # выводим количество обнаруженных людей на кадре
    cv2.putText(frame, f"Count: {count}", (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)

    # показываем кадр
    cv2.imshow('frame', frame)

    # останавливаем цикл, если нажата клавиша "q"
    if cv2.waitKey(1) == ord('q'):
        break

# освобождаем ресурсы
cap.release()
cv2.destroyAllWindows()
Ответ написан
Revencu
@Revencu
Может для таких целей использовать инфракрасную камеру и обрабатывать цвета тепловых излучений?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы