Демистификация серии блогов Clearview AI (код и данные)

Установив Conda и Git, вы можете легко загружать и запускать модели глубокого обучения ResNet и DenseNet, используемые в CCTView, прямо со своего компьютера на реальных кадрах видеонаблюдения.

Вы также можете быстро использовать блокнот Jupyter, чтобы поэкспериментировать с различными моделями, алгоритмами сопоставления транспортных средств или выполнить собственную обработку изображений.

Репозиторий github.com/samdbrice/cctview содержит полнофункциональные демонстрации моделей, кода и других данных, на которые ссылается серия.

Клонирование и установка с GitHub

Чтобы запустить примеры моделей, кода и блокнотов, клонируйте репозиторий из GitHub, затем создайте новую среду Conda на основе включенного файла environment.yml.

Требования:

# (1) Clone the repository and data...
git lfs install && git clone https://github.com/samdbrice/cctview.git 
# (2) Install and activate environment
cd cctview
conda env create -n cctview -f environment.yml
conda activate cctview

Примечание. Для загрузки файлов состояния models и встроенных файлов 7_ требуется хранилище больших файлов Git (LFS).

Запуск примера сценария

После установки и активации включенной среды вы можете запустить скрипт code/example.py со своего компьютера с помощью pythonw.

Примечание. pythonw автоматически окажется на вашем пути. Это оболочка для команды python, предназначенная для того, чтобы matplotlib работала правильно на разных платформах.

pythonw code/example.py

Пример сценария использует изображения из каталога examples для демонстрации трех основных модулей в пакете кода cctview:

Игра с блокнотом Jupyter

После установки и активации включенной среды вы можете запустить сервер Jupyter Notebook, выполнив:

jupyter notebook

Изнутри Jupyter перейдите в каталог notebooks, затем откройте файл Working With Sample Data.ipynb.

Модуль обнаружения — остаточная сеть

Обнаружение объектов реализовано с использованием модели типа ImageAI RetinaNet.

В базовую модель загружаются веса из models/resnet50_coco_best_v2.0.1.h5 на основе 50-слойной ResNet, обученной на наборе данных COCO.

Модуль извлечения — плотная сверточная сеть

Признаки объектов, обнаруженных с помощью модели RetinaNet, извлекаются с использованием предпоследнего слоя CNN DenseNet.

PyTorch используется для загрузки весов из models/VeRI_densenet_ft50.pth на основе архитектуры Densenet201, настроенной с использованием набора данных VerI.

Модуль соответствия — метрика евклидова расстояния

Как обсуждалось ранее в этой серии, идеальное сопоставление и алгоритм ReID должны быть основаны на ранжировании Track-to-Track. Модуль Match демонстрирует элементарную реализацию сопоставления, основанную на минимальном евклидовом расстоянии между двумя точками.

Объекты, извлеченные в features.json, представляют собой точки, основанные на декартовых координатах в n-мерном евклидовом пространстве, формула расстояния:

Сопоставитель вычисляет расстояния от всех объектов в пределах базового кадра до всех объектов в списке целевых кадров. Он также группирует изображения для каждого базового объекта и их кандидатов в новый каталог с именем matches.

Необработанные кадры, обнаружения и данные о функциях

Кодовая база содержит небольшое подмножество предварительно обработанных данных, заархивированных внутри каталога data.

data
├── [8.6M]  253-134-S.zip
├── [ 20M]  689-640-S.zip
├── [ 43M]  731-679-N.zip
├── [ 51M]  732-680-N.zip
├── [8.1M]  733-681-N.zip
└── [ 22M]  735-683-N.zip

Полный набор данных для каждой камеры FDR, включая обнаружение и извлечение признаков (примерно 10 ГБ), хранится в следующих внешних репозиториях:

Необработанные кадры с камер видеонаблюдения

Репозиторий github.com/samdbrice/cctview-data-videos — hourly отдельно содержит необработанные почасовые кадры видеонаблюдения со вторника, 5 мая 2020 года, с 13:00 до полуночи.

"Оглавление"

Предыдущая: Резюме