Конфигурация среды
- установить протобуф
sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple protobuf==3.8.0
- установить onnx
sudo apt-get install protobuf-compiler libprotoc-dev
- установить подушку
sudo pip3 install Pillow
- Установите pycuda: если следующий скрипт не может быть установлен, см. [[Jetson Nano устанавливает pycuda (наступая на яму)]]
export PATH=/usr/local/cuda/bin:\${PATH}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:\${LD_LIBRARY_PATH}
sudo pip3 install pycuda
- установить numpy
sudo pip3 install numpy
запустить TRT-yolov3
- Загрузите файлы конфигурации и файлы весов в
TRT-yolov3/yolov3_onnx/
середина
также можно использовать
TRT-yolov3/yolov3_onnx/download.sh
Загрузите или просмотрите файл для выборочной загрузки (вы знаете, это очень медленно, не забудьте найти способ ускорить, я нашел два для вас)
- Исправлять
download.sh
файл, оставьте только следующие части, выполните скриптsudo ./download.sh
#!/bin/bash
set -e
echo
echo "Creating YOLOv3-Tiny-288 and YOLOv3-Tiny-416 configs..."
cat yolov3-tiny.cfg | sed -e '8s/width=416/width=288/' | sed -e '9s/height=416/height=288/' > yolov3-tiny-288.cfg
echo >> yolov3-tiny-288.cfg
ln -sf yolov3-tiny.weights yolov3-tiny-288.weights
cp yolov3-tiny.cfg yolov3-tiny-416.cfg
echo >> yolov3-tiny-416.cfg
ln -sf yolov3-tiny.weights yolov3-tiny-416.weights
echo
echo "Done."
Только следующее
yolov3-tiny-416为例
, оба шага медленные, наберитесь терпения
- будет
.cfg
преобразовать в.onnx
python3 yolov3_to_onnx.py --model yolov3-tiny-416
- будет
.onnx
преобразовать в.trt
python3 onnx_to_tensorrt.py --model yolov3-tiny-416
проверить (определить)
【видео】
python3 detector.py --file --filename data/test.mp4 --model yolov3-tiny-416 --runtime
【камера】
будетtrt-yolov3-detector-camera.pyсценарий вTRT-yolov3/
каталог и замените абсолютный путь десятой строки
Выполните скрипт напрямую, чтобы вызвать камеру для идентификации
Замена модели (деталь)
Если TRT-yolov3 был успешно пройден,теоретически часть можно пропустить.Эта часть находится в процессе наступления на яму самостоятельно.До того, как я нашел проект TRT-yolov3, я нашел действие частичной декомпозиции метода преобразования модели , Если вы хотите более подробно, шаг за шагом Узнайте, как получить от
.cfg
преобразовать в.trt
Да, вы можете продолжить чтение
Основная идея состоит в том, чтобы сделать йоло оригинальным.cfg
Файл конфигурации преобразуется в TensorRT для использования.trt
документ
yolov3-tiny -> onnx
- Создайтеyolov3_tiny_to_onnx.pyдокумент
- Подготовить конфигурацию модели
.cfg
файлы и веса.weights
файл в том же каталоге, что и скрипт py
Я использую прямой
yolov3-tiny
Переименуйте два файла Два файла должны иметь одинаковое имя, напримерyolov3-tiny-416.cfg
иyolov3-tiny-416.weights
- Выполните следующий скрипт, чтобы сгенерировать
.onnx
Файл конфигурации модели
python3 yolov3_tiny_to_onnx.py --model yolov3-tiny-416
【Об этом.cfg
инструкция】
Я немного модифицировал исходный py-файл, оригинальный py может читать только конфигурационные файлы слоев 288, 416 и 608. Здесь это ограничение снято, но пока неясно, в чем будет проблема.
Но файл cfg по-прежнему имеет определенные ограничения формата.
- Между каждым слоем есть только одна пустая строка
[convolutional]
batch_normalize=1
[maxpool]
size=2
- Последние два элемента в первом слое [net] изменены на
steps=400000
scales=.1
- В конце файла cfg есть только две пустые строки.
onnx -> trt
- Создайтеonnx_to_tensorrt.pyдокумент
- Выполните следующий скрипт, чтобы сгенерировать
.trt
файл модели
python3 onnx_to_tensorrt.py —model yolov3-tiny-416
Resource
- Jetson Nano использует ускорение yolov3-tiny и TensorRT для обнаружения и распознавания целей почти в реальном времени
- trt-yolov3: признание yolov3-tiny на Jetson Nano (завершено) - Мой блог Always Hungry - Блог CSDN
- Сам подробно не читал, но логика от начала до конца относительно ясна:(Супер подробно) Ускорение yolov3-tiny с помощью TensorRT, 3 мс/кадр после ускорения