25 полезных опенсорсных проектов в сфере машинного обучения

разработка
26 октября 2018, 14:06

За последние несколько лет машинное обучение раскрыло новые перспективы перед множеством различных отраслей: Facebook достигла успехов в распознавании лиц, Netflix использует МО для подбора и рекомендаций кинофильмов, PrimaAI — для обработки изображений, Siri — в распознавании голоса, а Google Allo — для обработки естественного языка.

Помимо этих примеров, на GitHub существует масса других полезных открытых проектов, связанных с технологией машинного обучения. Подборка опубликована в блоге Heartbeat Fritz AI.


TensorFlow

TensorFlow — это открытая библиотека машинного обучения для построения и тренировки нейросетей. Она предоставляет новичкам и продвинутым программистам API для десктопной, мобильной, облачной и веб-разработки. Изначально библиотеку создавала команда Google Brain для внутреннего использования Google. TensorFlow выпустили 9 ноября 2015 года под лицензией на свободное ПО Apache 2.0. Последняя версия библиотеки поддерживает Keras — высокоуровневый API для нейросетей, написанный на языке Python и работающий поверх TensorFlow, CNTK и Theano. Имеет интерфейсы для Javascript и Swift.


scikit-learn

Библиотеку Scikit-learn разработали в рамках проекта Google Summer of Code в 2007 году. Её название отсылает к инструментарию SciPy Toolkit. Scikit-learn простроена на базе NumPy, SciPy и Matplotlib. Она предоставляет простые и эффективные инструменты для глубинного анализа данных, а благодаря простоте и удобству не уступает в популярности TensorFlow.


MXNet

MXNet — ещё один фреймворк глубокого обучения от Apache, наряду с TensorFlow, Keras и Scikit-learn. Он создавался с мыслью об эффективности и гибкости и позволяет комбинировать символическое и императивное программирование, чтобы достичь максимальной продуктивности. В коллекции model zoo you можно найти много моделей, реализованных в MXNet.


PyTorch

PyTorch — также весьма популярный выбор фанатов машинного обучения. Библиотека создана на базе Torch и развивается в стенах Facebook. PyTorch представляет собой пакет Python и обеспечивает две высокоуровневые функции: тензорные вычисления (по аналогии с NumPy) с поддержкой GPU-ускорения и глубокие нейронные сети на основе системы autograd.


magenta

Magenta — это исследовательский проект, демонстрирующий потенциал машинного обучения в создании произведений искусства и музыки. По большей части он ориентирован на разработку новых алгоритмов глубокого обучения и обучения с подкреплением для синтеза песен, изображений или эскизов. «Умные» инструменты и интерфейсы magenta расширяют возможности для творчества художников и музыкантов.

Главный репозиторий предназначен для использования с Python, но есть и версия magenta.js для Javascript. Здесь можно посмотреть примеры проектов по генерированию музыки и изображений на magenta.


style2paints

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


Image-to-image translation in PyTorch

Этот проект основан на нейросетях CycleGAN и pix2pix и содержит PyTorch-реализации для преобразования изображений в другие. Алгоритм не требует датасетов с примерами связанных пар входных и выходных изображений. С помощью него можно, например, превратить лошадь в зебру, перерисовать фотографию в стиле различных художников или наоборот преобразовать картину Моне в реалистичное изображение. Нейросеть настолько быстра, что способна обрабатывать даже видео.


Deep voice conversion

Deep voice conversation делает то же самое, что предыдущий инструмент, но со звуком: алгоритм имитирует голоса различных людей. С помощью него можно преобразовать речь в голос нужного человека с сохранением всех его индивидуальных особенностей. Авторы проекта решили научить глубокую нейросеть разговаривать голосом британской актрисы Кейт Уинслет. В качестве датасета они использовали более чем 2 часа записей из озвученной актрисой аудиокниги. На SoundCloud можно послушать, как нейросеть синтезирует голос Кейт Уинслет.


StarGAN in PyTorch

StarGAN — это реализация работы «Объединенные генеративно-состязательные сети для многопрофильной трансформации изображений» на PyTorch. Нейросеть не просто переносит стили при преобразования исходных изображений, но также умеет менять причёски, цвет кожи, возраст, пол и настроение людей на фотографиях.


Face detection

Для распознавания лиц на iOS и Android существуют фреймворки Core ML и ML Kit. Но библиотека Face detection помимо лиц способна распознавать эмоции и определять пол изображённых людей, причём в реальном времени. Для этого используются датасеты fer2013/IMDB, а также свёрточная нейросеть Keras и открытая библиотека компьютерного зрения OpenCV.


Deep universal probabilistic programming

Разработчики Uber AI Labs строили эту библиотеку для вероятностного программирования с целью повысить качество прогнозов нейросетей и оптимизировать работу такси-сервиса. Библиотека заинтересует тех, кто занимается вероятностным моделированием. В круг её возможностей входит подбор водителей и пассажиров, вычисление рациональных маршрутов, поиск выгодных вариантов для совместных поездок и даже создание «умных» транспортных средств нового поколения. В решении этих задач проект сочетает богатый опыт специалистов по обработке данных, разработчиков и других пользователей с передовыми технологиями на основе искусственного интеллекта.


ParlAI

ParlAI — это часть проекта Facebook Research. Представляет собой фреймворк для обучения и испытания моделей искусственного интеллекта на ряде открытых датасетов для диалоговых нейросетей. ParlAI даёт исследователям доступ ко многим известным датасетам, а также единый фреймворк для совместной разработки и тестирования диалоговых моделей. Подробнее о ParlAI можно прочитать здесь.


facets

Facets — инструмент для визуализации датасетов машинного обучения. Визуализации представлены в виде веб-компонентов Polymer на основе кода Typescript которые можно запросто встроить в блокноты Jupyter или веб-страницы. Ключевые аспекты визуализации — обнаружение выбросов и сравнение распределения по различным датасетам. Важные показатели, например высокий процент потерянных данных или слишком разное распределение признака в различных датасетах, выделяются красным.


ELF with AlphaGoZero

ELF — это платформа, представляющая собой комплексное решение для исследования видеоигр с реимплементацией AlphaGo Zero и AlphaZero. В ней есть миниатюрные среды для стратегических игр в реальном времени, совместное моделирование, распределённое обучение на тысячах моделей, интуитивные API, веб-визуализация и фреймворк обучения с подкреплением на базе PyTorch.


Detectron

Detectron — это программная система Facebook AI Research, которая использует продвинутые алгоритмы распознавания объектов, включая нейросети Mask R-CNN. Создана на Python на базе фреймворка глубокого обучения Caffe2.


Fast Style Transfer

Одна из лучших свёрточных нейронных сетей для переноса стиля с одного изображения на другое, причём эту операцию она осуществляет довольно быстро. Реализована в TensorFlow на базе нейронного алгоритма художественного стиля Леона Гатиса, аналогичной нейросети, которая осуществляет преобразование почти мгновенно, и алгоритме раздельной нормализации.


Face recognition

Этот инструмент предоставляет API для распознавания лиц. Он выделяет черты лиц на фотографиях и по ним пытается идентифицировать изображённого человека. Построен с помощью передовой технологии распознавания лиц dlib, использующей глубокое обучение. В испытаниях на тестовой базе распознавания лиц Labeled Faces in the Wild модель достигла точности 99,38 процентов. Здесь также есть простой инструмент командной строки face_recognition, который позволяет запускать распознавание лиц для папок изображений из командной строки.


Deep photo style transfer

Это ещё один проект по переносу стилей. Репозиторий содержит программу и лежащую в её основе научную работу Deep Photo Style Transfer. Он включает простые интерфейсы для объединения стилей и исходных изображений.


Fast Text

fastText — это библиотека для эффективного обучения векторному представлению слов и классификации предложений. Чтобы лучше понять замысел авторов проекта, можно прочесть их руководство по классификации текста, в котором объясняется, как использовать библиотеку для обучения с учителем. Классификации текста применяется для разделения различных документов, таких как электронные и текстовые сообщения, публикации, обзоры продуктов, на несколько категорий.


AirSim

AirSim — открытый кросс-платформенный эмулятор для дронов, автомобилей и прочей техники, построенный на Unreal Engine. Он поддерживает программно-аппаратное моделирование с популярными полётными контроллерами вроде PX4 и создаёт симуляции с максимально реалистичной физикой и графикой. Плагин Unreal можно просто перетащить в любое окружение Unreal Engine.


Deep image prior

Deep Image Prior — это глубокая свёрточная нейросеть для восстановления повреждённых изображений, которая не использует машинное обучение. Инструмент способен восстанавливать картинки с пробелами, размытыми пятнами, убирать артефакты, шум и лишний текст.


Open Pose

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


pirateAT

PirateAI тренирует автономных агентов (пиратов) в смоделированной среде (на острове). Репозиторий использует комбинированную систему обучения, чередуя игры (найти сокровища) и тренировочные сессии моделей (Keras + hyperopt).


EmojiIntelligence

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


Deep Exemplar-Based Colorization

Deep Exemplar-Based Colorization — это первый метод раскрашивания картинок по образцу на основе глубокого обучения. Свёрточная нейросеть получает цветное референсное изображение и применяет его цветовую гамму к чёрно-белому. Реализация одноимённой научной работы.

Обсуждение