Введение. Контекст как катализатор
В начале 2026 года ленты новостей принесли тревожные сообщения из Сибири: массовые вспышки опасных заболеваний у КРС (крупного рогатого скота) привели к необходимости вынужденного забоя тысяч голов. Для многих фермеров это означало потерю бизнеса и средств к существованию.
Мы задались вопросом: может ли доступный Computer Vision стать первой линией обороны? Инструментом, который позволит фермеру в отдаленном районе провести первичный скрининг (триаж) животного с помощью обычного смартфона и вовремя вызвать ветеринара, не дожидаясь начала эпидемии.
Так родился проект AI-Vet-Scanner (наше пространство на Hugging Face), определяющий признаки заболеваний по фотографии.
Часть 1. Полезный ИИ: Архитектура ветеринарного скрининга
Мы не ставили задачу заменить лабораторные анализы крови — ИИ на это не способен. Наша цель — визуальный триаж.
Технически мы реализовали пайплайн мультиклассовой классификации. Чтобы сделать инференс бесплатным для конечных пользователей, мы развернули модель на Hugging Face Spaces с использованием архитектуры ZeroGPU (динамическое выделение GPU-ресурсов только в момент запроса). Это позволило нам держать production бесплатным и отказоустойчивым.

Вдохновившись успехом, мы начали расширять диагностику на свиней (детекция пневмонии) и птицу. Но работа с тяжелым социальным контекстом и болезнями неизбежно ведет к выгоранию. Чтобы разгрузить психику, мы решили направить наши MLOps-мощности на задачу, находящуюся на абсолютно противоположном полюсе полезности.
Часть 2. «Бесполезный» ИИ и проблема 9 ГБ
Наша pet-project цель: обучить SDXL LoRA генерировать изображения современных объектов, но в аутентичной эстетике Российской Империи конца XIX века.
В качестве источника данных мы нашли цифровой архив дореволюционного журнала «Вестник Моды» (1885-1917 гг.) — 9.24 ГБ высококачественных PDF-сканов.
И тут мы столкнулись с классической проблемой: как обработать этот объем данных, имея в распоряжении только бесплатные квоты облачного Jupyter-ноутбука (16 ГБ ОЗУ, T4 GPU и жесткий лимит диска в 20 ГБ)?
Часть 3. Ghetto MLOps: боремся с OOM и лимитами диска
Если вы попробуете открыть отсканированный PDF весом 300 МБ через стандартные связки вроде pdf2image + Poppler, ядро Python моментально умрет от OOM (Out of Memory). Каждая страница в высоком разрешении распаковывается в ОЗУ в виде несжатых numpy-массивов, быстро сжирая доступные 16 ГБ.
Как мы построили конвейер экстракции:
Отказ от тяжелых библиотек: Мы перешли на
PyMuPDF(fitz). Это легковесная обертка над сишным движком MuPDF. Скрипт не загружает весь документ в память, а рендерит строго по одной странице на лету.Математическая фильтрация мусора: Нам нужны только гравюры и эскизы платьев. 70% страниц журнала — это скучный мелкий текст. Обучать нейросеть (например, YOLO) для детекции гравюр было бы слишком долго. Мы пошли математическим путем через OpenCV:
Переводим отрендеренную страницу в градации серого.
Вычисляем стандартное отклонение яркости пикселей:
cv_img.std().Текст дает равномерный серый фон (низкая дисперсия). Гравюры дают резкие перепады от черного к белому (высокая дисперсия).
Ставим фильтр
MIN_VARIANCE = 45. Всё, что ниже — выбрасывается из памяти моментально.
Агрессивный Garbage Collection: Сразу после ресайза фильтрованного кадра под стандарт SDXL (1024x1024) с помощью
Image.Resampling.LANCZOS, мы принудительно вызываемgc.collect()и зануляем переменные с матрицами, чтобы не забить диск мусором.

Посмотрите, какой визуальный жир мы в итоге автоматически майним из этих архивов без единого ручного клика:


Заключение. Планы на LoRA
Прямо сейчас наш скрипт-автопилот продолжает перемалывать архивы. Как только экстракция завершится, скрипт автоматически упакует тысячи JPEG-файлов в ZIP-архив для дальнейшей тренировки нашей LoRA-модели.
Мы готовимся протестировать итоговую нейросеть вот таким промптом:
"Илон Маск в виде денди в детализированном мундире императорской гвардии 1890-х годов, золотая вышивка, держит кибер-монокль, стиль акварели и гравюры."
Если вам интересен наш подход к MLOps "на коленке" или вы просто хотите поддержать наши ветеринарные (и не очень) эксперименты, заглядывайте в гости.
Поддержать наши «исследования из желудей и палок» можно тут: pay.cloudtips.ru/p/41fb15f7