# Общие сведения ### Ткаченко Андрей Александрович - **Дата рождения:** 12.12.1988 (33 года) - **Телефон для связи:** +7 987 317 99 92 - **Email:** andrey@aidev.ru - **Место проживания:** г. Саратов, Российская Федерация - **Общий стаж в разработке**: более 13 лет # Ключевые навыки - Rust, Python, Rescript, PostgreSQL, NLP, Computer Vision, Torch, Onnx, Speech Recognition, AWS, Docker, WebAssembly, Git, Linux # Исследования и разработки #### Исследование в области трекинга объектов Исследование проводилось в ходе разработки системы детектирования ДТП с камер наружного наблюдения в рамках сотрудничества с компанией http://satellite-soft.ru . Изначально использовался переписанный мною [deep-sort](https://arxiv.org/abs/1703.07402) на Rust (код доступен по ) затем был разработан улучшенный подход в предсказании учитывающий движение автомобилей по кривой (квадратичной параболе) - [qtrack](https://git.aidev.ru/andrey/qtrack). Проект завершен. #### Исследование - дообучение языковой модели (LM) для системы разпознавания речи на базе VOSK В рамках проекта (по заказу RingDNA) был разработан сервер по переводу речи в текст (STT) на базе [VOSK](https://github.com/alphacep/vosk-api), а также дообучена языковая модель по представленному датасету. Была также предпринята попытка дообучения акустической модели. Проект завершен. #### Исследование в области применения технологий constraint programming в анализе текста К сожалению, исследования были начаты в рамках стартапа, который не смог состояться. Но были проведены весьма интересные изыскания. Был выбран открытый проект и базовой фунциональностью [puzzle-solver](https://git.aidev.ru/andrey/puzzle-solver) и доработана поддежка [диапазонных чисел](https://gitlab.com/bit-refined/ranges/), а также начата разработка по адаптации данного решателя к дереву [FST](https://en.wikipedia.org/wiki/Finite-state_transducer) которое было сгенерированно по списку из команд для голосового помощника. Проект не завершен. #### Исследование - разработка стекового процессора на языке verilog В рамках курсовой в университете был разработан процессор с минимальным набором инструкций [Forth](https://en.wikipedia.org/wiki/Forth_(programming_language)). А также компилятор с языка [Forth](https://en.wikipedia.org/wiki/Forth_(programming_language)). Исходный код планирую опубликовать, пока не доступен. #### Исследование - разработка системы подавления фонового шума с массива микрофонов Подавление шума при распознавании команды для голосового помощника методом выбора направления источника ([DOA](https://en.wikipedia.org/wiki/Direction_of_arrival)) и подавления сигналов пришедших из других направлений (с помощью [NMF](https://en.wikipedia.org/wiki/Non-negative_matrix_factorization) и [Dictionary Learning](https://en.wikipedia.org/wiki/Sparse_dictionary_learning)). Исходный код планирую опубликовать, пока не доступен. #### Исследование - эффективное использование алгоритмом кешей процессора Целью данной работы было исследовать техники оптимизации и проблемы возникающие при оптимизации работы с памятью сложных алгоритмов. В качестве алгоритма был выбран алгоритм матричного умножения. Результат - [gemm](https://git.aidev.ru/andrey/gemm) #### Исследование алгоритмов лежащих в основе технологий нейросетей Целью данной работы было детально исследовать работу различных типов слоев нейросетей (свертка, pooling, batch normalization etc.) и их обучение, а также различные типы оптимизаторов. Результат - [yarnn](https://git.aidev.ru/andrey/yarnn) #### Исследование - возможность создания иерархической структуры Sparce Coding Собственная исследовательская работа. Цель - создание алгоритмов разпознавание объектов на изображении (стереопаре) с высокой точность без 'черного ящика' в виде нейронной сети. Была проделана огромная исследовательская работа, в качестве начальной точки отсчета был взят алгоритм [Dictionary Learning](https://en.wikipedia.org/wiki/Sparse_dictionary_learning) и были попытки каскадировать его (аналог слоев с нейросети), потом была реализация идеи добавления инвариантности к трансформациям (масштаб, поворот), а также сделан динамический размер словаря и индексированный поиск по нему, потом изменен принцип обучения (хотя базовый принцип [OMP](https://en.wikipedia.org/wiki/Matching_pursuit) остался прежним, только отпала в небходимости в [SVD](https://en.wikipedia.org/wiki/Singular_value_decomposition) так как элементы словаря были ортогональны по природе - это [кватернионы]() и их декомпозиция сильно упростилась). Наработки в рамках данного исследования не публиковал и не планирую. #### Индексированный поиск по изображениям и сематический поиск по тексту Использование векторных БД типа [Milvus]() и [QDrant](). Развитие [SDK]() для [Milvus](). Разработка UI на языке [ReScript]() + React. #### Системная шина высокоэффективного обмена сообщениями как между компонентами в рамках одной программы так и между приложениями с помощью Redis, RabbitMQ, Kafka или TCP(QUIC). Библиотека используется на нескольких проектах и эффективно организует большое количество очередей и асинхронных задач. Код проекта - [MessageBus](https://git.aidev.ru/andrey/messagebus) #### Сервер транскрипции телефонной речи в текст (STT) на базе [VOSK](https://github.com/alphacep/vosk-api) Разработан многопоточный сервер на языке Rust, нарезающий текст по паузам с помощью библиотеки [VAD](https://github.com/dpirch/libfvad) и подающий отрезки на вход [VOSK](https://github.com/alphacep/vosk-api), а также биндинги к библиотекам. #### Система детектирования ДТП по камерам наружного наблюдения за дорожной обстановкой Сервер, обрабатывающий много потоков видео (RTSP), поиск объектов на кадрах, трекинг объектов, детекторы различных событий/ситуаций, хранилище с функцией ротации, связь с внешней системой принятия решения. # Опыт работы #### Архитектор ПО - Ноябрь 2018 — по настоящее время (3 года 10 месяцев) - США, [ShakaCode Ltd.](https://www.shakacode.com) - Проектирование и разработка высоконагруженных систем с большим количеством данных на Rust. Системы поиска и индексирования. Поиск дублирующихся данных. Нейросетевые технологии комьпютерного зрения и NLP. #### Инженер-программист - Декабрь 2015 — Сентябрь 2018 (2 года 10 месяцев) - США, [TimelineRX Ltd.](http://www.timelinepi.com) - разработка существующего продукта (nodejs, postgres sql, AngularJS), разработка алгоритмов анализа событийно-временных данных на основе нейронных сетей. #### Инженер-программист - Июнь 2015 — Октябрь 2015 (5 месяцев) - Ирландия, [Tapastreet Ltd.](https://tapastreet.com) - Разработка системы анализа облака хеш тегов из соц. сетей (выделение событий) #### UI Инженер - Август 2014 — Июнь 2015 (11 месяцев) - Саратов, [Grid Dynamics](https://www.griddynamics.com) - Разработка и поддержка проектов на AngularJS для платформы https://www.ringcentral.com/ #### Старший инженер программист - Март 2011 — Август 2014 (3 года 6 месяцев) - Саратов, [OpenSoft](https://www.opensoftdev.ru) - Информационные технологии, системная интеграция, автоматизации технологических и бизнес-процессов предприятия, ИТ-консалтинг Разработка и поддержка сайта http://overnightprints.com #### Web-разработчик - Июнь 2008 — Сентябрь 2010 (2 года 4 месяца) - Саратов, [ООО "АйТи Акцент"](http://itaccent.ru) - Информационные технологии, системная интеграция, разработка программного обеспечения. Разработка сайтов на PHP и JavaScript. # Образование Высшее. **Саратовский Государственный Технический Университет им. Ю.А. Гагарина** Факультет Электронной Техники и Приборостроения Специальность: Управление и информатика в технических системах 2007-2012гг. # Иностранные языки Английский - Upper-Intermediate # Участие в публичных проектах - [Helix](https://github.com/helix-editor/helix) - https://github.com/helix-editor/helix/pulls?q=author%3Aandreytkachenko - [MilvusSDK](https://github.com/milvus-io/milvus-sdk-rust) - https://github.com/milvus-io/milvus-sdk-rust/pulls?q=author%3Aandreytkachenko # Хобби Сноубординг, Кайтсерфинг, Кайтбординг, Велопоходы, Конные походы, Скалолазание