Привет! Меня зовут Антон Шалин, я аналитик данных и data scientist.
В этом репозитории вы можете найти некоторые из моих практических проектов по data science (нейросетям).
Работы по аналитике данных смотрим в соседней ветке
- Инструменты для создания, обучения и применения нейросетей:
Python,Keras/Tensorflow,Pandas,Numpy,Matplotlib - Среды:
Google Colab,Jupyter Notebook,Docker
- Подобрать и реализовать подходящую архитектуру модели для распознавания (классификации) звуковых событий.
- Прочитать mp3 файлы с аудиодорожками, перевести их в формат принимаемый нейросетью.
- Проанализировать состав и содержимое каждой дорожки, провести фильтрацию и адаптацию данных.
- Повести финишный анализ, вычленить присутствующие звуковые события и соответствующие временные метки (длительность, время начала и окончания событий).
- Оформить код и инструкции для использования другим специалистом.
- Упаковать решение в Docker.
- Подробное описание решения и результатов проекта представлено в соседней ветке моего репозитория audio_event_detection
- Задача №1. Определение аудиожанров по фрагментам дорожек.
- Задача №2. Идентификация пассажиров автобусов по признаку входящий/выходящий.
- Задача №1. Построил одномерную сверточную модель Conv1D со скользящим окном. Получил точность классификации жанра на тестовых данных 60%.
- Задача №2. Построил Conv2D + Dense модель с модулем аугментации несбалансированных данных датасета. Получил точность распознавания 91% на тестовом наборе данных.
- Задача №1. Прогноз трафика сайта по историческим данным. Добиться максимально точного соответствия между графиками корреляции исходного сигнала и прогноза.
- Задача №2. Прогноз цены акций на 3 шага вперед.
- Задача №1. Характер данных не очень сложный, с выраженными периодами колебаний. С такой задачей отлично справилась модель на одномерных свертках Conv1D + Dense.
- Задача №2. Предсказание цен акций хорошо известно своей сложностью. Неплохих результатов прогноза на архитектуре сети seq2seq 3 значения вперед удалось добиться при обучении на трехлетнем датасете минутных данных при анализе по истории скользящим окном на 240 значений.
- Задача №1. Очистить картинку от "загрязнений" черными квадратами в случайных областях.
- Задача №2. Построить и научить нейронку генерировать картинки по набору признаков (структурированному описанию).
- Задача №3. Научить нейронку генерировать фейковые картинки, пытаясь выдать их за настоящие из предложенного набора.
- Задача №1. Взял исходные картинки. На них в случайных местах нанес чёрные квадраты размером 8х8. Сделал сверточный автокодировщик (CAE) и обучил его восстанавливать оригинальные изображения из "зашумленных" квадратом изображений. Получил практически идеальный MSE на тестовой выборке: 0.003
- Задача №2. Взял гугловский датасет с мультяшными персонажами и файлами описаний к ним. Построил и обучил сверточный вариационный автокодировщик (СVAE) на данном датасете. В итоге модель генерирует новых персонажей только по таблице описаний-признаков из 19 случайных значений.
- Задача №3. Для таких задач придумана архитектура генеративно-состязательных сетей (GAN). В них кодер пытается создать картинку из шума максимально похожую на оригинал, а декодер стремиться максимально точно выявить подмену и указать оригинальная или созданная кодером картинка ему предъявлена. В результате такой состязательности в процессе обучения, кодер становится способен создавать картинки, которые декодер в пределе правильно распознает с вероятностью 1/2. Вот именно такую нейронку построил и обучил в рамках имеющихся вычислительных возможностей Google Colab.
- Задача №1. Сегментация изображений со стройплощадки. Требуется заполнить соответствующим цветом области на изображении по 7 категориям объектов на них.
- Задача №2. На датасете изображений клеток решить задачу сегментации для новых несегментированных изображений.
- Задача №1. Изображения со стройплощадке отличаются множеством мелких деталей, хаотично раскиданных по обрабатываемому полю. При этом сегментировать требуется довольно крупные участки и с четким выделением границ объектов по классификатору объектов. Одна из лучших архитектур для такой задачи является PSPnet. Именно ее и реализовал для решения этой задачи.
- Задача №2. Архитектура U-Net тоже отлично подходит для задач сегментации изображений, так как эффективно сочетает контекстную информацию с локальной, что позволяет точно сегментировать объекты на изображении. Для решения этой задачи я применил модифицированную версию архитектуры U-Net, усилив ее блоками внимания CBAM, которые разместил после каждого сверточного блока как в энкодере, так и в декодере. Это помогло модели лучше фокусироваться на ключевых признаках на каждом уровне абстракции.
-
Задача. Создать полную архитектуру трансформера и обучить модель для перевода русского текста на английский. Используем базу ted_hrlr_translate/ru_to_en из tfds.
Добиться более-менее адекватного перевода текста.
-
Сформировал все необходимые архитектурные классы для сборки трансформера: CustomMHA (класс многоголового внимания), класс слоев энкодера, класс слоев декодера, энкодер, декодер и полную модель тренсформера. Для настройки изменения learning_rate в процессе обучения сделал класс CustomSchedule с механизмом прогрева warmup. Дополнительные функции: позиционное кодирование, маски для корректной работы механизмов внимания (учет padding в последовательностях и предотвращения "заглядывания" в будущее).
Собрал и обучил трансформер для перевода текста ru-en в рамках возможностей ресурсов Google Colab.
- Email: anton.shalin@gmail.com
- Tel: +79025666002
- Telegram: https://t.me/anton_shalin