Нид хелп :)

#1
by poisoh - opened

Добрый день. Как можно с Вами связаться?
Начинающий пользователь AI. Хотелось бы большему научиться и создавать для собственных потребностей вашу разработку.

This comment has been hidden

Добрый, как я понимаю, проблема решена?

Garon16 changed discussion status to closed

Частично решена. Интересуюсь в общем этой темой и хотелось бы для сосбвтенных нужд реализовать кое что. Как можно с Вами связаться, если сможете оказать небольшую коснультацию и направить куда надо :)

Можешь писать сюда, если смогу подсказать, подскажу

Возможно ли на простом TV BOX Armbian запустить распознавание номеров авто? У нас в хозяйстве много сельхозтехники. Хочу регистрировать въезд выезд с территории данной техники.
Hikvosion rtsp + tv box + home assistant + telegram.
Всё это находится в ебенях с плохой связью. Сотовая связь через усилители. Максимум телега работает.

А номера какого формата? как нестандартные номера обычных машин(квадратные, как на новых китайцах сзади делают)? или стандартные? Важен цвет и форма

так же, по поводу вопроса о запуске, какая конкретно машина(какой процессор и сколько оперативы, если знаешь)?

Garon16 changed discussion status to open

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 модель, попробую её отыскать и залить сюда, такое изображение она распознавала верно.
О211МТ790.jpg
Опять же, мне желательно увидеть, как выглядит изображение, что бы я мог сказать, подходят ли мои модели.
Не совсем понял про разные алгоритмы распознавания. Если в общем сам процесс, то я пробовал разное, если не всё, и мне среднее качество не понравилось, в сравнении с очень лёгкой моделькой, которую я обучил(получение текста с изображения).
Вот все действия, что я делаю перед распознаванием самого номера с уже вырезанной картинки
{EAE5D81E-DE89-4459-971C-A9E78BDDD969}.png

Вот инструкция, к сожалению в виде файла сюда её не скинуть, только текстом
Конвертация 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
В моём случае результат вызова выглядит так
{6CF4CE1A-DDF4-4456-BF4D-336D55F547FF}.png
По итогу у нас рядом с файлом 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:
{78FA025A-E18D-4D27-8B0E-D92E9763E234}.png
Вот NPU:
{CDCB1E41-6C54-42B9-8560-7B035053680A}.png

опять же напомню, что это о другой модели, но сам процесс, как я понимаю, для моей модели не легче

я думаю, что нам обоим будет проще переместится в телегу, если это возможно. Тут переписку не очень удобно вести

This comment has been hidden
This comment has been hidden
This comment has been hidden

Написал, правда, если там будет питон постарее 3.11 придётся чутка пошаманить с keras/tensorflow

poisoh changed discussion status to closed
poisoh changed discussion status to open

Sign up or log in to comment