Паспорт генерации изображения
Промт генерации изображения
Dark neon 'underside of progress' scene, cyberpunk workshop mood. A huge alarming warm amber spike on a graph, a gigabyte a day, that on recount settles into a small cold teal-cyan reality: one anomalous day inflated a false average; a phantom surge dissolving under honest measurement. Fine grid lines and tick marks, glowing plotted points, oscilloscope phosphor glow, dust, rain-on-glass. Deep shadow, volumetric haze, warm amber and cyan color palette, shallow depth of field, cinematic film still on 35mm, intricately detailed, ultra-detailed, fine textures, rich layered background, ornate mechanical detail, sharp focus, moody atmosphere.
Гигабайт в сутки, которого не было.
В папке с детекциями накопилось 932 МБ за два с половиной дня. Внутри - почти полторы тысячи файлов: снимки, короткие клипы в HEVC и JSON-метаданные. Математика в голове сработала мгновенно: делим объём на время и получаем «почти гигабайт в сутки».
Вердикт был вынесен быстро. Виноваты ночные ложные срабатывания - когда ИК-подсветка превращает ветку дерева или тень на потолке в «человека» для нейронки YOLO. Решение казалось очевидным: нужно починить фильтры, убрать ложняки, и объём записи упадет сам собой. Проблему занесли в бэклог с пометкой «исправить детекцию - сэкономить место».
Ловушка среднего арифметического
Когда пришло время проектировать политику ретенции (автоматического удаления старых записей), возник вопрос: под какой объем мы вообще строим систему? Если мы действительно жрём по гигабайту в день, то стратегия очистки должна быть агрессивной.
Привычный путь - взять имеющуюся статистику за короткий период и экстраполировать её на месяц. Но здесь и крылась ошибка. Среднее значение по короткому, неоднородному ряду данных - это самый быстрый способ обмануть самого себя.
Считалось, что главный пожиратель места - это именно те самые ночные «призраки». Казалось, что система работает в стабильном режиме легкого шума, который и создает этот постоянный поток данных. Всё указывало на системную ошибку в настройках нейронки.
Пересчёт с чистого листа
Я позвал ИИ, чтобы набросать схему ретенции, но напарник повел себя неожиданно. Вместо того чтобы принять цифру «гигабайт в сутки» как константу, он отказался строить архитектуру на унаследованном выводе.
«Данные за 2.5 суток могут быть нерепрезентативны. Прежде чем определять сроки хранения, давай переизмерим реальный поток по свежим данным, учитывая вчерашние правки фильтров».
Это был тот самый момент, когда холодная машина заставила меня усомниться в собственной «очевидной» математике. Вместо выборочного просмотра файлов мы решили прогнать ретро-анализ по всем событиям сразу.
Написали простой Python-скрипт, закинули его по SSH на сервер и прогнали через него все 166 файлов meta_*.json. Скрипт имитировал работу реального фильтра: отсекал всё, где уверенность (confidence) была ниже 0.5 или где событие попало в зону игнора. Результаты разложили не общим средним, а по календарным дням.
Картина изменилась до неузнаваемости:
# Результаты анализа потока детекций
ВСЕГО событий: 166 | Общий объём: 979 МБ
--------------------------------------------------
Реальные (прошли фильтр): 144 события | 926 МБ (95%)
Ложняки / Зоны игнора: 22 события | 53 МБ (5%)
Распределение по дням:
2026-07-15: 902 МБ <-- Аномалия
2026-07-16: 19 МБ
2026-07-17: 8 МБ
2026-07-18: 50 МБ
Фантомная нагрузка
Цифры перевернули диагноз. Ложняки оказались всего 5% от общего объёма. Они не были «главным пожирателем» - они были статистическим шумом.
Оказалось, что 92% всего объёма данных родились в один-единственный день. Причем это был день моих собственных тестов, когда я проверял работу карточек-алармов и намеренно провоцировал систему на запись.
Я пытался спроектировать инфраструктуру под «типичный день», который на самом деле был аномалией. Деление общего объёма на количество дней создало фантомную нагрузку, которой в реальности не существовало.
Попутно вылез и другой баг: в папке обнаружились осиротевшие 0-байтовые .mp4 файлы. Результат сорванного ремукса, который не завершился корректно. Теперь на них висит отдельный вотчдог, чтобы мусор не копился.
Архитектурный урок
В этой истории есть важный технический нюанс, который я упустил в начале. Запись видео на диск триггерится сырым пиксельным движением еще ДО того, как YOLO вынесет свой вердикт.
Это значит, что фильтр уведомлений (то, что отсекает ложняки в телефоне) почти не влияет на объем записи на диск. «Почистить детекцию» и «уменьшить запись» - это две разные, почти не пересекающиеся задачи. Если камера видит движение, она пишет. И неважно, решил ли ИИ через секунду, что это был кот или ветка.
Главный вывод здесь не про нейронки, а про гигиену данных. Среднее арифметическое по короткому отрезку - это ловушка для уверенного в себе инженера. Если 90% данных созданы в один аномальный день, среднее значение будет врать с беспощадной точностью.
Иногда полезно иметь рядом кого-то, кто не обладает «интуицией» и поэтому просто просит пересчитать данные с нуля.
Часть темы «Умный дом без облака» - там собраны остальные разборы этого стека.
