Kaggle Google Landmark Recognition 2020 現状まとめ


#はじめに
この記事ではKaggleのGoogle Landmark Recognition 2020において人気なnotebookとdiscussionなどから現状の理解を図るものです。
これから参加したいと考える皆さんが素早くキャッチアップできることを目的としています。
どなたかのお役に立てれば幸いです。

#Leaderboard
2020/09/04時点での各メダルの下限値です。
Gold : ~0.5336
Silver : ~0.4868
Blond : ~0.4853

# 評価関数


Global Average Precision = micro Average Precisionというものが使われています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/218309/d81a0eb9-a9d0-52db-2d87-e1c8123f3b82.png)
- https://www.kaggle.com/c/landmark-recognition-2020/overview/evaluation

この定義から言えることは、confidenceの高い回答ほどスコアへの影響が大きいということです。
例えば100の回答中1つだけ正解するとして、この正解の位置が最初の場合は、最後が正解の場合に比べて、スコアが100倍になります。
回答の位置はconfidenceを降順に並べて決まりますので、confidenceの高い回答ほど影響力が大きいと言えます。


以下の説明がわかりやすいです。

- [GAP metric](https://www.kaggle.com/davidthaler/gap-metric)
- [「平均適合率」と「MAP」の意味](https://analysis-navi.com/?p=1126)


# EDA

EDAでは主に以下のことがわかっています。

- 8万以上のクラス (1)
- 各クラスに属する画像の数は2~6272枚 (1)
- 42枚以下のクラスが大部分 (1) 
- 6272枚のクラスは画像が黒く縁取りされており画像したにラベルがある。その中身は統一感がない (1)
    - クラス未分類、あるいはランドマークなし用のクラスかもしれない (1)
- inputする画像のサイズはまちまちなのでサイズの変換が必要 (2)
- 画像が複雑すぎるのでstructural similarity は役に立たない (3)
- RGB color intensity histogram は役に立ちそう (3)
- ランドマークでない画像もあるので、それらは外す必要 (4)

1. [Google Landmark Recognition 2020 | EDA](https://www.kaggle.com/anirbansen3027/google-landmark-recognition-2020-eda)
2. [GLR for beginners: fetch the data, basic EDA](https://www.kaggle.com/ephell/glr-for-beginners-fetch-the-data-basic-eda)
3. [LandmarkReco-2020-Class Imbalance Deep Dive -EDA](https://www.kaggle.com/sandy1112/landmarkreco-2020-class-imbalance-deep-dive-eda)
4. [Watch out for distractors in test dataset!](https://www.kaggle.com/qiubit/watch-out-for-distractors-in-test-dataset)
5. [GLRec - Images in the form of long strips](https://www.kaggle.com/tolgadincer/glrec-images-in-the-form-of-long-strips)


# モデル

紹介されている主なモデルは以下です。

- ResNet50 (1)、(2)、(4)、(8)、(11)
- EfficientNet (3)、(6)、(7)、(10)
- MobileNetV2 (5)
- Xception (9)
- DELG (Global featureとLocal featureから類似度を計算) (15)
  - Kaggleホストのベースライン手法です。以下でまとめました。
  - まとめ：[Kaggleで注目を集める画像特徴量抽出新手法、DELGの概要紹介](https://qiita.com/taiga518/items/24c7abdb763a530b9a67)

1. [LandmarkReco-2020-Class Imbalance Deep Dive -EDA](https://www.kaggle.com/sandy1112/landmarkreco-2020-class-imbalance-deep-dive-eda)
2. [ResNet50 TL](https://www.kaggle.com/tbourton/resnet50-tl)
3. [[PyTorch Training+Inference] EfficientNet Baseline](https://www.kaggle.com/rhtsingh/pytorch-training-inference-efficientnet-baseline)
4. [[GLRec] ResNet50 ArcFace (TF2.2)](https://www.kaggle.com/akensert/glrec-resnet50-arcface-tf2-2)
5. [Pre-trained MobileNetV2 (1000 classes, 1 epoch)](https://www.kaggle.com/socathie/pre-trained-mobilenetv2-1000-classes-1-epoch)
6. [TF Keras EffNet B2 - Non Landmark Removal](https://www.kaggle.com/rsmits/tf-keras-effnet-b2-non-landmark-removal)
7. [Landmark Recognition 2020 Keras](https://www.kaggle.com/dimakyn/landmark-recognition-2020-keras)
8. [Landmark Recognition 2020[EDA+ Resnet]](https://www.kaggle.com/nischaydnk/landmark-recognition-2020-eda-resnet)
9. [Landmark Recognition Starter Code - Xception](https://www.kaggle.com/rajivranjansingh/landmark-recognition-starter-code-xception)
10. [Pre-trained EfficientNet](https://www.kaggle.com/dimakyn/pre-trained-efficientnet)
11. [ResNet50-v10-v12](https://www.kaggle.com/mekhdigakhramanian/resnet50-v10-v12)
12. [Host Baseline Example](https://www.kaggle.com/c/landmark-recognition-2020/discussion/172576)


# その他（技術、注目トピック）

その他、雑多に以下の技術や注目トピックが話題になっています。

- multi processing でデータの読み込み速度を高速化 (1)
- データの逐次読み込み
    - flowfromdirectory
- TF recorder (17)、(18)
- data augumentation (2)
- GAPの定義　(3)、(5)、(8)、(16)、(19)、(20)
- ArcFace (4) 
- place 365 model (5)、(7)
- TPU for parameter search (6)
- ImageHashing (9)
- Google Colab (10)
- ORB (11) 
- ArcMargin (12) 
- リサイズ (13)
- global feature, local feature (14) 
    - DELG feature extraction (15) 
- re rank (15) 
- 過去コンペのまとめ (21)、(22)、(26)
- 関連研究 (23)
- 元のデータセット(24)、(25)
  
1. [Landmark-Recognition-Multiprocessing | Image-Size](https://www.kaggle.com/tolgadincer/landmark-recognition-multiprocessing-image-size)
2. [EDA + Data Augmentation for Beginners](https://www.kaggle.com/azaemon/eda-data-augmentation-for-beginners)
3.  [[PyTorch Training+Inference] EfficientNet Baseline](https://www.kaggle.com/rhtsingh/pytorch-training-inference-efficientnet-baseline)
4. [[GLRec] ResNet50 ArcFace (TF2.2)](https://www.kaggle.com/akensert/glrec-resnet50-arcface-tf2-2)
5. [TF Keras EffNet B2 - Non Landmark Removal](https://www.kaggle.com/rsmits/tf-keras-effnet-b2-non-landmark-removal)
6. [Starter - Keras Tuner, EfficientNet, TPU](https://www.kaggle.com/fuyixing/starter-keras-tuner-efficientnet-tpu) 
7. [PyTorch Landmark or Non-Landmark identification](https://www.kaggle.com/rhtsingh/pytorch-landmark-or-non-landmark-identification)
8. [Global Average Precision [Metric]](https://www.kaggle.com/ihelon/global-average-precision-metric)
9. [ImageHashing -> Small, yet diverse training set](https://www.kaggle.com/mightyrains/imagehashing-small-yet-diverse-training-set)
10. [Download dataset to Google Colab](https://www.kaggle.com/nhkhang/download-dataset-to-google-colab)
11. [Google Landmark Recognition - EDA](https://www.kaggle.com/soham1024/google-landmark-recognition-eda)
12. [ResNet50-v10-v12](https://www.kaggle.com/mekhdigakhramanian/resnet50-v10-v12)
13. [Resizing the image to 20%](https://www.kaggle.com/pawan28a95/resizing-the-image-to-20)
14. [Google Landmarks Feature Extraction](https://www.kaggle.com/cemsina/google-landmarks-feature-extraction)
15. [Host Baseline Example](https://www.kaggle.com/c/landmark-recognition-2020/discussion/172576)
16. [compute_recognition_metrics.py](https://github.com/tensorflow/models/blob/master/research/delf/delf/python/google_landmarks_dataset/compute_recognition_metrics.py)
17. [TF records](https://www.kaggle.com/c/landmark-recognition-2020/discussion/172231)
18. [Training tf records available here for download !!!!!](https://www.kaggle.com/c/landmark-recognition-2020/discussion/174184)
19. [Global Average Precision](https://evaluations.readthedocs.io/en/latest/kaggle_2020/global_average_precision.html)
20. [Evaluations](https://github.com/yisaienkov/evaluations)
21. [Last year's top solutions](https://www.kaggle.com/c/landmark-recognition-2020/discussion/170989)
22. [Landmark2019-1st-and-3rd-Place-Solution](https://www.kaggle.com/c/landmark-recognition-2020/discussion/172737)
23. [Relevant research papers](https://www.kaggle.com/c/landmark-recognition-2020/discussion/171755)
24. [Google Landmarks Dataset v2](https://github.com/cvdfoundation/google-landmark)
25. [Announcing Google-Landmarks-v2: An Improved Dataset for Landmark Recognition & Retrieval](https://ai.googleblog.com/2019/05/announcing-google-landmarks-v2-improved.html)
26. [1st place solution summary](https://www.kaggle.com/c/landmark-retrieval-2020/discussion/176037#979382)
27. [Unifying Deep Local and Global Features for Image Search](https://arxiv.org/abs/2001.05027)