diff options
Diffstat (limited to 'docs/source/auto_examples/plot_OTDA_mapping_color_images.rst')
-rw-r--r-- | docs/source/auto_examples/plot_OTDA_mapping_color_images.rst | 246 |
1 files changed, 0 insertions, 246 deletions
diff --git a/docs/source/auto_examples/plot_OTDA_mapping_color_images.rst b/docs/source/auto_examples/plot_OTDA_mapping_color_images.rst deleted file mode 100644 index 60be3a4..0000000 --- a/docs/source/auto_examples/plot_OTDA_mapping_color_images.rst +++ /dev/null @@ -1,246 +0,0 @@ - - -.. _sphx_glr_auto_examples_plot_OTDA_mapping_color_images.py: - - -==================================================================================== -OT for domain adaptation with image color adaptation [6] with mapping estimation [8] -==================================================================================== - -[6] Ferradans, S., Papadakis, N., Peyre, G., & Aujol, J. F. (2014). Regularized - discrete optimal transport. SIAM Journal on Imaging Sciences, 7(3), 1853-1882. -[8] M. Perrot, N. Courty, R. Flamary, A. Habrard, "Mapping estimation for - discrete optimal transport", Neural Information Processing Systems (NIPS), 2016. - - - - - -.. rst-class:: sphx-glr-horizontal - - - * - - .. image:: /auto_examples/images/sphx_glr_plot_OTDA_mapping_color_images_001.png - :scale: 47 - - * - - .. image:: /auto_examples/images/sphx_glr_plot_OTDA_mapping_color_images_002.png - :scale: 47 - - -.. rst-class:: sphx-glr-script-out - - Out:: - - It. |Loss |Delta loss - -------------------------------- - 0|3.624802e+02|0.000000e+00 - 1|3.547180e+02|-2.141395e-02 - 2|3.545494e+02|-4.753955e-04 - 3|3.544646e+02|-2.391784e-04 - 4|3.544126e+02|-1.466280e-04 - 5|3.543775e+02|-9.921805e-05 - 6|3.543518e+02|-7.245828e-05 - 7|3.543323e+02|-5.491924e-05 - 8|3.543170e+02|-4.342401e-05 - 9|3.543046e+02|-3.472174e-05 - 10|3.542945e+02|-2.878681e-05 - 11|3.542859e+02|-2.417065e-05 - 12|3.542786e+02|-2.058131e-05 - 13|3.542723e+02|-1.768262e-05 - 14|3.542668e+02|-1.551616e-05 - 15|3.542620e+02|-1.371909e-05 - 16|3.542577e+02|-1.213326e-05 - 17|3.542538e+02|-1.085481e-05 - 18|3.542531e+02|-1.996006e-06 - It. |Loss |Delta loss - -------------------------------- - 0|3.555768e+02|0.000000e+00 - 1|3.510071e+02|-1.285164e-02 - 2|3.509110e+02|-2.736701e-04 - 3|3.508748e+02|-1.031476e-04 - 4|3.508506e+02|-6.910585e-05 - 5|3.508330e+02|-5.014608e-05 - 6|3.508195e+02|-3.839166e-05 - 7|3.508090e+02|-3.004218e-05 - 8|3.508005e+02|-2.417627e-05 - 9|3.507935e+02|-2.004621e-05 - 10|3.507876e+02|-1.681731e-05 - - - - -| - - -.. code-block:: python - - - import numpy as np - import scipy.ndimage as spi - import matplotlib.pylab as pl - import ot - - - #%% Loading images - - I1=spi.imread('../data/ocean_day.jpg').astype(np.float64)/256 - I2=spi.imread('../data/ocean_sunset.jpg').astype(np.float64)/256 - - #%% Plot images - - pl.figure(1) - - pl.subplot(1,2,1) - pl.imshow(I1) - pl.title('Image 1') - - pl.subplot(1,2,2) - pl.imshow(I2) - pl.title('Image 2') - - pl.show() - - #%% Image conversion and dataset generation - - def im2mat(I): - """Converts and image to matrix (one pixel per line)""" - return I.reshape((I.shape[0]*I.shape[1],I.shape[2])) - - def mat2im(X,shape): - """Converts back a matrix to an image""" - return X.reshape(shape) - - X1=im2mat(I1) - X2=im2mat(I2) - - # training samples - nb=1000 - idx1=np.random.randint(X1.shape[0],size=(nb,)) - idx2=np.random.randint(X2.shape[0],size=(nb,)) - - xs=X1[idx1,:] - xt=X2[idx2,:] - - #%% Plot image distributions - - - pl.figure(2,(10,5)) - - pl.subplot(1,2,1) - pl.scatter(xs[:,0],xs[:,2],c=xs) - pl.axis([0,1,0,1]) - pl.xlabel('Red') - pl.ylabel('Blue') - pl.title('Image 1') - - pl.subplot(1,2,2) - #pl.imshow(I2) - pl.scatter(xt[:,0],xt[:,2],c=xt) - pl.axis([0,1,0,1]) - pl.xlabel('Red') - pl.ylabel('Blue') - pl.title('Image 2') - - pl.show() - - - - #%% domain adaptation between images - def minmax(I): - return np.minimum(np.maximum(I,0),1) - # LP problem - da_emd=ot.da.OTDA() # init class - da_emd.fit(xs,xt) # fit distributions - - X1t=da_emd.predict(X1) # out of sample - I1t=minmax(mat2im(X1t,I1.shape)) - - # sinkhorn regularization - lambd=1e-1 - da_entrop=ot.da.OTDA_sinkhorn() - da_entrop.fit(xs,xt,reg=lambd) - - X1te=da_entrop.predict(X1) - I1te=minmax(mat2im(X1te,I1.shape)) - - # linear mapping estimation - eta=1e-8 # quadratic regularization for regression - mu=1e0 # weight of the OT linear term - bias=True # estimate a bias - - ot_mapping=ot.da.OTDA_mapping_linear() - ot_mapping.fit(xs,xt,mu=mu,eta=eta,bias=bias,numItermax = 20,verbose=True) - - X1tl=ot_mapping.predict(X1) # use the estimated mapping - I1tl=minmax(mat2im(X1tl,I1.shape)) - - # nonlinear mapping estimation - eta=1e-2 # quadratic regularization for regression - mu=1e0 # weight of the OT linear term - bias=False # estimate a bias - sigma=1 # sigma bandwidth fot gaussian kernel - - - ot_mapping_kernel=ot.da.OTDA_mapping_kernel() - ot_mapping_kernel.fit(xs,xt,mu=mu,eta=eta,sigma=sigma,bias=bias,numItermax = 10,verbose=True) - - X1tn=ot_mapping_kernel.predict(X1) # use the estimated mapping - I1tn=minmax(mat2im(X1tn,I1.shape)) - #%% plot images - - - pl.figure(2,(10,8)) - - pl.subplot(2,3,1) - - pl.imshow(I1) - pl.title('Im. 1') - - pl.subplot(2,3,2) - - pl.imshow(I2) - pl.title('Im. 2') - - - pl.subplot(2,3,3) - pl.imshow(I1t) - pl.title('Im. 1 Interp LP') - - pl.subplot(2,3,4) - pl.imshow(I1te) - pl.title('Im. 1 Interp Entrop') - - - pl.subplot(2,3,5) - pl.imshow(I1tl) - pl.title('Im. 1 Linear mapping') - - pl.subplot(2,3,6) - pl.imshow(I1tn) - pl.title('Im. 1 nonlinear mapping') - - pl.show() - -**Total running time of the script:** ( 1 minutes 59.537 seconds) - - - -.. container:: sphx-glr-footer - - - .. container:: sphx-glr-download - - :download:`Download Python source code: plot_OTDA_mapping_color_images.py <plot_OTDA_mapping_color_images.py>` - - - - .. container:: sphx-glr-download - - :download:`Download Jupyter notebook: plot_OTDA_mapping_color_images.ipynb <plot_OTDA_mapping_color_images.ipynb>` - -.. rst-class:: sphx-glr-signature - - `Generated by Sphinx-Gallery <http://sphinx-gallery.readthedocs.io>`_ |