This is an old revision of the document!
To gain experience coding a DNN architecture and learning program end-to-end, and to gain experience with Siamese network and ResNets.
For this lab, you will need to implement a simple face similarity detector.
You should turn in the following:
You should use the Labeled Faces in the Wild-a dataset (also available for download from liftothers).
Your notebook will be graded on the following:
To help you get started, here's a simple script that will load all of the images and calculate labels. It assumes that the face database has been unpacked in the current directory, and that there exists a file called list.txt
that was generated with the following command:
find ./lfw2/ -name \*.jpg > list.txt
After running this code, the data will in the data
tensor, and the labels will be in the labels
tensor:
from PIL import Image import numpy as np # # assumes list.txt is a list of filenames, formatted as # # ./lfw2//Aaron_Eckhart/Aaron_Eckhart_0001.jpg # ./lfw2//Aaron_Guiel/Aaron_Guiel_0001.jpg # ... # files = open( './list.txt' ).readlines() data = np.zeros(( len(files), 250, 250 )) labels = np.zeros(( len(files), 1 )) # a little hash map mapping subjects to IDs ids = {} scnt = 0 # load in all of our images ind = 0 for fn in files: subject = fn.split('/')[3] if not ids.has_key( subject ): ids[ subject ] = scnt scnt += 1 label = ids[ subject ] data[ ind, :, : ] = np.array( Image.open( fn.rstrip() ) ) labels[ ind ] = label ind += 1 # data is (13233, 250, 250) # labels is (13233, 1)