2013-11-25 2 views
2

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

Проблема, которую я имею, связана с сложным методом для совместного регистрации двух изображений одной и той же сцены, но записанных в разных модальностях. Подумайте о том, чтобы попытаться совместить обычное черно-белое видимое изображение с тепловизионным инфракрасным изображением. Или, с медицинской точки зрения, подумайте о попытке сопоставить данные МРТ с данными рентгеновского излучения.

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

def process_and_compare(image_src, image_dst, parameters): 
    """ 
    Parameters 
    ---------- 
    image_src : 2D array 
    image_trg : 2D array 
    parameters : sequence of 7 scalars defining image transform 

    Output 
    ------ 
    metric : Scalar value indicating how well the transformed source image 
      matches up with the target image. 
    """ 

    image_src_warp = image_warper(image_src, parameters) 
    metric = compare_two_images(image_src_warp, image_trg) 

    return metric 

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

Я просмотрел последние PyMC3 presentations от Thomas Wiecki, а также прочитал большую часть большой онлайн-книги от Cam Davidson-Pilon. До сих пор мне кажется, что новые новые возможности PyMC3 по сравнению с PyMC2 (частично) - это острая спецификация модели syntax и автоматическое использование Theano для ускорения обработки.

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

Вот мои вопросы:

  1. Может кто-то мне точку к существующему примеру PyMC с участием черного ящика модель данных реализована в виде функции пользователя? Либо PyMC2, либо PyMC3 бы здорово!

  2. Буду ли я в состоянии реализовать преимущества Theano глубоко в моей модели данных модели Python, как только я выясню, как сделать эту работу с PyMC3?

ответ

3

Функция, указанные выше, будет включена в модель PyMC как детерминированный узел, где он рассчитывается на основе некоторых (предположительно) стохастические родительские узлы (ваши параметрах). Затем этот узел будет подключен вниз по течению к вероятности (наблюдаемый стохастический узел), который предоставляет информацию для подбора параметров. Например, у вас может быть некоторое параметрическое распределение, которое описывает распределение ошибки, соответствующее выходу метрики, на process_and_compare.

PyMC wiki имеет несколько примеров моделей из диапазона доменов для PyMC 2. В папке pymc/examples в главной ветке есть примеры PyMC 3.

Что касается Theano, то мотивация использования его в качестве зависимости для PyMC объясняется тем, что текущее состояние дел в MCMC включает использование информации о градиенте, поэтому нам нужна была возможность расчета градиентов для произвольные модели. Мы надеемся, в конечном счете, извлечь выгоду из своих возможностей GPU, но на данный момент это просто для градиентов. Все объекты PyMC являются тензорами Theano в версии 3, поэтому, если у вас есть другие планы для Theano в контексте построения байесовских моделей, то, скорее всего, это может быть сделано для работы. Например, мы, возможно, в конечном итоге захотим реализовать вероятностные графические модели в PyMC, поэтому, возможно, Thean также будет способствовать этому.

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