Обновить
4K+
22
Олег Чебулаев@oleg_mad

CEO Mad Brains // AI, mobile, development

5
Рейтинг
47
Подписчики
Отправить сообщение

YOLOE: детектим что угодно без дотренировок

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели6.5K

Всем привет! Представьте, сколько всего нужно сделать, чтобы дотренировать модель компьютерного зрения:

Поиск и сборка датасетов. Хорошо, если есть открытые и с допустимой лицензией. Но часто приходится собирать «с миру по нитке», дополнять и балансировать данные самостоятельно.

Разметка и аугментация. Качественный датасет — залог хороших метрик. Придётся корпеть над точными detection-боксами, перепроверять, думать над нестандартными ситуациями во входных данных.

Обучение и валидация. Потратим мощности, время, деньги, протестируем. Хорошо, если с первых попыток удастся найти достойный баланс между точностью и временем тренировки. В реальности нужно хотя бы несколько итераций.

Но есть и другой путь. Сегодня расскажу о YOLOE — это модель, которая помогает решить эти проблемы.

Читать далее

Производство теряло деньги каждую смену. До внедрения видеоаналитики с ИИ никто не знал где

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели13K

Привет! На связи Олег Чебулаев, CEO Mad Brains. Хочу поделиться историей из практики — как обучить модель YOLO, запустить видеомониторинг на пищевом производстве и через неделю обнаружить кое-что, о чём на заводе предпочитали не говорить вслух.

Читать далее

Дорого, медленно, некачественно? Как мы создали технологию виртуальной примерки с ИИ, ломающую эти стереотипы

Время на прочтение7 мин
Охват и читатели6.8K

Привет! На связи Олег Чебулаев, CEO Mad Brains. В этой статье расскажу, как мы реализовали технологию для виртуальной примерки одежды Virtual Try‑On на основе диффузионных моделей и прошли путь от «сырых» и непригодных для продакшена изображений к действительно качественной виртуальной примерке.

Технология Virtual Try‑On является решением для увеличения конверсии и выручки в e‑commerce и в fashion‑брендах, но на практике её внедрение в большинстве случаев разбивается о классический треугольник дорого‑качественно‑быстро. Либо наш инференс для виртуальной примерки хорош, но слишком требователен к ресурсам, либо приходится жертвовать качеством и скоростью генерации для того, чтобы укладываться в экономически целесообразные ресурсы.

В этом материале делимся практическим опытом ‑- как мы искали баланс среди множества подходов, оптимизировали их, почему SOTA‑модели здесь не всегда работают, и как мы пришли к гибридному пайплайну, объединившему архитектуры моделей IDM‑VTON и Leffa.

Читать далее

Generics в Dart

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели2.4K

Всем привет! В этой статье мы рассмотрим, как дженерики помогают писать гибкий и повторно используемый код, позволяя функциям, классам и интерфейсам работать с различными типами. Пожалуй, это база, без которой нельзя обойтись в любом языке программирования, но нас сейчас интересует только Dart.

Читать далее

Такие разные Slivers. Часть 5: аналоги обычных виджетов

Время на прочтение2 мин
Охват и читатели1.6K

Мы подошли к заключительной части нашего цикла о сливер-виджетах во Flutter. За прошедшие статьи мы разобрали множество различных типов сливеров, от списков и сеток до гибких решений для управления размером и поведением элементов. В этой финальной статье мы познакомимся со сливер-виджетами, которые являются аналогами обычных (box-based) виджетов, выполняя схожие функции, но для работы в прокручиваемых структурах. Эти элементы расширяют возможности управления видимостью, анимациями и декорациями, предоставляя дополнительную гибкость при создании сложных интерфейсов.

Читать далее

Такие разные Slivers. Часть 4: гибкое управление элементами

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели2.4K

Всем привет! Продолжаем разбор сливеров, в предыдущих частях серии мы рассмотрели сливеры-списки, сливеры, которые помогают управлять компоновкой и распределением пространства. В этой же статье посмотрим на сливеры, которые дают возможности для более гибкого управления размерами и поведением элементов во время прокрутки. В частности посмотрим, что сливеры умеют делать с заголовком.

Читать далее

Такие разные Slivers. Часть 3: работа с пространством

Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели1.6K

Всем привет! Двигаемся дальше в изучении сливеров, в прошлых статьях мы познакомились со сливерами-списками, посмотрели на их базовые классы и делегаты. В этой статье будем рассматривать сливеры, которые помогают управлять отступами, позиционированием и распределением пространства. Эти виджеты обеспечивают гибкость при настройке компоновки и позволяют создавать более точные и адаптивные интерфейсы.

Читать далее

Такие разные Slivers. Часть 2: базовые классы и делегаты

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели1.9K

Всем привет! Продолжаем серию статей о сливерах, в первой части были рассмотрены сливеры-списки: различные вариации SliverList и SliverGrid. В этом материале погрузимся чуть глубже и сосредоточимся на базовых классах и делегатах, которые определяют поведение и структуру сливеров-списков.

Читать далее

Такие разные Slivers: обзор и применение во Flutter. Часть 1

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели4.9K

Всем привет! Многие из вас наверняка уже знакомы с Slivers, ведь это мощный инструмент для создания динамичных и адаптивных прокручиваемых областей в приложениях Flutter. В этом цикле статей рассмотрим все существующие sliver-виджеты во Flutter, чтобы познакомиться с каждым из них, понять, какие задачи они решают, и как их можно применять. Мы не будем углубляться в детали, дабы не усложнять материал, а обозначим основные особенности и отличия каждого сливера, чтобы понимать, какие вообще существуют и в нужный момент воспользоваться ими. Итак, погнали!

Читать далее

Нюансы Const в Dart

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели2.7K

Const — важное и полезное ключевое слово в Dart, но оно не такое простое, как кажется на первый взгляд.

Const — это хорошо: для объектов — это возможность быть вычисленными во время компиляции, всегда быть в одном экземпляре и никогда не мутировать/изменяться, так как они immutable.Отсюда и правило Linter'a prefer_const_constructors.

Читать далее

Редко, но метко! Пять малоизвестных виджетов

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели3.9K

Flutter предлагает множество виджетов. Одни используются почти в каждом проекте, другие остаются без внимания из-за специфичности или редких сценариев применения. В этой статье расскажем о пяти малоизвестных виджетах: PhysicalShape, Offstage, Flow, 
UnconstrainedBox, SizedOverflowBox.

Читать далее

Оптимизация архитектуры: делим крупные классы с помощью миксинов

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели3.9K

Всем привет! Это статья для тех, кто интересуется таким фреймворком, как Flutter. Сегодня обсудим, как делить большой файл класса с помощью миксинов. 

Для начала давайте разберемся, зачем вообще делить большой файл класса?

Причин несколько: во-первых, чтобы было удобно читать и рефакторить код. Во-вторых, чтобы уменьшить количество конфликтов при merge и разделении истории git в конкретном файле. Согласитесь, отследить историю изменений в разных маленьких файлах удобнее и быстрее, чем в одном большом, с разнообразием изменений. 

Читать далее

Макросы на Dart: первые ощущения от использования и лайфхаки на будущее

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели6.2K

Макросистема Dart — это новая важная языковая функция. Она добавляет поддержку статического метапрограммирования в язык Dart, но в настоящее время находится в разработке.

Макрос Dart — это определяемый пользователем фрагмент кода, который принимает другой код в качестве параметров и работает с ним в режиме реального времени для создания, изменения или добавления кода.

В отличие от генерации кода с помощью сторонних пакетов (например, build_runner) макросы полностью интегрированы в язык Dart и автоматически работают в фоновом режиме. Это делает макросы более эффективными, чем использование вспомогательного инструмента:

Читать далее

Факапы аналитиков: где они обитают? Кейсы Mad Brains

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели6.6K

Работа в заказной разработке часто связана с факапами, но признаваться в них почему-то считается моветоном. Мы решили перешагнуть через этот стереотип и выложить карты на стол. Готовы поделиться, в какие переделки попадали и как исправляли баги. Аналитикам и разработчикам будет полезно.

Для начала немного вводных: а на каких этапах могут всплывать ошибки?

Интервью
Если после встречи с заказчиком становится ясно, что в логике приложения есть несоответствия или мы собрали недостаточно данных, надо вернуться к клиенту за уточнениями. Иногда его триггерит, но по факту — это самые безобидные потери. Факап во время проектирования ТЗ или разработки — намного хуже. 

Проектирование/разработка 
Допустим, это случилось. Если ошибка была обнаружена разработчиком, то переработка одного или нескольких связанных блоков займут время, иногда много времени. Это может сказаться и на бюджете исполнителя в целом.

Тестирование
Не так страшно для заказчика, как для айтишников. Приходится тратить дополнительное время на фиксы багов. Если ошибка серьезная, в зону риска опять же попадают сроки и бюджет проекта.

Ошибки после релиза
Самый худший сценарий: если проблема найдена после того, как проект выкатили в прод, значит аналитики сработали плохо. Ошибки исправляются за счет исполнителя. 

Читать далее

Тик-так: Timer vs Ticker для анимаций

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели2.3K

Всем привет! Это статья для тех, кто увлекается Flutter-разработкой. Поговорим о Timer и Ticker?

Итак, представим, что нам нужно построить экран, в котором будет отображаться текущее Unix-время в миллисекундах. Давайте сначала сделаем верстку без анимации.

Читать далее

Законы UX-дизайна: что делает пользователей счастливее, а продукт лучше

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели11K

Всем привет! Сегодня расскажу о законах человеческой психологии и восприятии, помня о которых можно создать действительно хороший UX‑дизайн. Погнали.

Читать далее

Padding vs SizedBox. Что выбрать для вёрстки отступов Column и Row

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели5.9K

Здравы будьте! В этой статье я проведу разбор особенностей вёрстки отступов с помощью Padding и SizedBox и расскажу, что выбрала наша команда для создания единого стиля кода.

Читать далее

Устроили 30-дневный челлендж и узнали много нового

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели3.9K

Как и во многих ИТ-компаниях, у нас распределённая команда: работаем из разных городов и даже стран. Удалёнка даёт мобильность, но создавать единую атмосферу, чтобы быть с коллегами на одной волне, становится сложнее. Сотрудники зачастую коммуницируют друг с другом только по рабочим вопросам, а иногда — только в чат-переписке. В качестве эксперимента опробовали формат корпоративного челленджа в последний месяц лета. Что из этого вышло, рассказываем в статье.

Читать далее

Как создать свой VPN, если вы в России, и почему мы отказались от этой идеи

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели64K

В феврале команда Mad Brains задалась вопросом: «Почему бы не создать собственный VPN?». Опирались на гипотезу, что VPN нужен для доступа к российским сервисам и внутри страны, и тем, кто уехал. Провели масштабное продуктовое исследование и отказались от разработки. Почему так решили, рассказали Rusbase, а депутат Госдумы Антон Горелкин предложил создать национальный VPN, ссылаясь на нашу статью.

Читать далее

Паттерны проектирования на Dart с примерами кода. Часть 2

Уровень сложностиСредний
Время на прочтение21 мин
Охват и читатели6K

Команда Flutter-разработчиков Mad Brains продолжает рассказывать про паттерны проектирования на Dart. Использование паттернов проектирования помогает разработчикам создавать более масштабируемое и сопровождаемое ПО, а также улучшать читаемость и содержательность кода. Первую часть статьи можно прочитать тут.

Читать далее
1

Информация

В рейтинге
1 202-й
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность