Pull to refresh
4
0
Vladimir @imageman

User

Send message

Хочу жить в такой же: как мы научились искать квартиры по фотографиям

Reading time9 min
Views5.9K

Привет, Хабр!

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

В статье поговорим о том, как мы решили задачу с помощью алгоритмов глубокого обучения, и расскажем, что там под капотом этой функции и как мы подружили EfficientNet с FAISS. В работе над статьей мне помогал Владимир Филипенко (@vovaf709): он изложил самые основы, чтобы текст мог понять и неспециалист.

Итак, начнём

Апскейл, который смог

Reading time15 min
Views78K
Термин «апскейл» используется для обозначения процесса увеличения разрешения цифровых изображений с фокусом на создание иллюзии «настоящего» высокого разрешения. Правда, 90% таких продуктов — это барахло, больше намёк на перспективы, чем волшебство. Недавно мои ручки добрались до двух алгоритмов повышения чёткости, которые оказались настолько хороши, что появилась эта статья. Будут субъективные и объективные тесты алгоритма Real-ESRGAN для увеличения разрешения и алгоритма GFPGAN для детализации лиц.
Traffic_Warning: в статье демонстрируется множество примеров.
Читать дальше →

Фотогалерея на максималках

Reading time20 min
Views11K

~1 год назад я начал разрабатывать свою фотогалерею (песочницу для теста всяких технологий). Данная статья – это описание её архитектуры, а также различные твики/лайфхаки/микрогайды которые я узнал за время разработки + немного про производительность.

Читать далее

DeDLOC: обучаем большие нейросети всем миром

Reading time7 min
Views12K


Как показывает опыт последних лет, самые интересные результаты в deep learning получаются при использовании больших нейросетей, обученных на массивах неразмеченных данных. Правда, для создания этих моделей нужен суперкомпьютер с десятками или сотнями мощных видеокарт, а также быстрым соединением между серверами. Но что делать, если таких ресурсов нет, а в открытом доступе хорошей модели под вашу задачу не нашлось?

Сегодня я расскажу про технологию, которая позволяет учить нейросети, объединяя через интернет вычислительные мощности энтузиастов из любой точки мира. В её основе лежит совместная научная работа Yandex Research, Hugging Face, студентов ШАД, ВШЭ и МФТИ, а также профессора Университета Торонто. Технология уже получила боевое крещение в ходе реального эксперимента, подробно описанного ниже. В конце статьи вы узнаете, как поставить такой эксперимент самостоятельно — модель и код доступны всем желающим.

Претрейн для всех, и пусть никто не уйдёт обиженным


За последние несколько лет во многих областях deep learning (например, в обработке естественного языка) стала популярной идея self-supervised learning. Оказалось, что для получения полезных в целевой задаче представлений не нужна большая размеченная выборка. Достаточно обучить модель на какой-то простой сигнал, построенный из неразмеченных данных, которых чаще всего в достатке. В частности, известные многим архитектуры BERT, GPT и языковая модель YaLM обучаются именно так.
Читать дальше →

Как я боролся с анти-читом

Reading time8 min
Views8.4K

Насколько мне известно, в большинстве русскоязычных тестировщиков скорости печати используется метрика CPM, наткнувшись на следующее видео мне стало интересно посмотреть на свои показатели метрики WPM.

По окончанию тестирования пользователю показывается результат написанный на картинке. И мне она показалась не совсем корректной.

Читать далее

Маленький и быстрый BERT для русского языка

Reading time9 min
Views70K

BERT – нейросеть, способная неплохо понимать смысл текстов на человеческом языке. Впервые появившись в 2018 году, эта модель совершила переворот в компьютерной лингвистике. Базовая версия модели долго предобучается, читая миллионы текстов и постепенно осваивая язык, а потом её можно дообучить на собственной прикладной задаче, например, классификации комментариев или выделении в тексте имён, названий и адресов. Стандартная версия BERT довольно толстая: весит больше 600 мегабайт, обрабатывает предложение около 120 миллисекунд (на CPU). В этом посте я предлагаю уменьшенную версию BERT для русского языка – 45 мегабайт, 6 миллисекунд на предложение. Она была получена в результате дистилляции нескольких больших моделей. Уже есть tinybert для английского от Хуавея, есть моя уменьшалка FastText'а, а вот маленький (англо-)русский BERT, кажется, появился впервые. Но насколько он хорош?

Читать далее

Обработка фотографий текста с помощью Gimp

Reading time2 min
Views17K
Здесь я предложу несколько вариантов решения этой задачи. Основная проблема фотографий это неравномерность освещенности страницы, когда в центре яркость больше, а по краям меньше или что-либо подобное. Так же часто необходимо повысить контрастность текста по сравнению со страницей. При обычной коррекции Уровней некоторые части изображения получаются засвечены, а некоторые наоборот слишком тёмные. Все методы более или менее решают эти проблемы.

В качестве материала для обработки я взял эту страничку(Предварительно обрезав всё лишнее):
Читать дальше →

ML-обработка результатов голосований Госдумы (2016-2021)

Reading time13 min
Views8.5K


Всем привет! Недавно я наткнулся на сайт vote.duma.gov.ru, на котором представлены результаты голосований Госдумы РФ за весь период её работы — с 1994-го года по сегодняшний день. Мне показалось интересным применить некоторые техники машинного обучения, а так же обычной статистической обработки для выяснения следующих вопросов.


  1. Каков диапазон степени корреляции депутатов внутри партий? Имеются ли депутаты, которые голосуют всегда так же, как большинство в их партии?
  2. Смогут ли классические методы кластеризации автоматически разделить депутатов думы на фракции, к которым они относятся, основываясь только на их голосах?
  3. Можно ли добиться приемлемого качества предсказания итога голосования, зная только исходный текст вопроса голосования?

Предполагаю, что людям, не знакомым с методами машинного обучения, может быть интересно посмотреть раздел 1, а также заглянуть в выводы — там дана краткая интерпретация всех результатов.


Итак, поехали.

Читать дальше →

Обзор методов численной оптимизации. Безусловная оптимизация: метод линий

Reading time24 min
Views46K
image

Я работаю в американской компании, разрабатывающей софт для химической и нефтегазовой промышленности. Одной из наиболее востребованных тем в этой области является оптимизация чего-либо при заданных параметрах производства. Например, минимизация расходов на выработку какого-нибудь газа, максимизация прибыли при реализации топлива, максимизация давления в какой-нибудь трубе при вариабельных термодинамических параметрах на другой части проектируемого завода и заданных ограничениях и т.д. Я занимался реализацией методов оптимизации для подобных задач и, думаю, накопил ощутимый опыт в этой области. С этого поста хотел бы начать серию обзоров известных методов оптимизации.

Введение


Оптимизация — это процесс нахождения точки экстремального значения некоторой заданной целевой функции $f(\mathbf{x})$. Это один из крупнейших краеугольных камней прикладной математики, физики, инженерии, экономики, промышленности. Область её применений необъятна и может распространяться от минимизации физических величин на микро- и макроуровнях до максимизации прибыли или эффективности логистических цепочек. Машинное обучение также заострено на оптимизации: всевозможные регрессии и нейроные сети пытаются минимизировать ошибку между предсказанием и реальными данными.

Экстремум может быть как минимумом, так и максимумом, но обычно принято изучать любую оптимизацию исключительно как поиск минимума, поскольку любая максимизация эквивалентна минимизации из-за возможности поменять знак перед целевой функцией: $f(\mathbf{x})\to -f(\mathbf{x})$. Следовательно, в любом месте ниже под оптимизацией мы будем понимать именно минимизацию.
Читать дальше →

Как мы обучили нейросеть генерировать тени на фотографии

Reading time22 min
Views11K

Привет!

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

Ну что, погнали?

Читать далее

Глупая причина, по которой не работает ваше хитрое приложение машинного зрения: ориентация в EXIF

Reading time5 min
Views21K
Я много писал о проектах компьютерного зрения и машинного обучения, таких как системы распознавания объектов и проекты распознавания лиц. У меня также есть опенсорсная библиотека распознавания лиц на Python, которая как-то вошла в топ-10 самых популярных библиотек машинного обучения на Github. Всё это привело к тому, что новички в Python и машинном зрении задают мне много вопросов.



По опыту, есть одна конкретная техническая проблема, которая чаще всего ставит людей в тупик. Нет, это не сложный теоретический вопрос или проблема с дорогими GPU. Дело в том, что почти все загружают в память изображения повёрнутыми, даже не подозревая об этом. А компьютеры не очень хорошо обнаруживают объекты или распознают лица в повёрнутых изображениях.
Читать дальше →

Машинное обучение: ансамбль смешивания на Python

Reading time24 min
Views17K
Смешивание — это ансамблевый алгоритм машинного обучения. Это разговорное название для стекового обобщения (stacked generalization) [далее будем использовать термин «пакетирование» вместо принятого в научных работах термина «стекинг»] или ансамбля пакетирования, где вместо того чтобы обучать метамодель на прогнозах вне групп, сделанных базовой моделью, модель обучается на прогнозах, сделанных на независимом наборе данных.

Термин «смешивание» использовался для описания моделей пакетирования, которые объединили многие сотни моделей в конкуренции на соревновании по машинному обучению от Netflix с призом в $1 000 000, и как таковое смешивание остаётся популярным методом и названием для пакетирования в конкурсах машинного обучения, например на Kaggle. Специально к старту нового потока курса «Машинное обучение» делимся туториалом, из которого вы узнаете, как разработать и оценить смешанный ансамбль на python. После завершения этого туториала вы будете знать:

  • Смешанные ансамбли — это тип пакетирования моделей, при котором метамодель обучается с использованием прогнозов на независимом тестовом наборе данных валидации вместо прогнозов во время k-кратной кросс-валидации.
  • Как разработать смешанный ансамбль, включая функции обучения модели и составления прогнозов на основе новых данных.
  • Как оценить смешанные ансамбли для задач классификации и регрессионного прогностического моделирования.


Давайте начнём

Как построить свою систему поиска похожих изображений

Reading time10 min
Views31K

В интернете есть много информации о поиске похожих изображений и дубликатов. Но как построить свою систему? Какие современные подходы применять, на каких данных обучать, как валидировать качество поиска и куда смотреть при выводе в production?

В этой статье я собрал все необходимые компоненты поисковой системы на изображениях в одном месте, разбавив контент современными подходами.

Читать далее

Поиск изображений

Reading time5 min
Views13K

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

Читать далее

Deep Anomaly Detection

Reading time8 min
Views10K

Детекция аномалий с помощью методов глубокого обучения


Выявление аномалий (или выбросов) в данных - задача, интересующая ученых и инженеров из разных областей науки и технологий. Хотя выявлением аномалий (объектов, подозрительно не похожих на основной массив данных) занимаются уже давно и первые алгоритмы были разработаны еще в 60-ых годах прошлого столетия, в этой области остается много неразрешенных вопросов и проблем, с которыми сталкиваются люди в таких сферах, как консалтинг, банковский скоринг, защита информации, финансовые операции и здравоохранение.

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

Рассмотреть алгортмы Deep Learning далее

Как обучать огромные модели машинного обучения на случайных GPU

Reading time11 min
Views11K
Вы можете спросить: почему эти полумагические модели машинного обучения работают так хорошо? Короткий ответ: эти модели чрезвычайно сложны и обучаются на огромном количестве данных. На самом деле, Lambda Labs недавно подсчитала, что для обучения GPT-3 на одном GPU потребовалось бы 4,6 миллиона долларов — если бы такое было возможно.

Такие платформы, как PyTorch и Tensorflow, могут обучать эти огромные модели, потому что распределяют рабочую нагрузку по сотням (или тысячам) GPU одновременно. К сожалению, этим платформам требуется идентичность графических процессоров (они должны иметь одинаковую память и вычислительную производительность). Но многие организации не имеют тысячи одинаковых GPU. Малые и средние организации покупают разные компьютерные системы, что приводит к неоднородной инфраструктуре, которую нелегко адаптировать для вычисления больших моделей. В этих условиях обучение моделей даже среднего размера может занимать недели или даже месяцы. Если не принять меры, университеты и другие небольшие организации рискуют потерять конкурентоспособность в погоне за разработкой новых, лучших моделей машинного обучения. Но это можно исправить.

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


Приятного чтения!

Не баян: ищем дубликаты изображений на основе Milvus с индексом FAISS внутри

Reading time6 min
Views7.7K


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

Под катом рассмотрим используемые инструменты, а потом перейдём к примеру реализации.
Читать дальше →

Сито для интернета: интересные вещи с Shodan

Reading time5 min
Views32K


Интернет ошибочно отождествляют исключительно с вебом, но всемирная паутина доступная через браузер — это всего лишь вершина айсберга глобальной сети. Ее подводная часть куда разнообразнее, и хоть она скрыта от глаз рядовых пользователей, ничто не мешает изучать ее специализированными средствами. Одним из таких сервисов, сделанных “под ключ” и устроенных по типу швейцарского ножа, можно назвать Shodan.

Если гугл индексирует новостные сайты и энциклопедии, специально выставленные на всеобщее обозрение, то Shodan — это поисковая система, которая целенаправленно индексирует все подключенные к интернету вычислительные устройства (веб-камеры, маршрутизаторы, серверы и новомодные IoT-девайсы) и позволяет находить их с помощью различных поисковых запросов и фильтров.


Читать дальше →

Компьютерное зрение. Свой алгоритм или решение из «коробки»?

Reading time6 min
Views4.4K


Меня зовут Александра Царева. Я и мои коллеги работаем над проектами в сфере компьютерного зрения в Центре машинного обучения компании «Инфосистемы Джет». Мне хочется поделиться нашим опытом разработки и внедрения проектов в сфере компьютерного зрения. Сегодня речь пойдет о преимуществах и недостатках кастомных и коробочных решений, и я расскажу о нашем опыте применения инструмента от IBM Maximo Visual Inspection.
Читать дальше →

FAISS: Быстрый поиск лиц и клонов на многомиллионных данных

Reading time14 min
Views50K


Однажды в преддверии клиентской конференции, которую ежегодно проводит группа DAN, мы размышляли над тем, что интересного можно придумать, чтобы у наших партнеров и клиентов остались приятные впечатления и воспоминания о мероприятии. Мы решили разобрать архив из тысяч фотографий с этой конференции и нескольких прошлых (а всего их к тому моменту было 18): человек отправляет нам свою фотографию, а мы ему через пару секунд отправляем подборку фотографий с ним за несколько лет из наших архивов.

Велосипед мы не придумывали, взяли всем известную библиотеку dlib и получили эмбеддинги (векторные представления) каждого лица. 

Добавили Telegram-бота для удобства, и всё было отлично. С точки зрения алгоритмов распознавания лиц всё работало на ура, но конференция завершилась, а расставаться с опробованными технологиями не хотелось. От нескольких тысяч лиц хотелось перейти к сотням миллионов, но конкретной бизнес-задачи у нас не было. Через некоторое время у наших коллег появилась задача, которая требовала работы с такими большими объемами данных.
Читать дальше →

Information

Rating
Does not participate
Location
Резекне, Латвия, Латвия
Date of birth
Registered
Activity