A computer-implemented method of image annotation performed by a data processing apparatus, the method comprising: receiving an input image in the data processing apparatus; identifying one or more nearest neighbor images (10, 20, 30) of the input image from among a collection of digital images stored on computer-readable media by operation of the data processing apparatus, wherein the nearest neighbor images (10, 20, 30) are images having a distance between their feature vectors less than a pre-specified distance, and wherein each of the one or more nearest neighbor images (10, 20, 30) is associated with a respective one or more image labels; assigning a plurality of image labels to the input image, wherein the plurality of image labels are selected by the data processing apparatus from the image labels associated with the one or more nearest neighbor images, wherein assigning the plurality of image labels comprises: ranking one or more first image labels according to a respective frequency of occurrence in the collection of digital images, each of the one or more first image labels is associated with a first nearest neighbor; ranking one or more second image labels, each of the second image labels is associated with one or more remaining nearest neighbor image, wherein ranking of the one or more second image labels comprises sorting the one or more second image labels according to a co-occurrence of each of the second image labels with each first image label in the collection of digital images; assigning at least one of the first image labels to the input image based on the ranking of the one or more first image labels; and assigning at least one of the second image labels to the input image based on the ranking of the one or more second image labels; and storing in a digital data repository the input image having the assigned plurality of image labels. receiving an input image in the data processing apparatus; identifying one or more nearest neighbor images (10, 20, 30) of the input image from among a collection of digital images stored on computer-readable media by operation of the data processing apparatus, wherein the nearest neighbor images (10, 20, 30) are images having a distance between their feature vectors less than a pre-specified distance, and wherein each of the one or more nearest neighbor images (10, 20, 30) is associated with a respective one or more image labels; assigning a plurality of image labels to the input image, wherein the plurality of image labels are selected by the data processing apparatus from the image labels associated with the one or more nearest neighbor images, wherein assigning the plurality of image labels comprises: ranking one or more first image labels according to a respective frequency of occurrence in the collection of digital images, each of the one or more first image labels is associated with a first nearest neighbor; ranking one or more second image labels, each of the second image labels is associated with one or more remaining nearest neighbor image, wherein ranking of the one or more second image labels comprises sorting the one or more second image labels according to a co-occurrence of each of the second image labels with each first image label in the collection of digital images; assigning at least one of the first image labels to the input image based on the ranking of the one or more first image labels; and assigning at least one of the second image labels to the input image based on the ranking of the one or more second image labels; and ranking one or more first image labels according to a respective frequency of occurrence in the collection of digital images, each of the one or more first image labels is associated with a first nearest neighbor; ranking one or more second image labels, each of the second image labels is associated with one or more remaining nearest neighbor image, wherein ranking of the one or more second image labels comprises sorting the one or more second image labels according to a co-occurrence of each of the second image labels with each first image label in the collection of digital images; assigning at least one of the first image labels to the input image based on the ranking of the one or more first image labels; and assigning at least one of the second image labels to the input image based on the ranking of the one or more second image labels; and storing in a digital data repository the input image having the assigned plurality of image labels.