окрестности
- убунту 18.04 64 бит
- GTX 1070Ti
- anaconda with python 3.7
- pytorch 1.6.0 + CUDA 10.1
- fast-reid 1.3.0
предисловие
FastReID
JD.comAI
исследовательский институтSOTA
КлассReID
Платформа для исследования алгоритмов, а также самая полная и производительная на данный момент.ReID
Набор инструментов, включая обучение модели, оценку модели, тонкую настройку модели и развертывание модели. Раздел обучения поддерживает не только одиночную карту, но и мультикарту.GPU
обучение, а также поддерживает обучение на нескольких машинах (multiple machines
).
FastReID
не только для пешеходовReID
, но и для других объектов, таких как транспортные средства.ReID
, наборы данных обучаемых транспортных средств по умолчанию включаютVeRi
,VehicleID
иVERIWild
, сценарии применения очень широки.
Архитектура
Это схема архитектуры системы, вырезанная из его статьи.
Приведенный выше рисунок содержит 2 части: часть обучения и часть вывода.
Учебная часть включает в себя
-
Pre-processing
то есть предварительная обработка, включая различные методы увеличения данных, такие какResize
,Flipping
,Random erasing
,Auto-augment
,Random patch
,Cutout
Ждать -
Backbone
магистральная сеть, напримерResNet
,ResNest
,ResNeXt
,IBN(Instance Batch Normalization)
,Non-local
-
Aggregation
То есть агрегация, которая объединяет функции, созданные магистральной сетью, в глобальную функцию, такую какAttention
,Gem Pooling
,Avg Pooling
,Max pooling
-
Head
Модуль для нормализации и уменьшения широты сгенерированных глобальных признаков -
Loss
часть, в том числеCross-entropy loss
,Triplet loss
,Arcface loss
,Circle loss
-
Кроме того, с точки зрения стратегии обучения мы используем включение
Learning rate
,warm-up
,Backbone freeze
,Consine decay
В мотивировочную часть входят
-
Distance Metric
Метрика расстояния, поддерживает евклидово расстояние, косинус иDeep Spatial Reconstruction(DSR)
-
Post processing
Постобработка,K-reciprocal
иQuery Expansion(QE)
повторяющийся
Создайте новую виртуальную среду
conda create -n pytorch1.6 python=3.7
conda activate pytorch1.6
Затем перейдите к исходному коду, текущая стабильная версияv1.3.0
wget https://github.com/JDAI-CV/fast-reid/archive/refs/tags/v1.3.0.zip
unzip v1.3.0.zip
cd fast-reid-1.3.0
Наконец, установите другие зависимости
# 如果没有gpu的话,就pip install torch torchvision即可
pip install torch==1.6.0+cu101 torchvision==0.7.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html
pip install -r docs/requirements.txt
# 使用cython加速
pip install cython
cd fastreid/evaluation/rank_cylib
make all
обучение и проверка
FastReID
Различные наборы данных уже поддерживаются изначально, напримерMarket-1501
,DukeMTMC
,MSMT17
,VehicleID
,VeRi
иVERIWild
. Набор данных по умолчанию хранится вdataset
папку, ну и конечно же через переменные окруженияFASTREID_DATASETS
указать другие каталоги или сделать ссылку на реальный каталог данных с помощью программных ссылок.
Здесь мы используемMarket-1501
Возьмите набор данных в качестве примера для обучения, сначала загрузите набор данных
Ссылка на сайт:disk.baidu.com/is/1i9loveZX-E…
Код извлечения:up8x
После загрузки извлеките его в каталогdataset
Ниже структура каталогов выглядит так
(pytorch1.6) xugaoxiang@1070Ti:~/workshop/fast-reid-1.3.0/datasets$ tree -d
.
└── Market-1501-v15.09.15
├── bounding_box_test
├── bounding_box_train
├── gt_bbox
├── gt_query
└── query
6 directories
Затем вы можете тренироваться, используя команду
python tools/train_net.py --config-file ./configs/Market1501/bagtricks_R50.yml
Оцените обученную модель
python tools/train_net.py --config-file ./configs/Market1501/bagtricks_R50.yml --eval-only MODEL.WEIGHTS "logs/market1501/bagtricks_R50/model_final.pth"
Визуализация результатов обучения
python ./demo/visualize_result.py --config-file "configs/Market1501/AGW_R50.yml" --vis-label --dataset-name 'Market1501' --output 'logs/market1501/agw_R50/agw_market1501_vis' --opts MODEL.WEIGHTS "logs/market1501/agw_R50/model_final.pth"
сообщил об ошибке здесь
Traceback (most recent call last):
File "demo/visualize_result.py", line 127, in <module>
distmat = distmat.numpy()
TypeError: can't convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.
мы модифицируемdemo/visualize_result.py
L127 в
distmat = distmat.numpy()
изменить на
distmat = distmat.cpu().numpy()
Я отправил в официальный репозиторийpr
, надеюсь, что это может быть объединено. Затем мы снова выполняем приведенный выше скрипт.
результаты сохраняются вlogs/market1501/agw_R50/agw_market1501_vis
Вниз
Конвертировать в другие форматы
FastReID
предоставляет рядpython
Скрипт, который поможет вам быстро внедритьfastreid
конвертировать модель в другие форматы, такие какCaffe
,ONNX
,TRT
Ждать
Здесь мы беремonnx
Например, взгляните на конкретные шаги
python tools/deploy/onnx_export.py --config-file configs/Market1501/bagtricks_R50.yml --name baseline_R50 --output onnx_model --opts MODEL.WEIGHTS logs/market1501/bagtricks_R50/model_final.pth
После конвертации мы готовим несколько фотографий одного и того же человека и помещаем их вinput
в папке
выполнить следующий
python tools/deploy/onnx_inference.py --model-path onnx_model/baseline_R50.onnx --input input/*.jpg --output onnx_output