Нид хелп :)
Добрый день. Как можно с Вами связаться?
Начинающий пользователь AI. Хотелось бы большему научиться и создавать для собственных потребностей вашу разработку.
Done!
Добрый, как я понимаю, проблема решена?
Частично решена. Интересуюсь в общем этой темой и хотелось бы для сосбвтенных нужд реализовать кое что. Как можно с Вами связаться, если сможете оказать небольшую коснультацию и направить куда надо :)
Можешь писать сюда, если смогу подсказать, подскажу
Возможно ли на простом TV BOX Armbian запустить распознавание номеров авто? У нас в хозяйстве много сельхозтехники. Хочу регистрировать въезд выезд с территории данной техники.
Hikvosion rtsp + tv box + home assistant + telegram.
Всё это находится в ебенях с плохой связью. Сотовая связь через усилители. Максимум телега работает.
А номера какого формата? как нестандартные номера обычных машин(квадратные, как на новых китайцах сзади делают)? или стандартные? Важен цвет и форма
так же, по поводу вопроса о запуске, какая конкретно машина(какой процессор и сколько оперативы, если знаешь)?
Tv box H96 Max 4Gb/32Gb, CPU RK3318, Wi-Fi. Или подобный. Найду под нужную сборку армбиана. Есть ли смысл проверить на работоспособность Google coral usb на данном комплекте? Даст же прирост хороший при наличии какой-то там видеосистемы на борту.
Пробовать возиться с этим кошмаром?
Можно взять камеры с определением автомобиля в кадре и загрузке по фтп картинки. Остаётся лишь выделить номер и распознать.
Выделение номера в кадре протестировал и классификация на мент или не мент, видел.
Далее уже разные алгоритмы для распознавания? От цвета? Или коррекция идёт серых тонов после инвертирования.
Баловался системой frigate+ как в докере, так и файлово + home assistant.
Работал с готовой системой распознавания лиц сотрудников.
Оперативки в машинке хватить должно, но вот с производительностью не знаю, если моментальное реагирование не требуется, то в принципе должно завестись(правда я на таких скромных процессорах не проверял, точно ничего сказать не могу).
Про корал не скажу, если он работает как внешний NPU, то это ад, по крайней мере на моём опыте с RK3566 с встроенным NPU главная проблема конвертировать модели в их формат, работало в принципе прекрасно, на orange pi 3b с процом, лишь чуть лучше приставочной, модель тянуло со скоростью, равной настольному процу. Следующим комментом отправлю свою инструкцию по конвертации YoloV8 модели на этот NPU(не этой модели, моя текущая модель - трансформер, а для них жопа с конвертацией сильно больше), для понимания масштаба жопы.
Фтп или ртсп в принципе разницы нет, это уже от того, как будет проще тебе. Но мне кажется, лучше ртсп
По поводу распознавания, я для себя тренировал небольшую tensorflow модель, попробую её отыскать и залить сюда, такое изображение она распознавала верно.
Опять же, мне желательно увидеть, как выглядит изображение, что бы я мог сказать, подходят ли мои модели.
Не совсем понял про разные алгоритмы распознавания. Если в общем сам процесс, то я пробовал разное, если не всё, и мне среднее качество не понравилось, в сравнении с очень лёгкой моделькой, которую я обучил(получение текста с изображения).
Вот все действия, что я делаю перед распознаванием самого номера с уже вырезанной картинки
Вот инструкция, к сожалению в виде файла сюда её не скинуть, только текстом
Конвертация Yolov8 сначала в onnx потом в rknn для rk3566
Инструкция к конвертации .pt(YoloV8) в onnx
Ultralytics 8.2.87
Python 3.8.10
Windows 11
Устанавливаю yolo сразу с onnx
git clone https://github.com/airockchip/ultralytics_yolov8
cd ultralytics_yolov8
requirement.txt — раскомментить onnx
./bin/python3 -m pip install -r requirements.txt
./bin/python3 setup.py install
Код питона
from ultralytics import YOLO
model = YOLO('best.pt') #Модель
path = model.export(format='rknn')
Получается onnx модель
Конвертация onnx в rknn
Далее, переходим на машину или wsl, где установлена 22 убунта, туда устанавливаем python 3.10, у меня заработало с 3.10.12.
Создаём venv
Python3.10 –m venv venv
Source venv/bin/activate
git clone https://github.com/airockchip/rknn-toolkit2
git checkout v1.5.0 (в данном случае 1.5.0 т.к. только она у меня завелась после конвертации на npu rk3566)
После этого
cd rknn-toolkit2/packages/
там запускаем
pip install rknn_toolkit2-1.5.0+1fa95b5c-cp310-cp310-linux_x86_64.whl
Где:
1.5.0 – версия тулкита, я использовал 1.5.0,
cp310-cp310 – версия python, в данном случае 3.10
ну и linux – платформа, у нас ubuntu и вероятно для других платформ whl вы не найдёте
После того как у вас всё встало, возможно на этом моменте будет одна две ошибки, нужно будет доставить apt, на которые будет жаловаться, это может быть cmake или h5py, может оба, а может что то ещё.
apt install cmake
apt install libhdf5-dev
После того, как всё встало(whl установился без ошибок), пишем
sudo apt install libgl1-mesa-glx
Создаём txt файл и пишем туда название 1 изображения из датасета, на котором училась модель(не проверял, но есть мнение, что можно вообще рандомное изображение с нужным объектом положить)
nano dat.txt
test.jpg
Сохраняем, скидываем к нашему файлу dat.txt нужное изображение и даём ему имя выше,
Далее, создаём файл main.py
nano main.py
Внутрь него пишем
from rknn.api import RKNN
Создание объекта RKNN
rknn = RKNN()
Загрузка модели ONNX
rknn.config(mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]], target_platform='rk3566')
ret = rknn.load_onnx(model='test.onnx')
if ret != 0:
print('Load ONNX model failed!')
exit(ret)
Конвертация модели
ret = rknn.build(do_quantization=True, dataset='dat.txt') # Установите do_quantization=True для квантизации
if ret != 0:
print('Build RKNN model failed!')
exit(ret)
Сохранение модели RKNN
ret = rknn.export_rknn('save_model.rknn')
if ret != 0:
print('Export RKNN model failed!')
exit(ret)
Освобождение ресурсов
rknn.release()
Пишем
Python3.10 main.py
В моём случае результат вызова выглядит так
По итогу у нас рядом с файлом main.py появляется файл save_model.rknn
Теперь осталась часть на устройстве с npu(у меня это orange pi 3b с rk3566)
Итоговый запуск детекции(в моём случае) на npu
Не уверен, нужно ли это, но на всякий случай поставил тоже убунту 22, поставил python 3.10.12(стоял вместе с убунтой)
Далее
Создаём venv
Python3.10 –m venv venv
Source venv/bin/activate
git clone https://github.com/airockchip/rknn-toolkit2
git checkout v1.5.0 (версия должна быть та же, на которой у вас получилось сконвертировать модель)
После этого
cd rknn-toolkit2/rknn_toolkit_light2/packages/
там запускаем
pip install rknn_toolkit_lite2-1.5.0-cp310-cp310-linux_aarch64.whl
Далее кидаем в одно место rknn модель, которую получили ранее, так же любое тестовое изображение
Создаём файл, в котором будем тестить инфер
nano main.py
Нужно учитывать, что у модели rknn результат будет в виде тензоров, поэтому берём код из репозитория rknn_model_zoo/exmples/python/yolov8/yolov8.py
Итоговый код main.py
Все venv(вместе с пометками, в каком окружении и для чего), которые были созданы для этого процесса, будут на гите
Время CPU infer:
Вот NPU:
опять же напомню, что это о другой модели, но сам процесс, как я понимаю, для моей модели не легче
я думаю, что нам обоим будет проще переместится в телегу, если это возможно. Тут переписку не очень удобно вести
Написал, правда, если там будет питон постарее 3.11 придётся чутка пошаманить с keras/tensorflow