Context and detail
I've been working on a particular image retrieval problem and I've found two popular threads in the literature:
Image retrieval (usually benchmarked with landmark retrieval datasets)
- [x] Neural codes for Image Retrieval
- [x] Particular object retrieval with integral max-pooling of CNN activations
- [ ] Deep Image Retrieval: Learning global representations for image search
- [ ] End-to-end Learning of Deep Visual Representations for Image Retrieval
- [ ] Large-Scale Image Retrieval with Attentive Deep Local Features
- [ ] Fine-tuning CNN Image Retrieval with No Human Annotation
Face recognition/verification:
- [x] Facenet
- [x] Deep Face Recognition
- [x] SphereFace
- [ ] Arcface
I'm still making my way through these lists and more (I've checked the ones I've looked at already) but I'm starting to get a sense that there's not much overlap in the techniques used, or the collective trains of thought in the research community. Here are the main points of divergence where I think both communities should be borrowing from each other.
- Facial recognition seems to focus on getting embeddings to be as discriminative as possible by playing around with loss functions and training methods, whereas image retrieval seems to care more about ways of extracting feature descriptors from CNN pretrained backbones (types of pooling operations, which feature maps to look at, etc..).
- Image retrieval has a considerable amount of work on what needs to happen after an embedding is obtained. Eg: dimensionality reduction, whitening + l2 norm, databise-side augmentation, query expansion, reranking etc
- Facial recognition cares about keeping a minimum margin between non-matching faces in order to avoid mismatches, but I would think that should be imposed in image retrieval tasks as well (this is kind of a sub-point to my first point)
So to sum up: Why is it that facial recognition focuses on generating discriminative embeddings, while landmark retrieval focusses on generating rich "descriptors"? Why does landmark retrieval use this cool bag of tricks for database search while facial recognition just mentions kNN? Shouldn't all these considerations boost performance in either domain?