ИИ Модели¶
Этот документ предоставляет исчерпывающую документацию архитектуры ИИ модели и конвейера предсказаний, используемых в CulicidaeLab Server для идентификации видов комаров.
Обзор¶
CulicidaeLab использует сложный конвейер машинного обучения для автоматической идентификации видов комаров по изображениям. Система интегрирует Python библиотеку culicidaelab (версия ≥0.2.2) с FastAI (версия 2.7.0-2.8.0) для обеспечения точной классификации видов в реальном времени.
Архитектура Модели¶
MosquitoClassifier¶
Основным ИИ компонентом является класс MosquitoClassifier из библиотеки culicidaelab, который предоставляет:
- Фреймворк Глубокого Обучения: Построен на FastAI для надежной классификации изображений
- Предобученные Модели: Использует трансферное обучение от установленных моделей компьютерного зрения
- Специфичное для Видов Обучение: Обучен на курированных наборах данных изображений комаров
- Оценка Уверенности: Предоставляет распределения вероятностей по классам видов
Конфигурация Модели¶
class PredictionService:
def __init__(self):
self.model = None
self.model_loaded = False
self.lib_settings = get_settings()
self.save_predicted_images_enabled = app_settings.SAVE_PREDICTED_IMAGES
Ключевые Параметры Конфигурации:¶
- Архитектура Модели: Настраивается через настройку
predictors.classifier.model_arch - Веса Модели: Загружаются из пути
predictors.classifier.filename - Обработка Входных Данных: Автоматическая предобработка и нормализация изображений
- Формат Вывода: Структурированные результаты предсказания с оценками уверенности
Конвейер Предсказания¶
Рабочий Процесс Обработки Изображений¶
flowchart TD
A[Исходное Изображение] --> B[Валидация Изображения]
B --> C[Преобразование Формата]
C --> D[Предобработка]
D --> E[Вывод Модели]
E --> F[Постобработка]
F --> G[Генерация Результата]
G --> H[Опциональное Сохранение Изображения] 1. Ввод и Валидация Изображения¶
async def predict_species(self, image_data: bytes, filename: str):
"""Обработка данных изображения для предсказания видов."""
image = Image.open(io.BytesIO(image_data)).convert("RGB")
image_np = np.array(image)
Требования к Входным Данным: - Поддерживаемые Форматы: JPEG, PNG и другие PIL-совместимые форматы - Цветовое Пространство: Автоматическое преобразование в RGB - Ограничения Размера: Настраиваемые максимальные размеры изображения - Качество: Нет специфических требований к качеству (модель обрабатывает различные качества)
2. Конвейер Предобработки¶
Конвейер предобработки включает:
- Нормализация Цветового Пространства: Преобразование RGB и нормализация каналов
- Изменение Размера: Автоматическое масштабирование до входных размеров модели
- Аугментация Данных: Аугментация во время выполнения для улучшенной устойчивости
- Преобразование Тензора: Массив NumPy в формат, совместимый с моделью
3. Вывод Модели¶
Процесс Вывода: - Прямой Проход: Единичный вывод через нейронную сеть - Распределение Вероятностей: Softmax вывод по всем классам видов - Top-K Результаты: Возвращает ранжированные предсказания с оценками уверенности - Производительность: Оптимизирован для вывода в реальном времени (< 1 секунды обычно)
4. Обработка Результатов¶
result = PredictionResult(
scientific_name=top_species,
probabilities={species: float(conf) for species, conf in predictions[:2]},
id=species_id,
model_id=self.model_id,
confidence=float(top_confidence),
image_url_species=image_url_species,
)
Производительность Модели¶
Метрики Точности¶
Производительность модели оценивается с использованием стандартных метрик классификации:
- Top-1 Точность: Процент правильных топ предсказаний
- Top-5 Точность: Процент случаев, когда правильный вид находится в топ 5 предсказаний
- Калибровка Уверенности: Соответствие между предсказанной уверенностью и фактической точностью
- Производительность по Видам: Метрики точности и полноты для каждого вида
Оценка Уверенности¶
Система предоставляет калиброванные оценки уверенности:
- Диапазон: 0.0 до 1.0 (0% до 100% уверенности)
- Интерпретация: Более высокие оценки указывают на большую уверенность модели
- Рекомендации по Порогам:
- Высокая уверенность: > 0.8
- Средняя уверенность: 0.5 - 0.8
- Низкая уверенность: < 0.5
Поддерживаемые Виды¶
Модель в настоящее время поддерживает идентификацию основных видов комаров, включая:
Виды Aedes¶
- Aedes aegypti (Комар желтой лихорадки)
- Aedes albopictus (Азиатский тигровый комар)
- Aedes canadensis (Канадский комар)
- Aedes dorsalis (Прибрежный комар каменных луж)
- Aedes geniculatus (Комар дупел деревьев)
- Aedes koreicus (Корейский кустарниковый комар)
- Aedes triseriatus (Восточный комар дупел деревьев)
- Aedes vexans (Внутренний комар паводковых вод)
Виды Anopheles¶
- Anopheles arabiensis (Арабский малярийный комар)
- Anopheles freeborni (Западный малярийный комар)
- Anopheles sinensis (Китайский малярийный комар)
Виды Culex¶
- Culex inatomii
- Culex pipiens (Обыкновенный домашний комар)
- Culex quinquefasciatus (Южный домашний комар)
- Culex tritaeniorhynchus (Комар японского энцефалита)
Виды Culiseta¶
- Culiseta annulata (Кольчатый комар)
- Culiseta longiareolata (Полосатый комар)
Архитектура Интеграции¶
Интеграция Слоя Сервиса¶
class PredictionService:
async def load_model(self):
"""Загрузка модели классификатора комаров."""
self.model = MosquitoClassifier(self.lib_settings, load_model=True)
self.model_loaded = True
self.model_arch = self.lib_settings.get_config("predictors.classifier").model_arch
self.model_id = self.lib_settings.get_config("predictors.classifier").filename.split(".")[0]
Интеграция API¶
Сервис предсказания интегрируется с FastAPI бэкендом через:
- Асинхронные Операции: Неблокирующий вывод модели
- Обработка Ошибок: Комплексное перехватывание и отчетность об ошибках
- Управление Ресурсами: Эффективная загрузка модели и управление памятью
- Кэширование: Кэширование экземпляра модели для избежания накладных расходов на перезагрузку
Конвейер Хранения Изображений¶
async def save_predicted_image(self, image_data: bytes, filename: str):
"""Сохранение предсказанных изображений в нескольких разрешениях."""
# Оригинальное разрешение
# Миниатюра 224x224 (размер входа модели)
# Миниатюра 100x100 (отображение UI)
Функции Хранения: - Мульти-Разрешение: Автоматическая генерация нескольких размеров изображений - Асинхронная Обработка: Неблокирующие операции сохранения изображений - Настраиваемость: Включение/отключение через настройку SAVE_PREDICTED_IMAGES - Организованная Структура: Иерархическая организация директорий по размеру
Развертывание Модели¶
Соображения для Продакшена¶
Оптимизация Производительности¶
- Кэширование Модели: Единичный экземпляр модели на сервис
- Пакетная Обработка: Поддержка пакетных предсказаний (будущее улучшение)
- GPU Ускорение: Поддержка CUDA при наличии
- Управление Памятью: Эффективная обработка памяти тензоров
Масштабируемость¶
- Горизонтальное Масштабирование: Дизайн без состояния позволяет множественные экземпляры
- Балансировка Нагрузки: Совместимость со стандартными стратегиями балансировки нагрузки
- Мониторинг Ресурсов: Отслеживание использования памяти и CPU
- Автомасштабирование: Контейнерное развертывание с ограничениями ресурсов
Надежность¶
- Восстановление от Ошибок: Грациозная обработка сбоев загрузки модели
- Механизмы Отката: Режимы деградированного сервиса для устойчивости системы
- Проверки Здоровья: Конечные точки мониторинга доступности модели
- Логирование: Комплексное логирование предсказаний для отладки
Обновления Модели¶
Управление Версиями¶
- Версионирование Модели: Семантическое версионирование для релизов модели
- Обратная Совместимость: Стабильность API через обновления модели
- A/B Тестирование: Поддержка сравнения версий модели
- Возможность Отката: Быстрое возвращение к предыдущим версиям модели
Непрерывное Улучшение¶
- Мониторинг Производительности: Отслеживание точности предсказаний во времени
- Сбор Данных: Сбор отзывов пользователей для улучшения модели
- Конвейер Переобучения: Автоматизированное переобучение модели с новыми данными
- Обеспечение Качества: Валидационное тестирование перед развертыванием модели
Будущие Улучшения¶
Планируемые Улучшения¶
Возможности Модели¶
- Многоэтапная Классификация: Иерархическая классификация Род → Вид
- Морфологические Признаки: Интеграция обнаружения анатомических признаков
- Распознавание Стадий Жизни: Идентификация стадий яйца, личинки, куколки, взрослой особи
- Определение Пола: Возможности классификации самец/самка
Технические Улучшения¶
- Векторные Вложения: Анализ сходства и кластеризации видов
- Квантификация Неопределенности: Байесовские подходы для лучшей оценки уверенности
- Активное Обучение: Интеллектуальный выбор образцов для улучшения модели
- Федеративное Обучение: Распределенное обучение через исследовательские институты
Функции Интеграции¶
- Обработка в Реальном Времени: Возможности анализа потокового видео
- Мобильная Оптимизация: Развертывание на краю для полевых приложений
- Версионирование API: Множественные версии модели, доступные через API
- Пользовательское Обучение: Возможности тонкой настройки модели для конкретных пользователей