Trong bài viết này mình sẽ chia sẻ một số kỹ thuật cũng như ý tưởng có thể trong cuộc thi Zalo AI Challenge - Landmark data do team mình - VietAI - thực hiện.

Dữ Liệu

Dưới đây là phân phối số lượng ảnh trên mỗi label.

Phân phối mẫu trên mỗi lớp, Landmark data. Có khoảng 8 lớp có dưới 250 mẫu/class.

Một số class có số sample tương đối thấp, ta có thể cần 1 số technique để khắc phục vấn đề này.

Một số hình lấy từ tập train, mỗi dòng là các mẫu thuộc 1 địa danh.

Kỹ thuật

Team mình đã sử dụng 9 models khác nhau để train và sau đó stack/blend lại. Bao gồm:

[Mình đã finetune 34 models khác nhau với kiến trúc và optimizer scheme khác nhau (learning rate/ weight decay/ data augmentation không tính)]

Để tăng độ chính xác model, tụi mình có sử dụng và thử 1 số phương pháp sau [phần bôi đen là những kỹ thuật rất quan trọng để tăng hiệu quả của model]:

Một số bài viết hỗ trợ trong quá trình finetune:

Về phần stack/blend, mình nhường lại cho leader Khả Ái (Phát); hầu như các solution trên Forum Machine Learning Cơ Bản mà các bạn top 3 post đều nằm trong plan thực hiện của Khả Ái. Nên mình tin nếu lúc đó mình làm đúng plan thì kết quả bên Landmark lẫn Music đã rất khác rồi.

[Nhân đây: Noi theo tấm gương sáng ngời cùng đường lối sáng suốt của leader , mình phát động phong trào đẩy mạnh học tập và làm theo tư tưởng, đạo đức Hoàng Quý Phát]

T-SNE của ResNet50 features 1 subset của train data (feature:Resnet50)

Other

Các ý tưởng khác

Image Retrieval - KNN

Để sử dụng kỹ thuật image retrieval hiệu quả [tức là image retrieval thực sự outperform classification] thì dataset cần hội đủ các yếu tố:

  1. Dataset có số lượng label rất lớn.
  2. Phân phối training samples không đều và chênh lệch lớn.
  3. Mối tương quan giữa các ảnh trong cùng 1 class thấp.

Ví dụ điển hình là tập Google Landmark với 1.5 triệu ảnh, và 15K label (landmark) khác nhau. Hình dưới cho thấy rất nhiều label có số lượng trainng ít.

Trong 3 điều kiện trên thì tập Landmark của Zalo thỏa được (2) và (3) phần nào đó. Ví dụ ở class 0 và 1, độ tương quan khá thấp, và nếu không biết trước được rằng các hình nằm chung 1 class thì mình nghĩ đến cả human còn nhầm đây là các địa điểm khác nhau:

Ở các kỹ thuật trong retrieval có thể đơn giản hóa như sau:

Local features như RootSIFT+BoW hoặc RootSIFT+Triemb hoạt động rất tốt trong case này:

Nguồn: slide - Ranked 3rd Google Landmark Recognition Challenge

Với kỹ thuật này, ta có thể apply 1 số technique hay ho như:

Image Retrieval cùng với các kỹ thuật này đã đạt kết quả rất tốt ở hai cuộc thi là Landmark Retrieval và Landmark Recognition của Google [Link]. Mình nghĩ ít nhiều nó sẽ giúp improve performance, đặc biệt là với với class có intra-class correlation thấp.

Fine-grained Classification

Nếu ta xem xét các labels và thứ tự của nó, ta nhận ra rằng các lớp chung 1 category sẽ nằm cạnh nhau. Ví dụ:

Một ý tưởng đơn giản đó là ta gom hết các data trong các nhóm đó lại với nhau thành 1 label lớn: ví dụ “chợ”, “cầu”, “cột cờ” và xây dựng bộ classifier trên đó (tạm gọi là Classifier-A). Kết quả có thể đem làm trọng số cho classifier chính với 103 classes. Ngoài ra, ta có thể “random” trong trường hợp kết quả ra thấp: Nếu bộ classifier 103 lớp không classify được, nhưng bộ Classifier-A ra kết quả là “cầu” với confidence cao, ta có thể random trong đó [Dĩ nhiên, có nhưng phương pháp fancy hơn để inference ra kết quả]; ngay cả với random, giả sử groundtruth là 1 trong 7 loại cầu: thì ta có xác suất 1-6C3/7C3 = 42.8571 %. Theo bản thân mình, đây cũng là cách mà con người nhận biết landmark. Fancy hơn, bạn có thể dùng Maximum Spanning Tree Clustering [Link]

Đồng thời, với quan sát như trên, ta có thể sử dụng 1 số phương pháp fine-grained classification để cải thiện độ chính xác. Bởi theo như quan sát, các kiến trúc cầu, nhà thờ, hay cột cờ có độ tương đồng hình ảnh khá giống nhau, thậm chí nếu chụp ở 1 góc nào đó thì kể cả con người cũng khó phân biệt được. Nên data như vậy rất phù hợp với kỹ thuật fine-grained classification.

Fun stuff

Model predict ra cơ sở nước mắm Phú Quốc.

model của team mình predict ra label 70 - Cơ sở chế biến nước mắm Phú Quốc. Mặc dù sau khi kiểm tra 497 hình của class 70 này bằng mắt, không hình nào trong training data có hình con cá. Mình gọi đây là: The next level of AI.

P.s: I love Vietnam

Mình không biết 3 hình này thuộc địa danh nào ở Việt Nam, nhưng rất đẹp.

References

[a] Cyclical Learning Rates for Training Neural Networks 2015, Leslie N. Smith.

[1] Fine-tuning CNN Image Retrieval with No Human Annotation,

[2] Selective Deep Convolutional Features for Image Retrieval

[3] Total recall: Automatic query expansion with a generative feature model for object retrieval

[4] A. Iscen, G. Tolias, Y. Avrithis, T. Furon, O. Chum. “Efficient Diffusion on Region Manifolds: Recovering Small Objects with Compact CNN Representations”, CVPR 2017

Xin chân thành cảm ơn sự giúp đỡ và hỗ trợ của VietAI trong quá trình mình tham gia cuộc thi. Dù không được vào Top 3 nhưng cũng là 1 trải nghiệm thú vị với nhiều điều đáng học hỏi.