Computer Vision

[Image Classification] Overview of Image Classification

Xin chào, trong bài viết này chúng ta sẽ tìm hiểu về Image Classification và các bước để xây dựng một bộ Image Classifier.


WHAT IS IMAGE CLASSIFICATION?

Nói đơn giản, Image Classification chính là việc phân loại một tập hợp hình ảnh theo các danh mục (categories) đã được qui định trước. Nó cũng tương tự như việc cô Tấm ngồi nhặt đậu xanh, đậu đen, đậu đỏ từ một cái rổ lớn vào từng cái hũ riêng vậy.

Con người có thể dễ dàng phân loại các hình ảnh vì chúng ta nhận thức được đặc điểm của từng bức ảnh, tuy nhiên đối với máy tính, cái nó thấy chỉ là các ma trận đầy số. Để giúp máy tính “hiểu” được nội dung của các bức ảnh, chúng ta sẽ phải áp dụng các Image Descriptors và Deep Learning methods. Cuối cùng, dựa trên các tính chất của bức ảnh, chúng ta có thể áp dụng Machine Learning để “dạy” cho máy tính cách phân loại hình ảnh.

Trong quá trình phân loại hình ảnh chúng ta sẽ gặp phải các thách thức sau:

  1. viewpoint variation – sự khác biệt về góc nhìn;
  2. scale variation – sự khác biệt về tỉ lệ;
  3. deformation – sự biến dạng của đối tượng;
  4. occlusion –  sự thiếu toàn vẹn của đối tượng;
  5. illumination – ánh sáng;
  6. background clutter;
  7. intra-class variation – các biến thể của đối tượng.

Có quá nhiều thử thách phải không nào. Lời khuyên ở đây chính là: hãy đưa ra các giả định và cân nhắc trước khi bắt tay vào thực hiện. Hiểu rõ về mục đích và giới hạn phạm vi trong khi phân loại hình ảnh sẽ giúp cho hệ thống làm việc chính xác hơn.


TYPE OF MACHINE LEARNING

Ở phần trước chúng ta đã nhắc đến việc áp dụng Machine Learning để “dạy” máy tính cách phân loại hình ảnh. Vậy có những kiểu Machine Learning nào?

SUPERVISED LEARNING

Supervised Learning là kiểu Machine Learning phổ biến nhất. Đối với Image Classification, Training Dataset bao gồm một tập hợp các hình ảnh cùng với các label tương ứng. Một model (classifier) sẽ được tạo ra thông qua một quá trình training, nơi mà các dự đoán về input data (image) được đưa ra và chỉnh sửa nếu dự đoán không chính xác. Quá trình training sẽ tiếp tục cho đến khi classifier đạt được các yêu cầu như độ chính xác, số lần training. Thông thường, Supervised Learning sẽ bao gồm Logistic Regression, Support Vector Machines và Random Forests.

UNSUPERVISED LEARNING

Trái với Supervised Learning, Unsupervised Learning không có các label đi kèm với các hình ảnh trong Training Dataset, vì vậy chúng ta không thể chỉnh sửa classifier nếu nó đưa ra dự đoán không chính xác. Do đó, hầu hết các phương pháp Unsupervised Learning tập trung vào việc suy luận cấu trúc trong dữ liệu đầu vào với các thuật toán như k-means, Gaussian processes.

SEMI-SUPERVISED LEARNING

Semi-supervised Learning đặc biệt hữu ích trong Computer Vision khi mà việc gắn label cho từng bức ảnh trong Training Dataset khá mất thời gian, tẻ nhạt và tốn kém. Chúng ta chỉ cần gắn label cho một số lượng nhỏ các hình ảnh trong training set, các bức ảnh còn lại sẽ được phân tích và gắn label dựa trên các label đã có.


THE IMAGE CLASSIFICATION PIPLINE

Trong phần này chúng ta sẽ tìm hiểu về các bước để xây dựng một Image Classifier.

Training Dataset của chúng ta sẽ gồm các bức ảnh đã được gắn label, trong đó mỗi Data Point trong Training Dataset sẽ bao gồm:

  1. một bức ảnh;
  2. label/category của bức ảnh.

Step 1: Gathering dataset

Thứ đầu tiên chúng ta cần là Initial Dataset, các bức ảnh cần được gắn label tương ứng từ một tập hợp hữu hạn Categories. Hơn nữa, số lượng ảnh của từng Category phải bằng nhau để quá trình training đạt kết quả tốt nhất.

Step 2: Splitting dataset

Bây giờ chúng ta đã có Initial Dataset, tiếp theo chúng ta chia nó thành 2 phần: training set và testing set.

  • Training set được sử dụng bởi Classifier để “học” bằng cách đưa ra dự đoán về input data và chỉnh sửa nếu dự đoán sai;
  • Testing set được dùng để đánh giá hiệu năng của Classifier sau khi training.

Một chú ý quan trọng là Training Set và Testing Set phải hoàn toàn riêng biệt và không trùng lặp nhau.

Ngoài ra, để điều chỉnh các tham số của Logistic Regression, Support Vector Machines và Random Forest Classifiers, chúng ta sẽ cần tạo ra Validation Set từ Training Set (khoảng 10-20% Training Data).

Step 3: Feature extraction

Tại bước này chúng ta sẽ trích xuất các features (feature extraction) để định lượng (quantify) từng hình ảnh. Các features thường được lựa chọn là:

  • Color Histograms;
  • Histogram of Oriented Gradients;
  • Local Binary Patterns;
  • v.v…

Chúng ta có thể hoán đổi step 2 và step 3 với nhau mà không tạo ra sự khác biệt ở kết quả training.

Step 4: Training classifier

Mục đích của việc Training là để Classifier “học” cách nhận biết từng Category. Khi Classifier đưa ra dự đoán sai, nó sẽ học từ sai lầm đó và tự cải thiện.

Step 5: Evalution

Cuối cùng chúng ta cần đánh giá Classifier sau khi Training bằng cách yêu cầu nó đưa ra dự đoán về Label của các bức ảnh trong Testing Set.


SUMMARY

Qua bài viết này chúng ta đã tìm hiểu về Image Classification và các bước để xây dựng một Image Classifier. Cảm ơn các bạn đã theo dõi bài viết.

Thân ái và quyết thắng.

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s