Когда мы создали Таблица связей AI с Музеем американских инноваций Генри Форда (сокращенно THF), нашей целью было продемонстрировать взаимосвязь музейной коллекции. Кураторы THF проделали тяжелую работу по выявлению значимых связей между многими объектами; мы хотели распространить этот опыт на как можно большую часть коллекции. Чтобы в полной мере предоставить нашим пользователям бесконечное соединение, мы использовали вычислительную мощность искусственного интеллекта (ИИ). Благодаря нашим исследованиям и разработкам мы обнаружили, что, хотя нынешний ИИ не заменяет человеческих кураторов в систематическом мышлении, его можно использовать в качестве эффективного инструмента для установления визуальных связей между, казалось бы, несвязанными объектами. Результатом стали соединения, созданные искусственным интеллектом, которые предлагают бесконечное интерактивное исследование, одновременно информативное и полное сюрпризов.

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

Пути визуального сходства

Для начала мы использовали предварительно обученную модель глубокого обучения (VGG16) для анализа каждого изображения, чтобы получить внутреннее представление модели этого изображения (технически называемое скрытым представлением в виде массива числа). С помощью этой информации мы могли бы найти местоположение каждого объекта в вселенной THF (технически скрытое пространство), как показано на следующем графике:

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

Наивный подход: линейная интерполяция

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

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

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

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

Изощренный подход: кратчайший путь

Во-первых, постройте взаимосвязанную сеть (технически граф) изображений объектов, используя данные скрытого представления. Для каждого изображения найдите ближайшие k изображений в скрытом пространстве и установите между ними прямую связь. Для всех остальных пар изображений единственный возможный способ их соединения - через другие изображения. Затем для двух случайно выбранных изображений запустите алгоритм кратчайшего пути, чтобы найти путь между ними.

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

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

Примеры путей

В исходном 4096-мерном скрытом пространстве:

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

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

Или мы можем сформировать несколько путей из одного и того же начального объекта:

Мы можем поиграть с более длинными, а иногда и более странными связями, выбрав случайную «среднюю» точку и построив составной путь от A до Z и B (Z = случайная середина):

Доминирующие цветовые пути

Помимо соединения объектов с визуальным сходством, еще концептуально интересным (и визуально привлекательным) является соединение их с объектами постепенно меняющегося цвета, образуя градиент.

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

Во-первых, мы обрезали каждое изображение до его центральной 50% -ной части, чтобы уменьшить влияние цветов фона - тем более, что объекты коллекции THF не одинаково документируются на одном и том же фоне. Затем мы запустили алгоритм k-средних с k = 3 (чтобы сгруппировать все цвета пикселей в 3 кластера и выбрать цвет центроида для каждого кластера). Мы отсортировали выбранные цвета объекта в порядке убывания в соответствии с цветностью (цветность вычисляется путем преобразования цвета RGB в цветовое пространство LAB и вычисления sqrt (A² + B²)). По сути, цветность дает нам математическое представление о яркости или интенсивности цвета изображения. Затем мы выбрали первый цвет, цветность которого не меньше 2000 (достаточно красочный) и размер кластера больше 25% всего кадрированного изображения, в качестве доминирующего цвета изображения. Если ни один из цветов не соответствует критериям, мы отбрасываем изображение, потому что цветовой путь будет сбивать с толку глаз.

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

Примеры путей

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

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

Куда отсюда?

Уроки, извлеченные из этого этапа, были непосредственно использованы при проектировании и разработке таблицы Connections AI Table, при этом интегрированные соединения, генерируемые AI, стали ключевым компонентом опыта. Отсюда мы погрузились в производство:

  • Разработал игровой, исследовательский и содержательный пользовательский интерфейс вокруг этой технологии.
  • Оптимизирована производительность для интерактивного взаимодействия
  • Интегрировал бэкэнд AI на основе Python / Tensorflow с интерактивным интерфейсом на основе C ++ / Cinder
  • Оптимизирована процедура обработки данных, позволяющая постоянно обновлять данные музейной коллекции.

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

Чтобы узнать больше о полном творческом процессе для этого проекта, прочтите Игровое прототипирование с машинным обучением.