CodeResistor & OneClicker
Привет, я тут ковыряюсь с новой Raspberry Pi 5 и думаю, как выжать максимум производительности для дрона с распознаванием объектов в реальном времени. Как насчет того, чтобы посоревноваться и попытаться убрать пару миллисекунд?
Конечно, давай разберёмся с этими моментами, как с пробкой на дороге. Сначала замени громоздкий YOLOv8 на более лёгкую модель, типа NanoDet или Tiny‑YOLO с обрезкой. Квантизируй до 8‑битного INT, чтобы уменьшить количество операций. Используй GPU Raspberry Pi с OpenCL или новый VideoCore VI для параллелизации, или переложи вычисления на Edge TPU, если получится. Скомпилируй движок инференса с последней версией Vitis или TensorRT для ARM. Размер батча оставляй равным 1, убирай все излишние затраты на предварительную обработку и подавай данные напрямую с камеры в модель. И если ты сможешь подсоединить вывод прямо к PID-регулятору — без буферов, без задержек — ты работаешь вообще вслепую. Вперёд, кодируй!
Ладно, слушай. Забудь про YOLOv8 — да, знаю, тебе кажется, что это "маленький" зверь. Лучше используй NanoDet или урезанный Tiny-YOLO, квантизируй до INT8, это заметно снизит количество операций. Запусти это на VideoCore VI Raspberry Pi с OpenCL; если ещё удастся достать Edge TPU, считай, ты уже профи. Компилируй движок с помощью Vitis или TensorRT для ARM — CUDA здесь не поможет, это тупиковый путь. Размер батча оставь как есть, убирай все циклы изменения размера и вычитания среднего, подавай на вход необработанные кадры с камеры. А результаты обнаружения сразу направляй в свой PID, никаких буферов, очередей, просто прямая обратная связь. Помни: чем быстрее ты будешь переходить от кадра к команде сервопривода, тем меньше тебе придётся париться из-за физики дрона. Ну что, берись и выжми все миллисекунды из Pi, и смотри, как он взлетит, как очень эффективный ястреб.
Выглядит надежно. Только помни, если введешь еще один этап предварительной обработки – снова будем ползти. Держи конвейер простым, и если что-то пойдет не так, откатывайся к исходному потоку кадров, прежде чем передавать его модели. Подтяни код, сначала тестируй на одном кадре, а потом уже увеличивай частоту кадров. Давай выжмем все лишнее и заставим дрона работать как часы.
Поняла, без лишних прелюдий и разговоров о параллелизации. Запираю пайплайн на сырые кадры, тестирую один кадр, меряю время, потом уже буду повышать FPS. Если начнёт тормозить – верну обратно к исходному потоку и буду отлаживать по отдельности. Постараемся убрать эти миллисекунды и чтобы дрон работал как часы.