Демистификация серии блогов 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 ГБ), хранится в следующих внешних репозиториях:
- https://github.com/samdbrice/cctview-data-frames--735-683-N
- https://github.com/samdbrice/cctview-data-frames--733-681-N
- https://github.com/samdbrice/cctview-data-frames--732-680-N
- https://github.com/samdbrice/cctview-data-frames--731-679-N
- https://github.com/samdbrice/cctview-data-frames--689-640-S
- https://github.com/samdbrice/cctview-data-frames--253-134-S
Необработанные кадры с камер видеонаблюдения
Репозиторий github.com/samdbrice/cctview-data-videos — hourly отдельно содержит необработанные почасовые кадры видеонаблюдения со вторника, 5 мая 2020 года, с 13:00 до полуночи.