In [1]:
%matplotlib inline
%pylab inline


Populating the interactive namespace from numpy and matplotlib

Load training data


In [2]:
import menpo.io as mio
from menpo.landmark import labeller, ibug_face_49
from menpofast.utils import convert_from_menpo

path = '/data/'
group = 'ibug_face_49'

training_images = []
for i in mio.import_images(path + 'PhD/DataBases/faces/lfpw/trainset/',
                           verbose=True, max_images=None):
    
    # convert the image from menpo Image to menpofast Image (channels at front)
    i = convert_from_menpo(i)
    
    labeller(i, 'PTS', eval(group))
    i.crop_to_landmarks_proportion_inplace(0.5, group='PTS')
    i = i.rescale_landmarks_to_diagonal_range(200, group=group)
    
    if i.n_channels == 3:
        i = i.as_greyscale(mode='average')
    training_images.append(i)


- Loading 811 assets: [=                   ] 8%
---------------------------------------------------------------------------
KeyboardInterrupt                         Traceback (most recent call last)
<ipython-input-2-33ed7b718f30> in <module>()
     15     labeller(i, 'PTS', eval(group))
     16     i.crop_to_landmarks_proportion_inplace(0.5, group='PTS')
---> 17     i = i.rescale_landmarks_to_diagonal_range(200, group=group)
     18 
     19     if i.n_channels == 3:

/data/pythondev/src/menpofast/menpofast/image/base.pyc in rescale_landmarks_to_diagonal_range(self, diagonal_range, group, label, round, order)
   1198         x, y = self.landmarks[group][label].range()
   1199         scale = diagonal_range / np.sqrt(x ** 2 + y ** 2)
-> 1200         return self.rescale(scale, round=round, order=order)
   1201 
   1202     def resize(self, shape, order=1):

/data/pythondev/src/menpofast/menpofast/image/base.pyc in rescale(self, scale, round, order)
   1096         return self.warp_to_shape(template_shape, inverse_transform,
   1097                                   warp_landmarks=True, order=order,
-> 1098                                   mode='nearest')
   1099 
   1100     def rescale_to_diagonal(self, diagonal, round='ceil'):

/data/pythondev/src/menpofast/menpofast/image/base.pyc in warp_to_shape(self, template_shape, transform, warp_landmarks, order, mode, cval)
   1005             sampled = cython_interpolation(self.pixels, template_shape,
   1006                                            transform, order=order,
-> 1007                                            mode=mode, cval=cval)
   1008         else:
   1009             template_points = indices_for_image_of_shape(template_shape)

/data/pythondev/src/menpofast/menpofast/image/interpolation.pyc in cython_interpolation(pixels, template_shape, h_transform, mode, order, cval)
     99         warped_channels.append(_warp_fast(pixels[i, ...], matrix,
    100                                           output_shape=template_shape,
--> 101                                           mode=mode, order=order, cval=cval))
    102     warped_channels = [v.reshape([-1, 1]) for v in warped_channels]
    103     return np.concatenate(warped_channels, axis=0)

/data/pythondev/src/menpo/menpo/external/skimage/_warps_cy.so in menpo.external.skimage._warps_cy._warp_fast (menpo/external/skimage/_warps_cy.c:2488)()

/data/installed/anaconda/envs/menpo/lib/python2.7/site-packages/numpy/core/numeric.pyc in asarray(a, dtype, order)
    392 einsum = multiarray.einsum
    393 
--> 394 def asarray(a, dtype=None, order=None):
    395     """
    396     Convert the input to an array.

KeyboardInterrupt: 

In [ ]:
for i in mio.import_images(path + 'PhD/DataBases/faces/helen/trainset/',
                           verbose=True, max_images=None):
    
    # convert the image from menpo Image to menpofast Image (channels at front)
    i = convert_from_menpo(i)
    
    labeller(i, 'PTS', eval(group))
    i.crop_to_landmarks_proportion_inplace(0.5, group='PTS')
    i = i.rescale_landmarks_to_diagonal_range(200, group=group)
    
    if i.n_channels == 3:
        i = i.as_greyscale(mode='average')
    training_images.append(i)

In [ ]:
for i in mio.import_images(path + 'PhD/DataBases/faces/ibug/',
                           verbose=True, max_images=None):
    
    # convert the image from menpo Image to menpofast Image (channels at front)
    i = convert_from_menpo(i)
    
    labeller(i, 'PTS', eval(group))
    i.crop_to_landmarks_proportion_inplace(0.5, group='PTS')
    i = i.rescale_landmarks_to_diagonal_range(200, group=group)
    
    if i.n_channels == 3:
        i = i.as_greyscale(mode='average')
    training_images.append(i)

In [3]:
from menpo.visualize import visualize_images

visualize_images(training_images)


Active Appearance Models

Build


In [3]:
from menpofast.feature import no_op, fast_dsift, fast_daisy
from alabortcvpr2015.aam import PartsAAMBuilder

aam = PartsAAMBuilder(parts_shape=(17, 17),
                 features=fast_dsift,
                 diagonal=100,
                 normalize_parts=False,
                 scales=(1, .5),
                 max_shape_components=25,
                 max_appearance_components=500).build(training_images,
                                                      group=group,
                                                      verbose=True)


- Building models
  - Level 0: Done
  - Level 1: Done

In [4]:
from menpofast.image import Image

Image(aam.appearance_models[0].mean().pixels[18, 0]).view()


Out[4]:
<menpo.visualize.viewmatplotlib.MatplotlibImageSubplotsViewer2d at 0x7f0463ea8910>

Save


In [5]:
from alabortcvpr2015.utils import pickle_dump

pickle_dump(aam, path + 'PhD/Models/aam_lfpw_fast_dsift')