我有一個圖像處理問題,我想我可以用它來學習更多關於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會讓這個變得簡單,但是一旦我開始研究實際的實現細節時,我有點困惑。
我查看了Thomas Wiecki最近的PyMC3 presentations,並通過Cam Davidson-Pilon閱讀了很多偉大的在線書籍。到目前爲止,在我看來,PyMC3與PyMC2的巨大新功能(部分)是時髦的模型規範syntax和自動使用Theano來處理加速。
在我迄今爲止所看到的例子中,現在看起來數據模型通常是使用新的語法系統完全指定的。但在我的情況下,我有這個更復雜的功能。
這裏是我的問題:
有人能指出我涉及的用戶功能實現的黑匣子數據模型中的現有PyMC例子嗎? PyMC2或PyMC3會很棒!
一旦我弄清楚如何使PyMC3工作,我能在Python數據模型函數中深入瞭解Theano的好處嗎?