Экспериментальное программирование, или шаманский код в компьютерном зрении

Компьютерное зрение — это именно те интересные задачи, о которых мечтают украинские сеньоры, разбирая очередной гуано-код веб-проекта за сыр и автомобиль. Тема, в которую включено множество адски сложного матана, шаманства и просто компьютерной магии. Причем всё это часто по сложности сравнивается с квантовой теорией, хотя практической пользы от последней гораздо меньше.

Так вот, компьютерное зрение — это определенный набор алгоритмов, в большинстве случаев эвристических, каждый из которых может взять один образ, сравнить с другим и выдать степень их соответствия или принять некое решение (опять же, на основе соответствия распознаваемых образов и соответствия им определенного решения или действия). Причем эффекты применения разные: от отнесения пиксела изображения к фону или образу (бинаризация) до определения траектории движения в 3D-пространстве. В некоторых случаях и там, и там в основе может использоваться одна и та же алгоритмическая база.

Теория

Допустим, перед вами ставится задача обыкновенного поиска изображений в базе на основе эталонного изображения. Вы берете один из методов — ну, скажем, попиксельного сравнения после выравнивания контраста и эквализации. Скорость работы — просто супер, полностью линейная O(N), где N — количество пикселов, а O = двум операциям — эквализации и обычному сравнению двух изображений. Вот только при этом любой поворот, изменение масштаба, да и банальный сдвиг изображения относительно эталонного из базы — уже беда. Понимаешь, что скорость — это, конечно хорошо, вот только качество ниже плинтуса. В результате берешь какой-нибудь уголковый детектор Хариса, где происходит поиск и выделение опорных точек с последующим их сравнением, реализуешь его и получаешь, что качество, конечно, супер, причем практически инвариантно к масштабу, повороту и смещению. Вот только скорость упала в 1500 раз. Оптимизируешь детектор в нечто типа SIFT’а, где незначительные детали отбрасываются, и сопоставление точек производится в некотором радиусе, а верхний предел количества опорных точек задан константой. Вместо картинок в базе уже хранишь их индекс (вычисленные дескрипторы). Скорость уже всего в 15 раз ниже по сравнению с первым вариантом, качество распознавания чуть упало по сравнению с оригиналом. Тимлида все устраивает, и решение идет в продакшен.

Ты рад, ты крайне рад, потому что результаты магии оказались успешны. А потом оказывается, что по новым требованиям нужно распознавать зашумленные и размытые картинки. Ты выдираешь из головы последние волосы и идешь читать материалы про scale-space.

Проблемы

Одна из основных проблем в CV состоит в том, что компьютеры медленные, они жутко медленные, и имеют крайне мало памяти, ведь обычная матрица типа float в A4 при разрешении 600dpi (35 мегапикселов) занимает в памяти 140 мегабайт, а иногда для работы требуется 2-7 таких матриц. Вот и имеем гигабайт на обработку только одного документа.

По поводу скорости — проблема в том, что любой человек очень умный, даже если кажется, что тупой. Зрительная кора — это 20% от объема мозга. В среднем мозге 8 миллиардов нейронов, при этом один нейрон имеет около 20K синапсов, и бета-ритм (в состоянии бодрствования) составляет от 14 до 30 Гц. В результате, чтобы смоделировать человекоподобную систему зрения на основе матрицы связей с типом float, нам понадобится вычислительный модуль с полпетабайта ОЗУ под задачу и с пиковой производительностью почти 20 экзафлопс. Нет, такие компьютеры уже даже есть, вот только их пока пара на весь мир.

Практика

Продемонстрировать вышесказанное можно на примере Apple Siri, искин-помощницы для смартфонов iPhone, ядро которой использует суперкомпьютер Watson, обладающий объемом памяти в 15 Тб ОЗУ и суммарной вычислительной мощностью в 24 Тфлопса. Огромные вычислительные возможности, работа 8 ведущих университетов на протяжении 40 лет — и в результате интеллект на уровне 4-летнего ребенка. Так что дело как и во времена Амосова, так и сейчас заключается в аппаратных ограничениях. Текущая компьютерная техника пока еще находится на крайне примитивном уровне.

Поиск решения в компьютерном зрении — поиск алгоритмов, которые позволят экспериментально найти набор особенностей, которые более-менее соответствуют качеству решения данной задачи (пусть даже и хуже возможного решения человеком), но при этом вполне способны работать online для решения задачи. Это крайне шаманский процесс. Причин несколько. Одна из них — эвристика большинства алгоритмов. К примеру, теорема Колмогорова-Арнольда-Хехт-Нильсона гласит, что двумерная нейросеть с нелинейной функцией активации нейрона способна смоделировать любой детерминированный процесс. Нет, это, конечно, классно, но решение — как из анекдота: «пришёл математик на пожар, вычислил, что решение есть, и пошел дальше». Всё, вплоть до уровней нейросети, количества связей и активационных функций нейронов, приходится подбирать после камлания типа метода отжига или генетических алгоритмов. C новомодными SVM не намного лучше: да, математический базис есть, SVM — это нахождение максимальной разделяющей гиперплоскости (которая может быть и криволинейной поверхностью). Вот только для решения приходится подбирать нечто рабочее из десятка ядер. Несколько методов нахождения этих плоскостей, похоже, основаны на чистой магии.

Еще сложнее найти описатели сцены, которые четко и однозначно позволяют описать данный класс, причем, в идеальном случае, не пересекаются для разных классов. При нахождении достоверных описателей скорость может возрасти на порядки за счет сокращения домена измерений при сохранении или даже улучшении качества. К примеру, стоит задача определить через веб-камеру, достаточно ли на улице освещения, чтобы не включать фонарь. Все очень просто: считаете значение яркости, и по пределу включаете фонарь. Всё, решение есть, причем простое. Внезапно оказывается, что у веб-камеры есть неотключаемый ночной режим, который выставляет практически одинаковую яркость картинки и для дня, и для ночи. Тогда рассчитываем изменение контраста (у ночного режима оно должно быть ниже). И тут внезапно оказывается, что какой-то censored разместил камеру прямо под фонарем, и причина глюков не в ночном режиме.

Заключение

Работа в области ИИ, или компьютерного зрения, — очень шаманский процесс. Ты получаешь задачу, просматриваешь известные и уже ранее использованные методы решения, просматриваешь статьи, где описаны другие способы решения. После чего строишь гипотезу решения. В данном случае строится гипотеза по нахождению особенностей, и неважно, будут это опорные точки или карта глубины для перевода объекта в 3D. Далее подбирается алгоритм классификации. Алгоритм классификации несколько менее влияет на качество, чем неправильный подбор особенностей, но все-таки он важен. По сути, подбор алгоритма — это как выбор фреймворка: разница есть, но в проценты. Неправильный выбор описателей намного болезненнее. Далее тестируешь свою гипотезу на входном тестовом наборе (да, здесь разработка без предварительной разработки тестовых модулей попросту невозможна, без неё в конечном результате вообще нет смысла) и иногда получаешь высокое качество классификации и низкую скорость, иногда наоборот. А иногда — оба случая вместе, низкое качество и фиговую скорость :). И уже на основе полученных данных ты принимаешь решение: корректировать гипотезу до полного схождения с тестовыми данными (это больше похоже на баг-фиксинг, когда ты совершенно не представляешь, почему выскакивает именно этот баг) или отбросить её полностью и начать с другой. И так — до победного конца, пока качество и приемлемая скорость не сойдутся. В результате, в редких случаях, имеем превращение шестёрок в восьмерки, так как это хоть и не оптимально, но приемлемо.

Подытожив, давайте определимся, что же такое работа разработчиком в компьютерном зрении. Во-первых, это интересно, в противном случае я бы в эту область не пошёл: работать в Web в разы проще. Это одновременно совмещение работы бизнес-аналитика, разработчика, тестировщика и баг-фиксера, причем над одной и той же задачей. Ну, и это еще, похоже, единственная область, где разработка в духе MIT 60-х остаётся не обычным рабочим процессом, а шаманством, искусством и магией.

👍НравитсяПонравилось0
В избранноеВ избранном0
Подписаться на автора
LinkedIn



Підписуйтесь: Soundcloud | Google Podcast | YouTube

89 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Проект «Человеческий мозг» официально стартовал habrahabr.ru/post/196732

Что есть в ABBYY FineReader и есть в мозгу любого хорошо видящего животного, но о чём постоянно забывают любители теории машинного зрения?
Это очень большая база образов и очень эффективный механизм разпознавания этих образов на изображении. Причём, в случае зрения, эти образы не примитивны, а иерархичны, каркасны, с учётом топологии и возможных зависимостей... да, с учётом *любых* закономерностей, встречающихся в окружающем нас мире.
Например, FineReader не просто тупо читает отдельные графические образы символов, он ожидает увидеть «образы» в виде правильных слов, а потом, возможно, проверяет их уместность и согласованность по контексту (подходит для сокращений и аббревиатур).

Я уверен, что принцип зрения такой: изображение из глаз сначала обрабатывается «препроцессором», который акцентирует углы, линии, 3D положение объектов, выделяет примерные границы объектов и поверхностей, их изгибы и прочее, а затем передаёт информацию дальше — в очень большой и мощный сопоставитель образов. Сопоставитель образов тесно работает с моделью ближнего окружающего пространства — «кэшем» (памятью) текущих распознанных образов, наложенных в сознании на видимое изображение. Из огромной базы визуальных образов, накопленных на протяжении всего жизненного опыта, выборка и поиск делается автоматически, параллельно и практически мгновенно — и это то, что ещё очень трудно реализовать на компьютерах ввиду их слабого вычислительного параллелизма (привет, ПЛИСы) и удалённости от принципов «специализированного аналогового вычислителя». Ну никак на современном компе не решить за 5 секунд миллиард нелинейных дифференциальных уравнений 16-го порядка. Далее, есть ещё и «отслеживатели», которые следят за актуальностью модели пространства в мозге, отслеживают перемещения и изменения объектов, передают на анализ новые объекты. Далее, есть «точка внимания», которая скачет по готовым объектам и передаёт на распознавание объекты у объектов.

По рзелульаттам илссеовадний одонго анлигйсокго унвиертисета, не иеемт занчнеия, в кокам пряокде рсапожолены бкувы в солве. Галвоне, чотбы преавя и пслоендяя бквуы блыи на мсете. Осатьлыне бкувы мгоут селдовтаь в плоонм бсепордяке, все-рвано ткест чтаитсея без побрелм.
Пичрионй эгото ялвятеся то, что мы не чиатем кдаужю бкуву по отдльенотси, а все солво цликеом.

PS: у акул найден забавный глюк модели мира: если мелкую акулу резко перевернуть, то она впадает в транс, дезориентируется.

Это очень большая база образов и очень эффективный механизм разпознавания этих образов на изображении.

Правильно, чем больше база образов — тем выше интеллект. Только для того чтобы оперировать данной базой нужен или очень эффективный алгоритм, или высокая вычислительная мощность. А лучше и то и другое вместе. Иначе наш мудрый интеллект будет огромным тормозом.

Да, для интеллекта мало одного распознавания образов, тут ещё необходим некий «логический процессор», ответственный за построение контекстных зависимостей сущностей, поиск аналогий, выявление новых деталей, глубокий перебор графа вариантов логических цепочек в поисках решения задач, и всё это может в реальном мире идти не чётко и детерминированно, по-компьютерому, а лишь с определённым уровнем достоверности, с постоянным поиском в памяти похожих объектов/шаблонов/ситуаций в прошлом, да с построением новых цепочек догадок и опровержений. Хорошо, что Закон Мура пока ещё работает, будет чем нагрузить компьютеры в далёком будущем)

ещё необходим некий «логический процессор», ответственный за построение контекстных зависимостей сущностей, поиск аналогий, выявление новых деталей, глубокий перебор графа вариантов логических цепочек в поисках решения задач

Чем это отличается от распознавания образов?

да с построением новых цепочек догадок и опровержений.

Паттерн получивший положительный отклик — встраивается в базу знаний (образов).

Хотя согласен — должно быть несколько слабосвязных систем взаимодействующих друг с другом, каждая из которых должна быть полуавтономной.

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

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

При распознавании объекта, на самом деле на распознавание также отправляются его части, которые так же являются объектами, и всё это идёт в контексте уже распознанных объектов и пространств. Например, круглое стеклянное под потолком — это должна быть лампочка/люстра, а похожее на «веер» + «дерево» + «верёвка» + «копьё» + «стена» + «змея» — это слон (это из древней индийской сказки «Мудрецы и слон»).
При этом само распознавание выглядит упрощённо так: выделяются сжатые пакеты ключевых особенностей и, как хэши (hash) от данных по объекту, отправляются на миллионы параллельных распознавателей — вдруг кто-то откликнется, как по коду CDMA на одном и том же частотном канале откликается только один телефон по своему паттерну сигнала. А тут сложнее, т.к. должна быть учтена вероятность, похожесть в виде уверенности распознавания.

Байесовская сеть

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

К примеру, учитывая ставки банков, существования организации и процент безнадежных кредитов к общей сумме привлеченных средств, сеть может выбрать Ощадбанк, как наиболее надежный банк для долговременного вложения средств, так как в абстракцию не был внесен кидок 1991.

Я уверен, что принцип зрения такой: изображение из глаз сначала обрабатывается «препроцессором», который акцентирует углы, линии
Вначале препроцессор чертовски сильно обрабатывает две картинки с дикими сферическими перевёрнутыми искажениями, сферы которых пересекаются, но наклыдываются с неравномерным двоением. Затем происходит окраска объектов для мозга внутри мозга, ибо человек видит бо большей части цветные пятна вместо цветных пикселей. И т.д.

Есть тут под боком PhD, который строил акул с гребаными лазерами на головах дрессировал рыбок плевать по цветной мишени.

Рассказывает, что кодирование, обработка и распознавание визуальных сигналов (в системе глаз-мозг) — адъ, который изучать и изучать.

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

Отвечу в корне, так как обсуждение распылено по многим веткам.

В чем заключается моё видение интеллекта.
Лично я считаю что интеллект это не только алгоритм, алгоритмов интеллекта может быть сколько угодно. Интеллект это прежде всего синергия алгоритма и базы знаний. Если мы имеем крупную базу знаний, которая может неограниченно наращиваться в реальном времени, то даже на обычных нейросетях мы способны смоделировать разум, который ничем не будет отличаться от естественного биологического (теорема Колмогорова-Арнольда-Хехт-Нильсона). Да функции активации будут другими, но вот связи в нашей системе будут подстроены чтобы иметь возможность адекватно отвечать на стимулы внешнего мира.

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

Поэтому что такое интеллект, в том числе искусственный — синергия вычислительной мощности, базы знаний и сенсорной информации в реальном времени.

Поэтому на вопрос — можно ли захостить фейсбук на мобильном телефоне? Я отвечаю — вполне возможно, только вы получите не фейсбук, а, максимум, местечковый форум. Нет синергии.

1. Откуда оценка необходимых ресурсов?
2.

Если мы имеем крупную базу знаний, которая может неограниченно наращиваться в реальном времени
>>, которая может неограниченно наращиваться в реальном времени
каким образом?
Да функции активации будут другими, но вот связи в нашей системе будут подстроены чтобы иметь возможность адекватно отвечать на стимулы внешнего мира.
Этот подход признан неадекватным лет 60 назад.

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

>>Продемонстрировать вышесказанное можно на примере Apple Siri, искин-помощницы для смартфонов iPhone, ядро которой использует суперкомпьютер Watson, обладающий объемом памяти в 15 Тб ОЗУ и суммарной вычислительной мощностью в 24

Это потому что оно работает самым тупым способом — статистическим анализом текста.
Интересная статья на эту тему www.theatlantic.com/...t-wrong/261637
Также можно просмотреть www.newyorker.com/...currentPage=all

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

Все такие системы не обладают способностьями для вывода новый фактов из уже известных.
SIFT и схожие алгоритмы тупо выделяют feature points и делают сравнения со всей базой. Вычислительный затраты огромные. Мозг работает совсем по-другому:
1. Он создает примерную модель того, что нужно найти(если цель четко задана).
2. Выделяет линии, переходы и тд. на изображении, постепенно поднимаясь вверх по иерархии сложности.
3. Логически отбрасывает невозможные варианты, строит гипотезы и проверяет их.
3. И фаталити — мозг учится использовать любую организованную информацию. Этот механизм находится далеко за горизонтом понимания. Человеку можно в затылок воткнуть матрицу из электродов, которые активируются соответственно яркости изображения и вуаля — человек прозрел. Это то же самое, что в USB воткнуть Ethernet, подождать пару дней и затем наслаждаться новым сетевым устройством.

Все это известно лет 50, но пока нет подхода, который бы позволил интегрировать все механизмы мозга в одной целое — сами по себе они не работают. Если взять зрение, то оно задействует отнюдь не только зрительную кору. Также работают лобные доли, зоны, отвечающие за речь, различные виды памяти.

Вывести из ресурсов, требуемых Ватсоном, уровень ресурсов, необходимых для имплементации мозга невозможно. Это принципиально разные вещи.

P.S.Рекомендую книжку «Глаз, мозг, зрение».

Это потому что оно работает самым тупым способом — статистическим анализом текста.
SIFT и схожие алгоритмы тупо выделяют feature points и делают сравнения со всей базой. Вычислительный затраты огромные. Мозг работает совсем по-другому:

О чем же я говорил — по причине того что мы просто не можем просто взять и повторить в Сири естественный интеллект, а повторить мы не можем по причине недостатка ресурсов, их на пару порядков меньше требуемого, то приходится искать некие подходы которые позволяют выделить именно эти «feature points» и схлопнуть наш «dimensions domain». Это и позволяет хоть как-то «решать» нерешаемые на данном техническом уровне задачи.

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

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

У червя глаз и зрения кстати нет, но проблем от этого не меньше.
Есть принципиально неразрешённые вопросы динамического отражения внешних сигналов и поддержание их в «разумном» виде внутри системы. А интеллект это и есть динамическое, многочисленное переотражения окружающего мира внутри системы

Никто не слышал про проблему — смоделировать движение червя при помощи нейросети. Есть намного более простые способы решения данной задачи — пару десятков тригонометрических вычислений и решение есть.

Наверное поэтому ее никто не решает.

Вопрос не в воссоздании червя, а в отсутстсвии понимая работы даже такой примитивной системы.

Да и червь наверняка получится механистический и будет двигаться как паралитик. Что раз уже было. И первая же землеройка сожрёт его.

Зубы о кремнеорганику поломает :)

Про «недостаточно ресурсов» я читал в книгах 60х годов.
Пускай система обдумывает ответ на вопрос(или запрос) неделю или месяц. Как демонстрация вполне подойдет.
Вот только проблема в другом — никто не знает, как это реализовать даже в рамках спекуляции.

А на телефоне фейсбук вполне пойдет. Меньше юзеров, медленный отклик — но работать будет.

Пускай система обдумывает ответ на вопрос(или запрос) неделю или месяц. Как демонстрация вполне подойдет.

Вы про тестирование подумали? Такую систему придется пилить лет так 300.

А на телефоне фейсбук вполне пойдет. Меньше юзеров, медленный отклик — но работать будет.

Вот только не будет той синергии фейсбука. До фейсбука была куча локальных форумов в сетях, до этого были BBS (FIDO), но отличия были кардинальны, хоть принцип тот же.

Я не говорю про форумы. Фейсбук без всяких убер кластерных вещей вполне запустится на одном телефоне, даст почти тот же user experience и сможет держать десяток-другой пользователей.
Люди линукс на атмеге запускали. Да, грузилось 5 часов. Но работало!

Понимаете, вы говорите красноглазик, которые линукс устанавливают не для того чтобы работать или выполнять задачи, а чтоб попонтоватся что у меня Линукс.

Во времена той же Win95 её на компьютер ставили кому нужна работа, а линукс ставили второй системой просто так.

Так вот, Фейсбук на телефоне будет обычным местечковым форумом без того что делает его социальной сетью. У нас в самом начале был прообраз фейсбука — локальная социальная сеть, роль которую выполнял doc-файл, который каждый мог открыть(обычная виндовс шара серверного диска) и записать в конец сообщение, с датой. Отлично работало. Вот такой мини-фейсбук.

Но я хочу признать что текущая реализация фейсбук несколько удобнее шары doc-файла на диске.

А вы как думаете?

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

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

С другой стороны если читатели заинтересуются, и пойдут по предоставленным в статье ссылкам и начнут читать и изучать то статья себя оправдает :)

Александр, ваша работа интересна и сложна, но вы как будто не признаете того, что _каждый_ из нас делает что-то сложное и интересное в своей отрасли, в чем-то, конечно, менее сложное чем вы.

Тут недалеко и до выяснений, чье шаманство весомее — шаманство математика, программиста или бизнесмена (см. комментарий Алексея), со взаимными обвинениями и спорами вместо сотрудничества.

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

А ваш опыт по-настоящему впечатляет. И многие у вас могли бы поучиться, если бы вы дали им шанс, не считая их, как вы говорите, тупыми :) Кто выигрывает от такой вашей позиции?

А ваш опыт по-настоящему впечатляет. И многие у вас могли бы поучиться, если бы вы дали им шанс, не считая их, как вы говорите, тупыми :) Кто выигрывает от такой вашей позиции?

Я не пытался принижать ничей вклад. Просто, лично мне, работа в проектировании страничек и учетных систем не показалась интересной. Да там тоже было много интересных инженерных решений, но разработка слишком рутинна, ну тоесть там всегда можно предсказать конечный результат. А здесь нечто типа интеллектуального казино, есть азарт найти «верную серебряную пулю». Вот именно об этом я и говорил.

«Какой смысл решать задачу, у которой есть решение?»

Понимаю вас :) Сам тоже ценю инновационную составляющую в своей работе.

Да там тоже было много интересных инженерных решений, но разработка слишком рутинна, ну тоесть там всегда можно предсказать конечный результат.

AI тоже вообще очень и очень рутинный, ну, там данные собирать, вычищать, training set / test set, ставить все эксперименты и пр. Но это такая веселая рутина, на самом деле. (А еще можно всякий croudsourcing / Amazon Mechanical Turk привлекать). Просто тут некоторые могут подумать, что в AI ты только и будешь, что читать умные книжки/статьи, да кодить умные алгоритмы, в реальности это только 5-10% работы.

Ну в общем да, 10% времени написать алгоритм — 90% времени потанцевать над ним с бубном.

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

Смотри идею — открыть облачный сервис который по фото определяет грибы. Не обязательно все, для начала хотя бы 1 вид распознает пусть. Например, бледную поганку. И громким голосом говорит «ты умрёшь ха-ха-ха-ха».

Следующим будет распознавание национальности по разрезу глаз — ты прикинь как будут корчиться прикидываясь китайцем.

Дальше — опознавание возраста по макияжу. Ты прикидываешь сколько баблоплатежеспособных клиентов приведёт сервис, которых потом продашь салонам красоты?

И самое простое — по фоткам частей тела определять мужик или баба. Тупо, весело, а чего ещё надо для трэкшена?

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

Здесь задача может быть проще и интереснее — нечто типа эмпатического плеера. Делаем плеер, который на основе проводимости кожи, пульса, влажности кожи предсказывает настроение владельца и проигрывает музыку по настроение? Такую технологию купят все от Самсунга до Эпла. Да и цена ошибки в работе эмпатического предсказателя — намного ниже чем от ошибки в биржевых котировках.

Согласен насчёт востребованности продукта, не согласен по цене ошибки. Купят или нет — зависит от человеческого фактора. Если этому человеку не понравится — увы.

Сама задача выбора музыки под настроение — не решена. Если знаешь как решить её — остальное и без нейросетей решается. Тупо спросить у юзера ряд вопросов, задать цветовые тесты, волновые тесты — и вопрос решён.

Как бы решал я: взять несколько GIFок с разным колебанием цветов (резкостью) и музыку по срезу тактического ритма на 100Гц или ниже. Сделать соотвествие — и мне уже до лампочки проводимость кожи. И никаких датчиков не надо. В идеале — просто набрать анимированных аваторок, и сделать им в соотвествие библиотеку. И даже под эту задачу задействовать не нейросеть, а живых юзверей.

Для меня проблемой бы стало как найти халявную музыку. Я этим вопросом (легалайзом) никогда не занимался, и не смогу сделать выборку.
Вопрос сложнее — есть ли сервисы с платной музыкой и помесячной оплатой? Можно ли заработать на их продаже? Как вообще, монетезируется музыка?

// Хотя если меня спросить, я всегда предпочту нейросети живых юзверей. Во-первых, их проще достать. И намного проще тестировать идею, потому что я сам живой юзверь, помимо прочего умеющий наследовать поведение и менять настроение.

Кстати, вот пример моей идеи — картинки соответствуют настроению, и сам не вдаваясь в подроьности своего настроения я нажму одну из них. И останусь надолго. Это примитивная реализация, но можно ж и лучше сделать!
Вот, только что попробовал. Процент попадания в настроение 100%. Нейросети говоришь? Не-а! Только пиплы!
Второе наблюдение: если я делаю выбор, этим подтверждаю настроение. Оно становится таким, каким я его выбрал. А следовательно выбор должен занимать 1, максимум 2 секнуды — и тогда он станет резонатором. Я считаю, этой идеей уже можно стартапить.

Блин, все жаловались что на DOU нет обсуждения технических тем, а сейчас все молчат. Неужели тема настолько грандиозна, что дух захватывает и речь отбирает?

Тогда подбавлю, существуют вполне успешные реализации методов классификации (ИИ) даже на Delphi.

Блин, все жаловались что на DOU нет обсуждения технических тем, а сейчас все молчат
А какие коменты вы ожидаете услышать?
Неужели тема настолько грандиозна, что дух захватывает и речь отбирает?
Нет, просто людей которые занимаются компьютерным зрением тут так уж и много. Поэтому большинство просто прочитали и забыли.
Работа в области ИИ, или компьютерного зрения, — очень шаманский процесс.
Я не так глубоко сталкивался с ИИ, но ничего шаманского я там не увидел. А это:
Ты получаешь задачу, просматриваешь известные и уже ранее использованные методы решения, просматриваешь статьи, где описаны другие способы решения.
не особо отличаетсо от других сфер :)
Ну, и это еще, похоже, единственная область, где разработка в духе MIT 60-х остаётся не обычным рабочим процессом, а шаманством, искусством и магией.
Вспомнились (почему-то) слова одного универского препода: То что для дилетанта — магия, для профессионала — ремесло.
А теперь троллинг:
Подытожив, давайте определимся, что же такое работа разработчиком в компьютерном зрении. Во-первых, это интересно, в противном случае я бы в эту область не пошёл: работать в Web в разы проще.
Слова «всеобщность» и «существование», вам о чем-то говорят? И какие между ними отношения? :)
Слова «всеобщность» и «существование», вам о чем-то говорят? И какие между ними отношения? :)

В Украине крайне мало задач, которые дают доступ к ядру системы, а чинить что-то осталось недочиненым после индусов — удручает, там только высокая зарплата может спасать.

И 96% спирт внутривенно (((

Тема хорошая, но не очень понятно каких комментариев вы ждете. Да, вы занимаетесь прикольными вещами. Многим повезло меньше :)

У меня коренное несогласие по применению. До сих пор успешные проекты не пытались делать как мозг, а наоборот — делали другим, лучшим путём, свойственным компьютерам.

Приведу конкретный пример: бомжонок-цыганёнок лет 10 имеет мозг лучше твоего в полтора раза. Готов ли ты доверить ему принимать за тебя решения? Вот и с компьютером будет то же самое — компьютеру не прощают ошибок.

Мне интереснее другой вопрос — наркоман за дозу сделает что угодно. А можно ли в нейросеть внедрить систему вознаграждения, формирующую устойчивую зависимость от стимула? В смысле, обучить её не столько учиться, сколько инициировать попытки. Пробовать, пробовать, пробовать.

Кстати, отдельный вопрос — а есть ли сейчас более-менее фриварные облака или софт, на котором можно без лишних углублений в теорию (и программирование) пробовать конкретные аспекты работы? Желательно общепризнанные, чтобы результатом модно было обмениваться.

А можно ли в нейросеть внедрить систему вознаграждения, формирующую устойчивую зависимость от стимула?

Хм. Метод обратного распространения ошибки ?

Приведу конкретный пример: бомжонок-цыганёнок лет 10 имеет мозг лучше твоего в полтора раза.

Вот представим, мы имеем огромный суперкомпьютер, но на котором можно запускать только Тетрис, в то же время мы имеем убогий по сравнительной производительности планшет, на котором можно запускать кучу другого ПО. Какой из компьютеров ценнее? Я думаю, что если обучить цыганенка, хотя бы лет 5 он сможет стать мировым финансовым воротилой, все что него пока не хватает — это знаний, а знания можно получить, в отличие от соображалки.

Хм. Метод обратного распространения ошибки ?
Боюсь как раз он реализует худшие качества интеллекта. Реальные мозги его реализуют, в том числе для большинства микропроцессов типа терморегуляции. Кроме функциональных недостатков (сокрытие ошибки, расшатывание системы) имеет огромную требовательность к количеству внешних нейронов.

Задачка для выгодного применения нейросети — найти среди множества решений одно. Другими словами, то что пытаются реализовывать — люди умеют и так, и количество людей более чем достаточно. Что действительно нужно — реализация метода научного тыка. То есть научить систему надеяться и бояться. И соотвественно впадать в депрессию или уходить в активное безумие. Только где гарантия, что система не научится выживать?

Сходный вопрос: почему в реальной эволюции победили мозги требующие сна? Ведь технически ничто не мешает гасить нейроны частично, равно как и снижать производительность до поддержания необходимых процессов. Почему именно полная потеря контроля на много часов? Ведь за это время могут сожрать. Другими словами, почему нейросеть с глубоким циклом деградации памяти будет эффективнее?

// Лягушкам только образования не хватает, а так они на всё способны. ©Марк Твен

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

Дельфины так спят — половинками мозга. Возможно, это альтернатива, которая не сложилась у приматов.
Но сама по себе необходимость сна, да, требует обоснования.

Я имею в виду не обоснование, а именно проверку гипотезы. Есть все основания полагать что нейросеть должна иметь цикл сна. То есть процессы, обеспечивающие не только накопление памяти, но и её деградацию. То бишь чистку мусора.

Боюсь, что проверить это мы сможем только построив адекватные модели таких сетей. А это явно не ближайшие 10 лет. Поэтому не буду дальше дискутировать.

Кстати, отдельный вопрос — а есть ли сейчас более-менее фриварные облака или софт, на котором можно без лишних углублений в теорию (и программирование) пробовать конкретные аспекты работы?

А зачем оно вам? Нейросети просто идеально ложатся на SIMD и пости все GPU поддерживают нечто типа вычислительных шейдеров. Так что берете OpenCL, GTX780 и у вас 1.5 Тфлопс производительности. Для большинства задач вполне. Если вам потребуется больше, то у вас, скорее всего, будет что показать тем, у кого есть такие вычислительные ресурсы.

А какой смысл обсуждать рабочие будни?

Немножко на тему как это делает мозг: elementy.ru/...s?newsid=432066

Есть такая модель. Вот только она по скорости не самый топ, у неё самое хорошее качество — возможность переобучения, в остальном аутсайдер. Даже древнейшие нейросети обратного распространения ошибки дают ей фору.

Лично я считаю что для нейросетей не подходит сама модель памяти. И требуется на железном уровне реализовать базовые механизмы неустойчивой памяти.

В идеале конечно пробоать не в столь сложных задачах как кластеризация образов, а в тех где человеческая логика проста. Но не справляется со скоростью обработки. Например биржевые торги — сможет ли машина по ключевым словам информационных фидов поймать настроение рынка? Я считаю что можно и постартапить, если бы не одно «но» — кто конечный потребитель и захочет ли он платить?

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

Например биржевые торги — сможет ли машина по ключевым словам информационных фидов поймать настроение рынка? Я считаю что можно и постартапить, если бы не одно «но» — кто конечный потребитель и захочет ли он платить?

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

По сути пока решение задачи биржевых котировок — это как по динамике изменения температуры на термометре определять — будет ли землетрясение.

А еще надо понимать, что такое вообще теханализ, и границы его применения (efficient market hypothesis), чтобы сильно не обольщаться.

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

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

Жаль ты не посмотрел что творилось с японской йеной когда Японию трухануло. Это сделали роботы.

Так и я о том же! Использовать нужно другие факторы, кроме собственно тренда.
Хотя и не могу отрицать влияние тренда — это ключевой фактор. Но ведь тренд имеет свойство разворачиваться, притом весьма неожиданно, иногда [когда?] безвозвратно.

Когда-то погоду тоже считали непредсказуемой. И синоптиков сравнивали с экономистами. Но синоптики ушли далеко вперёд! Исключительно за счёт IT-шных моделей.

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

Никому не рекомендую браться за R&D, не имея за спиной солидной конторы с зубастыми юристами в штате. Если даже им вопросы авторского права не всегда по зубам, то инди они жрут пачками. В лучшем случае согласишься продать, в худшем — согласятся продать тебя.

С технической частью то же самое — итоговый продукт в десятки раз выгоднее продавать допиленным. А значит людей нужно иметь в избытке, чтобы каждый мог доводить качество до совершенства. Не догадываясь о классическом значении слова «deadline».

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

С патентами в компьютерном зрении очень сложно. Очень сложно подпасть по патент. Так как или каждая операция элементарна, типа подсчета суммы в окрестностях окна, или же настолько заморочена, состоя из кучи последовательных элементарных операций, что любой патент легко обходится. К примеру тот же mp3 и ogg одинаковы по качеству, причем ogg даже лучше. А так как не стоит вопрос про соответствие форматов данных, то смысла следовать патенту нет, можно придумать свой, по функционалу практически ничем не отличающийся от оригинального.

Так речь же не о патентах, а о копирастах. Банально окунут мордой в судовую волокиту, и спросят «как дышится». Если Яббл с Гнусмасом за прямоугольники посрались (и яблочьки выиграли), то более слабого за какой-нить helloworld защемят — и хрен что докажешь.

Одно дело когда ты в Корее, к моменту выхода на рынок у тебя уже миллионы локальных юзверей. А если речь об Уркаине, где локального рынка нет в принципе? Запретят продажу в СШП — и ты банкрот.

Мне кажется, хочешь в R&D — проще сразу входить в компанию которая этим занимается. Хотя бы потому что это благодатная почва для внедрения. Хороший эксперимент пойдёт на тираж сразу, а не придётся питчить в элеваторах. Понимаю, что роль СЕО весма заманчива. Но в R&D или учёный или торгаш или CEO — эти роли несовместимы по затратам времени. Учёным конечно же круто!

Понимаю, что роль СЕО весма заманчива.

По сути в компьютерном зрении не получится одновременно быть не то что CEO, но даже часто сложно делать код в продакшен. Обычно или исследователь или делаешь продакшен код по результатам исследования, очень редко совмещается. Все упирается что в данной дисциплине не работает даже аджайл, так как поставленные задачи могут быть просто пофейлены(неправильная гипотеза на которой основывалась постановка) или же дать результат в несколько раз лучше ожидаемого.

Так что здесь нужна толстая команда и возможность 2-3 года работать только на исследование — тоесть длинные инвестиции.

С технической частью то же самое — итоговый продукт в десятки раз выгоднее продавать допиленным. А значит людей нужно иметь в избытке, чтобы каждый мог доводить качество до совершенства. Не догадываясь о классическом значении слова «deadline».

Здесь согласен, вроде бы элементарная задача типа распознавания текста, а тот же Tesseract при средненьком качестве распознавания пилили 27 лет, причем в штате обычно всегда была парочка PhD. Если в команде нет и пятка PhD и еще десятка их помощников — то и браться не стоит.

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

В мозгу по разным данным от 80 до 100 млрд нейронов и каждый может иметь до 10 000 соединений. Впрочем, это только усугубляет, в целом правильную, печаль топикастера относительно высоких вычислительных нагрузок в теме компьютерного зрения.

С этой точки зрения мозг пчелы в сочетании с её способом видеть — можно назвать идеалом. По крайней мере с позиции реализации. Свой источник на свои нейроны — и вперёд.

// Я тоже когда-то хотел заняться нейросетями. Теперь мне интересны люди :)

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

Сложность этих задач примерно одинаковая и они сейчас принципиально неразрешимые с точки зрения ИИ, если моделировать их схожими с биологическими структурами. Размерность разная, но если понять как работает мозг муравья (я предпочитаю говорить о них, а не о тараканах) всего в 250 000 нейронов, то моделирование человеческого интеллекта будет пустяковым делом.
Проблема в том, что наиболее изученные и используемые модели вообще никак не похожи на биологическую нейронную сеть, разве что топологически, и представляют собой методы оптимизации или кластеризации в обобщённом виде. Введение в структуру нейрона временного фактора полностью лишает исследователей всего математического, доказательного аппарата существующего на сегодня, начиная с Колмогорова и заканчивая вообще всеми выкладками по исчислению нервной активности.

И честно говоря это гораздо грустнее чем недостаточные мощности для расчётов любых алгоритмов.

Модель этого уже есть Restricted Boltzmann machine:
habrahabr.ru/post/159909

Просто она не особо эффективная и современные методы резальтат работы муравьиного мозга способны получить с несколько меньшими (на несколько порядков) затратами производительности. Просто модель муравья мало кого интересует.

Вы заблуждаетесь, и по Больцману и по муравью. К сожалению, объяснение характера заблуждения слишком объёмные.

По сути основная идея — обратные связи + онлайн связь с внешним миром. Этот принцип в упрощенной форме реализуется больцмановском сетями. Плюс нужно продумать нечто типа долговременной пороговой обратной связи — аналог гуморальной системы регуляции.

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

Нет не обязательно, достаточно добавить систолику — прогон нейросети с обратной связью каждую 1/30 секунды, причем нейросеть свое решение должна принимать в качестве входного аргумента.

Не обязательно если нет задачи моделировать интеллект, а есть задача статистики или многомерной оптимизации или кластеризации или сжатия данных (зевает).

Кстати, разных нейронов в мозгу что-то около 1000 видов. Искусственный пороговый нейрон моделирует динамику настоящего с точностью до никак.

Ладно, вы меня переспорили. В году так 2023, когда петафлопс будет доступен каждому смартфону, приму во внимание ваши данные в мои модели.

Не переспорил. Я спорил о том что петафлопс не важен.
Проблема в том, что нет понимания как моделировать самые элементарные функции интеллекта.

Важен, так как нет смысла моделировать модель в её полноте, если сильно урезав модель можно получить приемлемое решение уже сейчас и для исходных вычислительных ресурсов.

Помните детскую игрушку — машинку, которая умела объезжать препятствия? Там была простая схемка на транзисторах и две лампочки и два фотоэлемента. И работало. И ни единого байта кода.

Спор о том, что интеллект может проявится на элементарном уровне — например существующее распознавание образов не является интеллектуальным — фактически это статистический или кластерный подсчёт кусочков на которых сеть обучается — речь о свёрточных сетях. Она устойчива к поворотам и искажениям, но если умышленно разрезать образ на кусочки и предложить вперемешку то сеть всё равно определить его как знакомый, хотя очевидно это не так. Все мы понимаем, что А это не просто три палочки. Современные сети не могут вывести обобщённое понятие — буква. А муравьи могут общаться между собой числовым счётом до 10. То есть один муравей может указать другому, что надо тащить еду до четвёртого входа или например до третьего с конца. Это помимо языка жестов который до сих пор не расшифрован.
Муравей недостижим не методом брутфорс, а именно хилым человеческим мозгом. Пентофлопов для муравья достаточно и на моём ноуте. Только, что считать не понятно.
И это чертовски интересно.

Байтов кода в машинке было предостаточно. Просто они были аналоговые. И статические.

То есть один муравей может указать другому, что надо тащить еду до четвёртого входа или например до третьего с конца.

Он ориентируется по интенсивности феромонов, тоесть простой сенсор и маяк, что даёт простейший автопилот. Там нет никакой магии.

Нет они кроме феромонов используют сложный язык жестов, нерасшифрованный как я сказал, и арифметический счёт, что неоднократно доказано специальными экспериментами которые исключают влияние феромонов.

Еще добавлю, что мозг(сложный) очент неоднородная структура. Это не кусок фарша.

А я добавлю, что в моделировании мозга нет вообще никакого смысла, но очевидно есть смысл в моделировании эволюции интеллекта, что гораздо понятнее и практичнее.

Кстати, у Найджела вышла интересная книга на эту тему “Mind and Cosmos: Why the Materialist Neo-Darwinian Conception of Nature Is Almost Certainly False”

А вот я не согласный и с таким мракобесием. Я верю в материализм и эволюцию. Просто требуется определённое изощрение на данном этапе.

Это не про божественное создание ). Это про эволюцию, антропный принцип, интеллект и так далее.

Я знаю таких любителей жёлтых заголовков. Всегда наравят между строк нематериальную сущность впихнуть.

Муравей... Есть такая зверушка ru.wikipedia.org/...abditis_elegans . В ней всего 302 нейрона, связи между которыми картированы. До сих пор нет полного понимания, как они генерируют наблюдаемое поведение.

Опять же, нужно еще ввести «медленные нейроны» — аналог гуморальной регуляции.

Даже если у вас есть «Заключение», то чтобы вашу мысль поняли, нужно «Заключение заключения»

Подписаться на комментарии