Тема диплома: как связать системное программирование и AI (комп. графику, комп. зрение)?
Хабр, обращаюсь к вам ко всем с этим вопросом, потому что понял, что без вашей помощи ничего не получится…
Вкратце — вопрос в том, что нужна тема для дипломной работы, объединяющая интересы кафедры, на которой я оказался — системное программирование и тестирование — и мои собственные — AI, графика, комп. зрение, машинное обучение — т.к. связать своё дальнейшее обучение хотелось бы как минимум с другой кафедрой. И я отчаялся уже в поисках темы, поэтому и прошу вас подсказать что-нибудь актуальное в этих направлениях. А проигнорировать интересы кафедры не получится — такой диплом просто не примут.
Самое адекватное, что приходило в голову, было связано с реализацией сетевого взаимодействия для каких-нибудь там распределенных нейросетей, но это всё основано на моих дилетантских предположениях.
И графические темы, и AI-шные темы вызывают у меня одинаково высокий интерес, так что я буду очень благодарен за советы и предложения по любым из них.
Спасибо!
P.s. Сразу оговорюсь, что как-то использовать курсовые — не вариант, в одной мне пришлось тестировать Android на совместимость с LSB, в другой — перехватывать sysenter из-под гипервизора. Консультироваться всё равно было не с кем, так что и в дипломной я на это не рассчитываю — благо, есть целый учебный год, чтобы разобраться. Но вот предложить тему надо, скорее всего, уже в начале сентября.
Вам нужна тема, в которой основа — AI (ну или что то еще из вышеперечисленного), а системное программирование — дополнение, или наоборот? Просто диплом с распараллеливанием нейронных сетей и реализация их взаимодействия — это все таки больше в сторону AI, чем системного программирования.
А если что-то, связанное с интерфейсом на основе отслеживания действий пользователя? Аля интерфейс в «Особом мнении»?
Что-то слегка похожее было тут habrahabr.ru/blogs/programming/126290/
или что-то типа kinekt, но для отслеживания мелкой моторики рук.
отслеживать камерой или даже двумя движения пальцев, что позволило бы операции со всякими 3d-модельками, графическими образами и т.п.
правда это опять таки интерфейс получается, можно ли его к системному порграммированию причислять — не ясно.
Если подходит вариант «нечто системное с использованием AI» — то да, тут оконные менеджеры, реализация нового пользовательского инетрфейса, вариантов взаимодействия «компьютер-пользователь», может прогнозирования действий пользователя и т.д. Но не уверен, что для диплома такая глубина системного программирования подойдет (как по мне — сильно поверхностно). А вот вариант «AI с использованием чего-то системного» — это намного интереснее. Тут и распараллеливание процесса для тех же нейросетей или ген.алгоритмов, и создание API-шек и фреймворков, которые будут реализовывать функционал AI. И напоследок — встречал тему диплома «Проектирование компьютерных сетей с использованием алгоритма муравьиных колоний» — отсюда можно что то придумать в сторону оптимизаций.
— тестирование
есть такая тема как автоматическое тестирование графических интерфейсов, в том числе и web. Самое сложное там в том что надо бы определять отклонения от требований. 1-2 пиксельные разницы обычно не ошибка, но бывает важен align элементов относительно вертикали или горизонтали. Также важно отслеживать поведение и реакцию.
Все это крайне сложно прописать в виде правил или сравнение с эталоном — так что тут и AI или экспертная система и распознавание.
есть еще некоторые активности где сложно прописать правила, например как выделить (D)DoS атаку на сайт, как выделить взломанный аккаунт по поведению. Я правда не уверен что это системное программирование, скорее безопасность или сетевое администрирование. В принципе в сетях есть задачи для AI, правда опять же не уверен что они могут быть притянуты к нужной кафедре.
Можно попробовать самолечищащие системы. Обнаруживает проблему в работе компа, понимает что это за проблема и лечит. Может учиться лечить у людей, ну и вообще можно покопать в этом направлении
Берете любой алгоритм (или алгоритмы) ИИ и пишете их версию, распараллеленную между несколькими компьютерами. В качестве языка реализации горячо рекомендую Erlang.