Импульсная нейросеть для детекции объектов дорожной обстановки с использованием событийной камеры.
Применяются открытые библиотеки PyTorch и norse. Поддерживаются датасеты GEN1 и 1Mpx.
Документация: kirillhit.github.io/snn_for_object_detection
Скачайте репозиторий:
git clone https://github.com/KirillHit/snn_for_object_detection.git --recurse-submodules
cd snn_for_object_detection
Создайте виртуальное окружение с помощью conda:
conda env create -f environment.yml
conda activate soda_env
Перед запуском необходимо скачать один из наборов данных Gen1 или 1Mpx, создать в директории проекта папку data
, и перенести в нее данные в соответствии с шаблоном /data/<"gen1" или "1mpx">/<"*_bbox.npy" и "*_td.dat">
Для запуска доступно несколько сценариев. Выбор сценария, изменение размера пачки и настройка других параметров обучения осуществляется в файле конфигурации. Для тестов следует выбрать интерактивное обучение.
Далее запустите сценарий:
python3 main.py
В данный момент проводятся эксперименты с различными архитектурами и методами обучения. Этот пример относиться к сети версии 0.4.1. Сеть основана на архитектуре YOLOv8 и имеет 3M параметров.
Для обучения использовались пачки из 5 примеров длительностью в 32 кадра. Временной шаг между кадрами составляет 16 мс, что примерно соответствует 60 fps. Удалось достигнуть точности 22.8 mAP@0.5. График обучения сети:
Для ускорения прототипирования была реализована система генерации моделей, которая позволяет быстро проектировать и тестировать разные архитектуры и модули.
Пример описания простой сверточной сети в коде:
def vgg_block(out_channels: int, kernel: int = 3):
return Conv(out_channels, kernel), Norm(), LIF()
cfgs: ListGen = [
*vgg_block(8), Pool("S"), *vgg_block(32), Pool("S"), *vgg_block(64), Pool("S")
]
Подробнее о генераторе моделей смотри здесь.