2016-04-04 10 views
4

Я пытаюсь увидеть возможность использования TensorFlow для идентификации функций в моих данных изображения. У меня есть полутоновые изображения размером 50x50 пикселей, которые я хотел бы сегментировать: нужный результат будет либо 0, либо 1 для каждого пикселя. 0 для фона, 1 как ядро.Image Segmentation with TensorFlow

Пример ввода: raw input data

Пример этикетки (то, что «метка»/реальный ответ будет): output data (label)

ли даже можно использовать TensorFlow для выполнения этого типа машинного обучения на моем наборе данных? Я мог бы иметь тысячи изображений для набора тренировок.

Многие примеры имеют ярлык, соответствующий одной категории, например, 10-разрядную матрицу [0,0,0,0,0,0,0,0,0,0,0,0] для набор рукописных цифр, но я не видел много примеров, которые выдавали бы большой массив. Я бы предположил, что ярлык будет массивом 50x50?

Также есть идеи по обработке процессорного времени для этого времени анализа?

+0

было решением проблемы? Я не могу найти функцию потерь, которая будет работать с пиксельной сегментацией. Вместо того, чтобы классифицировать каждый пиксель, он просто выбирает один из тензоров вывода (x, y) для классификации. См. Http://stackoverflow.com/questions/37898795/tensorflow-accuracy-at-99-but-predictions-awful –

+0

См. Https: // github.com/Russell91/TensorBox –

ответ

1

Да, это возможно с TensorFlow. На самом деле есть много способов приблизиться к нему. Вот очень простой:

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

Затем подготовьте модель по вашему выбору (например, NN) в этом наборе данных. Конечно, ваши результаты будут сильно зависеть от вашего выбора функций.


Вы также могли бы принять graph-cut approach, если вы можете представить, что вычисление в качестве вычислительного графа с использованием примитивов, которые TensorFlow предоставляет. Вы могли бы либо не использовать функции оптимизации TensorFlow, такие как backprop, или если в ваших вычислениях есть некоторые дифференцируемые переменные, вы можете использовать функции оптимизации TF для оптимизации этих переменных.

+2

OP попросил Image Segmentation с TF, я предполагаю, что здесь глубокое обучение. Мы уже знаем, что DNN подходит для задачи сегментации. Большая часть литературы использует deconv или регрессию для получения предсказания. Тем не менее, Tensorflow, похоже, не имеет хорошего метода для вычисления значения потерь. 'SoftmaxWithLoss()' принимает только вход '[batch_size class_num]', который явно не помогает в случае OP. Поскольку OP принял ваш ответ, я надеюсь, что он мог бы объяснить, как он приближается к своей проблеме. – 24hours

1

SoftmaxWithLoss() работает для проблемы сегментации изображения, если вы измените предсказанную метку и карту верных меток с [партия, высота, ширина, канал] на [N, канал].

В вашем случае, ваша окончательный предсказывал карта будет каналом = 2, и после перестройки, N = партия высоты ширины, то вы можете использовать SoftmaxWithLoss() или аналогичную функцию потерь в tensorflow для запуска оптимизации.

См. this question, что может помочь.

+0

Если загруженное изображение метки (H, W, 3) [RGB Color], вы можете изменить эти 3 измерения, представляющие метку, до 1 измерения? Например, сегментированные изображения Pascal VOC имеют цветовую кодировку, но я считаю, что всего 21 класс. –

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^