2013-11-25 10 views
2

이미지 처리 문제가 있습니다. PyMC3에 대해 더 많이 배우고 실험 해 볼 수 있다고 생각했습니다. 저는 비선형 솔버와 무차별 방식으로 시간을 들여서 많은 시간을 보냈습니다. 지금까지 아무 것도 나를 행복하게하지 못합니다.PyMC3을 사용한 다중 이미지 처리

내가 가진 문제는 동일한 장면의 두 이미지를 공동 등록하지만 다른 방식으로 기록하는 복잡한 방법이 관련되어 있습니다. 일반적인 흑백의 가시 이미지를 열 적외선 이미지와 일치 시키려고 생각하십시오. 또는 의료 영상의 관점에서 MRI 데이터와 X 선 데이터를 일치시키려는 시도를 생각해보십시오.

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가 이것을 쉽게 만들 수 있다고 생각했지만 일단 실제 구현 세부 사항을 살펴 보았 더니 조금 혼란스러워졌습니다.

저는 토머스 Wiecki가 최근에 PyMC3 presentations을 보았습니다. Cam Davidson-Pilon으로 많은 위대한 온라인 서적을 읽었습니다. 지금까지 PyMC3 대 PyMC2의 위대한 신기능은 (부분적으로) snakey 모델 사양 syntax이고 가속 처리를위한 Theano의 자동 사용이라는 것을 알게되었습니다.

지금까지 본 예제에서 데이터 모델은 새로운 구문 시스템을 사용하여 완전히 지정되는 것처럼 보입니다. 하지만 제 경우에는이보다 복잡한 기능이 있습니다.

여기 내 질문은 :

  1. 은 누군가가 나는 사용자 함수로 구현 된 블랙 박스 데이터 모델을 포함하는 기존 PyMC 예를 가리 수 있습니까? PyMC2 또는 PyMC3 중 하나가 좋습니다!

  2. 일단 PyMC3에서이 작업을 수행하는 방법을 알아 내면 Theano의 장점을 내 Python 데이터 모델 기능에 구현할 수 있습니까?

답변

3

위에 지정된 당신이 일부 (아마도) 확률 부모 노드 (당신의 매개 변수)를 기반으로 계산 된 결정적 노드로 PyMC 모델에 통합 될 함수입니다. 그런 다음이 노드는 매개 변수를 맞추기위한 정보를 제공하는 확률 적 확률 노드 (관찰 된 확률 노드)에 다운 스트림으로 연결됩니다. 예를 들어 메트릭 출력에 해당하는 오류 분포를 설명하는 매개 변수 분포가 process_and_compare 일 수 있습니다.

PyMC wiki에는 PyMC 2의 도메인 범위에서 여러 모델 예제가 있습니다. PyMC 3 예제는 master 분기의 pymc/examples 폴더에 있습니다.

Theano가가는 한, PyMC의 종속성으로 사용하는 동기는 MCMC의 최신 기술이 그라디언트 정보를 사용한다는 사실에 기인합니다. 따라서 그라디언트를 계산할 필요가있었습니다. 임의의 모델. 우리는 결국 GPU 기능의 혜택을 누릴 수 있기를 희망하지만 지금은 그라디언트를위한 것입니다. PyMC의 모든 객체는 버전 3의 Theano tensors이므로, Bayesian 모델을 구축하는 맥락에서 Theano에 대한 다른 계획이 있다면, 그럴 가능성이 있습니다. 예를 들어, 우리는 궁극적으로 PyMC에서 확률 론적 그래픽 모델을 구현하기를 원할 것입니다. 그래서 Theano는 아마도이를 촉진 할 것입니다.