Все потоки
Поиск
Написать публикацию
Обновить
8.8

TensorFlow *

открытая библиотека для машинного обучения

Сначала показывать
Порог рейтинга
Уровень сложности

UNet++: Реализация архитектуры UNet++ на TensorFlow для сегментации ядер клеток

Время на прочтение9 мин
Количество просмотров10K

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

Читать далее

Одновременная генерация структурированных табличных данных и изображений при помощи GAN

Время на прочтение9 мин
Количество просмотров2.8K

Мы хорошо знаем GAN за успехи в создании реалистичных изображений. Не так хорошо знаем о формировании табличных данных. Однако их возможно применять при одномоментной реализации табличных данных и изображений.

Зачем генерировать одновременно табличные данные и изображение?

Я создал приложение coronarography.ai. На вход нейронной сети подаются структурированные данные (факторы риска развития сердечных заболеваний) и изображение ЭКГ, на выходе получаем патологию магистральных артерий сердца. Мне стало интересно проверить точность прогнозирования обученной нейронной сети на синтетических сгенерированных данных. Почему бы и нет) Проведем аугментацию выборки при помощи GAN и посмотрим точность обученной нейронной сети на синтетических данных. Для этого необходимо эти синтетические данные получить.

Описание проблемы

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

Нам необходимо одновременно генерировать структурированные данные (факторы риска и таргеты виде поражения артерий сердца) и картинку - ЭКГ изображение. Я в литературе не встречал подобных примеров, чтобы генерировали одновременно табличные данных и картинку. Что ж, сделаем впервые). Сгенерируем 1500000 синтетических наблюдаемых в виде табличных данных и ЭКГ изображения.

Читать далее

Создание изображений с использованием генеративно-состязательных нейронных сетей (GAN) на примере ЭКГ

Время на прочтение6 мин
Количество просмотров21K

Для создания изображений с помощью GAN я буду использовать Tensorflow.

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

Как работают GAN?

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

После этого сгенерированные изображения передаются в дискриминатор вместе с фактическими точками данных из исходной концепции. Дискриминатор фильтрует информацию и возвращает вероятность от 0 до 1, чтобы представить подлинность каждого изображения (1 соответствует реальному, а 0 соответствует ложному). Эти значения затем проверяются на точность и повторяются до тех пор, пока не будет достигнут желаемый результат.

Зачем генерировать изображение ЭКГ?

Я создал проект coronarography.ai . В нем на вход подается изображение ЭКГ, а на выходе мы получаем наличие патологии магистральных артерий сердца. Мне стало интересно проверить принципиальную возможность генерации изображений ЭКГ и сравнить полученные изображения с реальными.

Читать далее

Применение генеративно-состязательных нейронных сетей (GAN) в клинических исследованиях

Время на прочтение2 мин
Количество просмотров2.4K

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

Существует 3 основных фазы клинических испытаний — фазы с 1 по 3. Испытания фазы 1 — это самые ранние фазы испытаний, а испытания фазы 3 — испытания более поздней фазы.

Некоторые испытания имеют более раннюю стадию, называемую фазой 0, а некоторые испытания фазы 4 проводятся после того, как лекарство было лицензировано.

Читать далее

CORONAROGRAPHY.AI

Время на прочтение15 мин
Количество просмотров4.8K

Предложен новый подход в выявлении коронарной болезни сердца. С помощью нейросетевого анализа создана модель диагностики ишемической болезни сердца, выявляющая ишемию миокарда, патологию магистральных коронарных артерий. В задачу исследования входило сравнить точность обученной модели нейронной сети на входных структурированных данных (пол и возраст, уровень холестерина, наличие хронических заболеваний, наследственные факторы, образ жизни и пр.)  и ЭКГ-изображений с результатами классической инвазивной коронарографии. Доказана высокая чувствительность и достоверность предложенной диагностической модели на 1500150 наблюдений. Проведено сравнение модели с классическими методами диагностики преходящей ишемии миокарда – тредмил-тест, суточное мониторирование ЭКГ. Выявлено значимое превосходство представленной диагностической модели. Оценена точность прогнозов с профильными специалистами-кардиологами, ежедневно курирующих пациентов с ОКС. В данной статье также предложен новый метод экстраполяции выборки с помощью генеративно-состязательных нейронных сетей, позволяющим превзойти объём наблюдений, использующихся в классических мета-анализах.

Создано мобильное приложение для определения патологии артерий сердца.

IOS

Android

Читать далее

Hex: Мастерим бота

Время на прочтение29 мин
Количество просмотров3.1K
— Стало быть, эта штуковина только выглядит так, будто умеет думать? — Э… да.
— А на самом деле не думает? — Э… нет.
— То есть просто создаёт впечатление, будто бы думает, а на самом деле это всё показуха?
— Э… да. — Ну точь-в-точь как все мы.

                    Терри Пратчетт "Санта-Хрякус"

Триумфальные победы AlphaGo (и впоследствии AlphaZero) всколыхнули интерес общественности как к нейросетям, так и к настольным играм. Конечно, есть люди, которые считают, что AlphaZero «побеждает нечестно», поскольку на самом деле учится не совсем с нуля, а использует поиск Монте-Карло, в дополнение к тому, что ему советует нейросеть (говоря серьёзно, использование языковых моделей, в применении к настольным играм, выглядит интригующим и я желаю всяческих успехов в этом направлении), но хочется поэкспериментировать с чем-то не требующим грандиозных вычислительных мощностей и получить на выходе что-то, пусть и не играющее «на уровне Бога», но вполне пригодное для того чтобы играть с ним было интересно.

Мне важен результат и я готов использовать минимакс, Монте-Карло или даже нейросети, лишь бы добиться хоть какого-то успеха (особенно с учётом некоторых ограничений накладываемых JavaScript на производительность, по сравнению с компилируемыми языками и массовым использованием GPU). Разумеется, начинать эксперименты с Го несколько самонадеянно. К счастью, это не проблема. Я знаю много других игр.
Читать дальше →

Учим Алису здороваться

Время на прочтение5 мин
Количество просмотров40K

Хочу поделиться опытом добавления некоторой вольности Алисе (внутри колонок поддерживающих локальный API).

Идея заключается в том, чтобы Алиса реагировала на присутствующих людей. Для этого их необходимо идентифицировать, например, с помощью распознавания лиц. В статье будет использован самый простой (на мой взгляд) вариант создания модели для распознавания лиц – тренировка модели в Google Teachable Machine, так как он не требует знаний и хорошего железа.

Читать далее

Как обнаружить выбросы автоэнкодером?

Время на прочтение7 мин
Количество просмотров5.1K

Если что-то не сжимается — возможно, что-то тут не так



Выпадающие значения, также называемые «выбросами», — привычная всем преграда, о которую спотыкаются наука о данных и машинное обучение. Концепция выпадения значений интуитивно понятна, но математическому определению поддаётся с трудом. Думаю, дело в том, что придумать такое определение довольно сложно, ведь выброс может по-разному восприниматься разными людьми. Подробности — к старту нашего флагманского курса по Data Science.

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

Multiple Instance Learning (MIL) для классификации наборов гистологических изображений со светлоклеточным раком почки

Время на прочтение5 мин
Количество просмотров1.5K

С учётом актуальности Multiple Instance Learning (далее: MIL) и, в частности, наличия преимуществ данного метода для анализа гистологических изображений, решил попробовать обучить модели с целью классификации наборов данных, на те, которые содержат только нормальные ткани и те, в которых встречаются изображения со светлоклеточным раком почки.

Читать далее

Конвертация нейросети из PyTorch в Tensorflow

Время на прочтение12 мин
Количество просмотров4.9K

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

Читать далее

Ищем скрытые смыслы. Графовые нейронные сети на основе Spektral

Время на прочтение5 мин
Количество просмотров4.7K

Развитие методов глубокого машинного обучения привело к росту популярности нейронных сетей в задачах распознавания образов, машинного перевода, генерации изображений и текстов и многих других. С 2009 года нейронные сети попытались применить напрямую в задачах обработки графов (к которым могут относиться системы веб-страниц, связанных ссылками, словари с определенными отношениями между словами, граф социальных связей и другие) и среди возможных задач можно определить поиск кластеров узлов, создание новых графов на основе имеющейся информации о структуре графа, расширение графа и предсказание новых связей и другие. Сейчас выделяют несколько типов нейронных сетей на основе графов - сверточные графовые сети (Convolutional Graph Network), графовые изоморные сети (Graph Isomorphism Network) и многие другие и они часто используются для анализа цитирования статей, исследования текста (представление предложения как графа с указанием типов отношений между словами), изучения взаимосвязанных структур (например, исследования белковых молекул, в частности сеть Alphafold использует модель GNN) и т.д. В статье мы рассмотрим некоторые общие вопросы создания и обучения графовых сетей на основе библиотеки Python Spektral.

Читать далее

4х повышение разрешения изображения с использованием ESRGAN

Время на прочтение2 мин
Количество просмотров12K

4х повышение разрешения изображения с использованием ESRGAN

В данной статье разобрано применение предобученной нейронной сети ESRGAN для увеличения разрешения изображения в четыре раза c использованием tensorflow hub.

Читать далее

Введение в автоэнкодеры

Время на прочтение8 мин
Количество просмотров10K

Чем больше данных, тем лучше, но слишком большое число признаков может оказаться неэффективным в плане повышения интерпретируемости или производительности. Материалом о возможном решении от доктора Роберта Кюблера делимся к старту флагманского курса по Data Science.

Читать далее

Ближайшие события

Коллапсирующие CNN: аппроксимация, имитация и щепотка спектральной магии

Время на прочтение14 мин
Количество просмотров5.3K

Можно ли ускорить обученную сверточную нейросеть? Можно ли заметно сократить ее веса, не снижая точности? Можно ли найти и «обезвредить» узкие места в модели, препятствующие достижению максимальной точности? Можно ли радикально изменить архитектуру готовой сетки, не прибегая к обучению с нуля?

А вот и посмотрим

Подгон под MNIST-овский датасет

Время на прочтение7 мин
Количество просмотров10K

В интернете можно найти 1000 и 1 статью по тренингу мнистовского датасета для распознавания рукописных чисел. Однако когда дело доходит до практики и начинаешь распознавать собственные картинки, то модель справляется плохо или не справляется вовсе. Преобразуем произвольное изображение числа под MNIST-овский датасет.

Читать далее

Классификация гистологических изображений со светлоклеточным раком почки, используя Keras

Время на прочтение5 мин
Количество просмотров3.6K

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

1)    Получение полнослайдовых изображений (WSI) – подготовка датасета.

2)    Аннотация изображений

3)    Получение готового датасета (Train, Validation и Test)

4)    Выбор и тренировка моделей

5)    Тестирование моделей

Читать далее

Распределённое глубокое обучение: параллелизм моделей и данных в TensorFlow

Время на прочтение12 мин
Количество просмотров7.9K

Значительное количество задач, предусматривающих обучение глубоких нейронных сетей, можно решить на отдельном компьютере, обладающем единственным, сравнительно мощным и быстрым GPU. Но бывает так, что нужно что-то помощнее. Например — данные могут просто не поместиться в память, доступную на отдельной машине. Или окажется, что имеющееся «железо» просто не «потянет» некую задачу. В результате может возникнуть необходимость в горизонтальном масштабировании вычислительных мощностей.

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

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

Эта публикация входит в серию материалов о глубоком обучении. В предыдущих статьях шла речь о создании собственного цикла обучения для задачи по сегментации изображений с помощью U-net. Мы развернули модель в Google Cloud для того чтобы получить возможность удалённого запуска обучения. Здесь я буду использовать тот же код.

Читать далее

Нейронная сеть считает лес кругляк и распознает автомобильные номера. Как это сделано?

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров17K

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

Необходимая подготовка читателя — должно быть общее представление о компьютерном зрении (computer vision) и нейронных сетях. Здесь не будет описаний, что такое сверточная нейронная сеть и т.п., статей по таким основам найдете много на хабре (вот хорошая Глубокое обучение для новичков: распознаем изображения с помощью сверточных сетей). В то же время, совсем новички могут получить представление, какие знания и компетенции нужны для решения подобных задач.

Читать далее

Перенос нейронной сети из PyTorch на Google Coral

Время на прочтение13 мин
Количество просмотров4.8K

Всем привет! Меня зовут Антон Расковалов и мы с командой  отдела перспективных исследований «Криптонит» решили проверить, можно ли использовать Google Coral в решении наших задач. Приобретённым опытом делюсь в статье ниже.

Санкции вынуждают пересматривать подходы к организации ИТ-инфраструктуры, в том числе — искать альтернативу облачным ИИ-платформам. Одним из вариантов является использование специализированных ускорителей с нейропроцессорами, которые физически находятся на стороне клиента. Даже на фоне санкционного давления их можно купить на AliExpress и оплатить банковской картой, выпущенной на территории России.

Данная статья посвящена переносу нейронных сетей написанных на одном из самых популярных фрэймворков, PyTorch, на Google.Coral, один из самых "производительных ускорителей"

Читать далее

Передаём GPU-буферы напрямую в TensorFlow Lite

Время на прочтение7 мин
Количество просмотров3.7K

Привет, Хабр! Меня зовут Олег, я работаю с машинным обучением в VK Видео, внедряю нейросети в Клипы ВКонтакте для создания эффектов дополненной реальности. В статье расскажу, как запустить TensorFlow Lite сетку с передачей GPU-буферов — как входного, так и выходного. Этот подход помогает сэкономить на пересылке данных между CPU- и GPU- памятью, когда данные уже находятся в GPU-памяти и модель применяется с помощью GPU-делегата TensorFlow Lite. 

Весь процесс покажу на примере реализации для Android, код можно найти в моём GitHub-репозитории.

Читать далее