Mohamed Elhoseiny*, Yizhe Zhu*, Han Zhang, Ahmed Elgammal, Link the head to the "peak'': Zero Shot Learning from Noisy Text descriptions at Part Precision, CVPR, 2017
This code is implemented by Yizhe Zhu and Mohamed Elhoseiny.
You can download the dataset CUB2011 and NABird.
Raw wikipedia article data of CUBird and NABird, as well as detailed merging information of NABird, can be obtained here.
Trained models reproduce the results in the paper.
ZSL_Test(Dataset = 'CUBird' or 'NABird', splitmode = 'Easy' or 'Hard', ImgFtSource = 'DET' or 'ATN')
splitmode = Easy or Hard splits defined in Section 4.1 in the paper
ZSL_Test('CUBird', 'Easy', 'ATN') ### ATN means using groundtruth part annotation
Dataset: CUB2011 Easy ATN
Model: trained_models/CUBird_Easy_ATN.mat
Load Testing set
test_acc = 43.5049%
ZSL_Test('CUBird', 'Easy', 'DET') ### DET means using the detected parts instead of GT parts.
Dataset: CUB2011 Easy DET
Model: trained_models/CUBird_Easy_DET.mat
Load Testing set
test_acc = 37.5725%
ZSL_Test('NABird', 'Easy') ### Easy means category-share splitting
Dataset: NABird Easy DET
Model: trained_models/NABird_Easy_DET.mat
Load Testing set
test_acc = 30.5937%
ZSL_Test('NABird', 'Hard') ### Hard means category-share splitting
Dataset: NABird Hard DET
Model: trained_models/NABird_Hard_DET.mat
Load Testing set
test_acc = 8.1349%
ZSL_Train(Dateset, Splitmode, ImgFtSource, lambda1, lambda2, GPU_mode)
is the command to train the model using a particular setting.
% For example ZSL_Train('CUBird', 'Easy', 'DET', 100000, 10000, true), trains on the CUBirds dataset on the Easy split and using the detected part boxes. , lambda1=100000, and lambda2=10000, and GPU_mode=true (using GPU mode for training). If false, the training is done on CPU.