Pioneer RKNN¶
Библиотека RKNN представляет собой набор классов и функций для работы с моделями машинного обучения. Для использования библиотеки необходимо установить фреймворк RKNNLite. Инструкцию по установке можно найти в официальной документации RKNN.
Чтобы работать с искусственным интеллектом, сначала необходимо импортировать класс модели из библиотеки pioneer_rknn, а затем инициализировать экземпляр этого класса.
Доступные модели:
Yolo - семейство моделей используемых для обнаружения и классификации объектов на изображении.
YoloPose - модифицация Yolo, используется для оценки позы человека.
PaddleOCR - ансамбль моделей используемых для распознавания текста и символов.
# Импорт необходимого модуля
from pioneer_rknn import Yolo
# Инициализация экземпляра класса Yolo моделью "yolov8n"
model = Yolo(model_name="yolov8n")
Подсказка
Класс ImageViewer обеспечивает вывод изображения для его удобного просмотра, данный класс импортируется из библиотеки Pioneer-SDK2
Подсказка
Другие модели могут быть найдены в репозитории: https://github.com/airockchip/rknn_model_zoo
Класс ModelContainer¶
Класс ModelContainer обеспечивает базовые функции для загрузки, выполнения инференса нейронной сети. При добавлении новых моделей нужно наследоваться от данного класса, переопределяя метод run в дочернем классе.
# Пример переопределения функции run для модели Yolo
def run(self, inputs: list) -> tuple | None:
raw_outputs = super().run(inputs)
return self.post_process(raw_outputs)
Подсказка
При наследовании от ModelContainer обязательно укажите атрибут класса arch со списком кратких имен архитектур моделей. Это имя используется для проверки соответствия модели при загрузке из регистра.
# Пример №1
arch = ["yolov8", "yolov11"]
# Пример №2
arch = ["yolov8-pose"]
Методы ModelContainer¶
- model_container = ModelContainer(self, model_path: str | None = None, model_name: str | None = None, target: str | None = None, device_id: int | None = None) -> None
- Описание метода:
Инициализирует контейнер модели.
- Аргументы метода:
model_path - Путь к модели в формате .rknn. (при отсутствии model_name)
model_name - Имя модели в регистре моделей. (при отсутствии model_path)
target - Целевая платформа для выполнения, если не указана - определяется автоматически.
device_id - Идентификатор устройства. Если не указан, используется нулевое ядро нейровычислителя.
- run(self, inputs: list) list¶
- Описание метода:
Выполняет инференс на заданных входных данных.
- Аргументы метода:
inputs - Входные данные для инференса.
- Возвращает:
Результаты инференса.
- release(self) None¶
- Описание метода:
Освобождает ресурсы нейровычислительного модуля.
Класс ModelRegistry¶
Класс ModelRegistry предоставляет интерфейс для взаимодействия с регистром моделей, позволяя получать список моделей, информацию о конкретной модели, удалять и загружать модели.
Методы ModelRegistry¶
- model_registry = ModelRegistry(self, url: str = "http://127.0.0.1:7777/model")
- Описание метода:
Инициализирует экземпляр ModelRegistry.
- Аргументы метода:
url - URL-адрес регистра моделей.
- list_model(self) dict | None¶
- Описание метода:
Получает список всех моделей, зарегистрированных в регистре.
- Возвращает:
Словарь с информацией о моделях или None в случае ошибки.
- get_model_info(self, name: str) dict | None¶
- Описание метода:
Получает подробную информацию о конкретной модели по ее имени.
- Аргументы метода:
name - Имя модели.
- Возвращает:
Словарь с информацией о модели или None в случае ошибки.
- delete_model(self, name: str) dict | None¶
- Описание метода:
Удаляет модель из регистра по ее имени.
- Аргументы метода:
name - Имя модели для удаления.
- Возвращает:
Словарь с результатом операции удаления или None в случае ошибки.
- upload_model(self, name: str, version: str, filepath: str, arch: str)¶
- Описание метода:
Загружает новую модель в регистр.
- Аргументы метода:
name - Имя модели.
version - Версия модели. Если версия - пустая строка, будет автоматическое инкрементирование версии.
filepath - Путь к файлу модели для загрузки.
arch - Архитектура модели (например, «yolov8», «yolov8-pose»).
Класс Yolo¶
Класс Yolo инкапсулирует логику работы с моделью YOLO: загружает модель, выполняет инференс по входному изображению и проводит постобработку для получения координат объектов, классов и уверенности детекции.
Подсказка
Поддерживаемые архитектуры:
yolov8
yolov11
Методы Yolo¶
- yolo = Yolo(self, model_path: str | None = None, model_name: str | None = None, target: str | None = None, device_id: int | None = None, object_thresh: float = 0.25, nms_thresh: float = 0.45, img_width: int = 640, img_height: int = 640) -> None
- Описание класса:
Инициализирует модель Yolo.
- Аргументы метода:
model_path - Путь к модели .rknn (при отсутствии model_name).
model_name - Имя модели в регистре моделей (при отсутствии model_path).
target - Целевая платформа для выполнения.
device_id - Идентификатор устройства.
object_thresh - Порог обнаружения объекта.
nms_thresh - Порог NMS.
img_width - Ширина входного изображения.
img_height - Высота входного изображения.
Класс YoloPose¶
Класс YoloPose расширяет функциональность Yolo для решения задачи оценки позиции (pose estimation). Помимо детекции объектов, извлекает ключевые точки скелета для каждого обнаруженного объекта и выполняет постобработку для получения координат и достоверности ключевых точек.
Подсказка
Поддерживаемые архитектуры:
yolov8-pose
Методы YoloPose¶
- yolo_pose = YoloPose(self, model_path: str | None = None, model_name: str | None = None, target: str | None = None, device_id: int | None = None, object_thresh: float = 0.4, nms_thresh: float = 0.5, img_width: int = 640, img_height: int = 640) -> None
- Описание метода:
Инициализирует модель YoloPose.
- Аргументы метода:
model_path - Путь к модели .rknn (при отсутствии model_name).
model_name - Имя модели в регистре моделей (при отсутствии model_path).
target - Целевая платформа для выполнения.
device_id - Идентификатор устройства.
object_thresh - Порог обнаружения объекта.
nms_thresh - Порог NMS.
img_width - Ширина входного изображения.
img_height - Высота входного изображения.
- run(self, inputs: list[np.ndarray]) list['YoloPose.DetectBox']¶
- Описание метода:
Выполняет инференс модели и последующую обработку выходов.
- Аргументы метода:
inputs - Список из изображений.
- Возвращает:
Список обнаруженных боксов с ключевыми точками.
Подсказка
Подкласс DetectBox представляет обнаруженный бокс с ключевыми точками, находится внутри класса YoloPose.
- DetectBox(self, classId: int, score: float, xmin: float, ymin: float, xmax: float, ymax: float, keypoint: np.ndarray) None:¶
- Аргументы метода:
classId (int) - Идентификатор класса объекта.
score (float) - Уверенность обнаружения.
xmin (float) - Левая координата.
ymin (float) - Верхняя координата.
xmax (float) - Правая координата.
ymax (float) - Нижняя координата.
keypoint (np.ndarray) = Массив точек позы [17×3].
Класс PaddleOCR (PPOCR)¶
Класс PaddleOCR инкапсулирует пайплайн OCR: выделение текстовых областей, чем занимается модель «детекции», а далее на выделенных областях распознаётся символьный текст, за это отвечает модель «распознавания» текстовых символов.
Подсказка
Поддерживаемые архитектуры:
PP-OCRv5_mobile_det
eslav_PP-OCRv5_mobile_rec
Подсказка
PaddleOCR хранит два основных компонента:
self.text_detector - объект модели детекции текста - ищет текстовые регионы на изображении (четырёхугольники).
self.text_recognizer - объект модели распознавания текста - распознаёт текст в найденных ограничивающих четырёхугольниках.
Методы PaddleOCR¶
- def __init__(self, det_model_path: str | None = None, rec_model_path: str | None = None, rec_model_name: str | None = None, det_model_name: str | None = None) -> None
- Описание метода:
Инициализирует модель PaddleOCR.
- Аргументы метода:
det_model_path - Путь к detector-модели .rknn.
rec_model_path - Путь к recognizer-модели .rknn.
det_model_name - Имя detector-модели в регистре моделей.
rec_model_name - Имя recognizer-модели в регистре моделей.
- def run(self, img: np.ndarray) -> tuple[list[np.ndarray], list[list[tuple[str, float]]]]
- Описание метода:
Выполняет инференс модели и последующую обработку выходов.
- Аргументы метода:
img - Изображение дял инференса.
- Возвращает:
Список найденных ограничивающих четырёхугольников. Список результатов распознавания для каждого четырёхугольника.