Phân biệt một số bài toán trong lĩnh vực Computer Vision

I-Mở đầu

Trong bài viết này nhóm tác giả muốn giới thiệu các bạn một chút về thị giác máy tính (Computer Vision – CV), cụ thể hơn là một số bài toán trong lĩnh vực CV. Trước tiên, nếu ai chưa biết thị giác máy tính là gì thì có thể giải thích đơn giản như sau: CV – là một lĩnh vực làm cho máy tính có thể nhìn được như con người, nhìn ở đây có nghĩa là hiểu được hình ảnh, video từ đó có thể làm cơ sở để trả lời các câu hỏi như: có gì trong ảnh ? con mèo ở đâu trong bức ảnh? trong ảnh có bao nhiêu con chó, con mèo? con mèo có đang bắt chuột không? … Để trả lời các câu hỏi này thì trong CV sẽ có các bài toán khác nhau và đây cũng là nội dung của bài viết này. Bốn bài toán giới thiệu bao gồm: Image classification, Classification with Localization, Object Detection, Instance Segmentation.

Mục tiêu hướng tới của bài viết này bao gồm:
– Hiểu được một số keyword trong lĩnh vực CV.
– Phân biệt được một số bài toán như Classification, Localization, Detection, Segmentation.
– Giới thiệu một số tài liệu tham khảo cũng như ứng dụng liên quan đến các bài toán.

Hình 1: Một số bài toán trong lĩnh vực CV và cách phân biệt

II-Phân biệt image classification, object localization, object detection, instance segmentation

1-Image Classification – Phân lớp ảnh:

Image classification: Có đầu vào (input) là ảnh và một danh sách các nhãn (labels), mục tiêu của bài toán là xác định ảnh đầu vào thuộc nhãn nào – hay nói cách khác ouput là nhãn tương ứng với input.

Hình 1: Ví dụ về bài toán phân lớp ảnh (nguồn ảnh CS231n)

Kết quả bài toán phân lớp ảnh có thể áp dụng vào rất nhiều lĩnh vực như phân loại động vật, phân loại biển báo giao thông,… Phân lớp ảnh cũng được cho là là bài toán cơ sở cho một số bài toán khác trong CV. Tập dữ liệu mà cộng đồng nghiên cứu bài toán này thường quan tâm đó là tập ImageNet với hơn 1 triệu ảnh và 1000 nhãn cần phân lớp. Tuy bài toán trên tập dữ liệu Imagenet đã có nhiều kết quả khả quan (độ chính xác cao), tuy nhiên trong thực tế bài toán này có khá nhiều thách thức:

  • Đa dạng về góc nhìn Viewpoint variation: Đối tượng cần phân loại khác nhau khi có góc nhìn khác nhau.
  • Đa dạng về tỉ lệ/ kích thướcScale variation: Cùng một đối tượng cần phân loại tuy nhiên có thể có kích thước khác nhau (Hình 2).
  • Biến dạngDeformation: Sự đa dạng hình ảnh của cùng một đối tượng khi bị biến đổi theo các điều kiện khác nhau.
  • Bị che khuất Occlusion: Đối tượng cần phân loại bị che khuất .
  • Điều kiện chiếu sáng Illumination conditions: Cùng một ảnh chụp một vật nhưng ở những thiết lập chiếu sáng khác nhau có thể gây sai sót trong quá trình phân loại.
  • Ảnh hưởng bởi bối cảnhBackground clutter: Đối tượng cần phân loại bị nhầm lẫn với môi trường xung quanh.
  • Đa dạng về biến thể trong một nhãnIntra-class variation: Nhãn cần phân loại có rất nhiều loại ví dụ mèo thì có mèo tam thể, mèo mướp.


Hình 2: Một số thách thức trong bài toán phân lớp ảnh (nguồn ảnh CS231n)

2-Classification with Localization (Object Localization):

Khi bài toán phân lớp (Classification) sẽ trả lời câu hỏi trong ảnh chứa gì? Thì bài toán Object Localization sẽ xác định thêm vị trí (location) của đối tượng đang quan tâm trong ảnh thông qua một hình chữ nhật bao quanh đối tượng (bounding box). Như vậy object Localization sẽ trả lời câu hỏi đối tượng quan tâm ở đâu trong bức hình, ví dụ con mèo ở đâu trong bức hình ?  

Hình 3: So sánh đầu ra giữa bài toán Classification và Classification with Localization

Có một câu hỏi đặt ra ở đây là việc gắn bounding box để làm gì? Điều này thực sự cũng dễ hiểu, việc gắn bounding box giống như là ta xác định được vị trí của object mà biết được vị trí sẽ cung cấp ta nhiều thông tin khác nhau. Chẳng hạn ví dụ minh họa ở hình dưới đây sẽ xây dựng hệ thống cảnh báo khi có người đến một vùng nguy hiểm. Kết quả bài toán classification chỉ nói lên có người trong ảnh hay không mà không trả lời được người đó đang ở vùng an toàn hay vùng nguy hiểm. Còn kết quả bài toán localization sẽ trả lời được là người đó đang ở vùng nào do xác định thêm được vị trí của đối tượng.

Hình 4: Sự khác biệt trong ứng dụng giữa bài toán classification và localization

3-Object Detection – Phát hiện đối tượng

Khác với bài toán Classification with Localization xác định vị trí của một đối tượng trong hình, bài toán detection hay Object Detection sẽ xác định vị trí tất cả các đối tượng có trong bức hình. Theo đó Input của bài toán này là ảnh và danh sách các đối tượng quan tâm. Đầu ra của bài toán là các vị trí của các đối tượng kèm theo nhãn của đối tượng đó.

Object Detection đã có rất nhiều ứng dụng khác nhau: Image Annotation (Chú thích hình ảnh), Face Detection (Phát hiện khuôn mặt ), License Plate Identification (Nhận diện biển số xe), People Counting (Đếm số lượng người),…

Như vậy xét trên một khía cạnh nào đó ta có thể nhận xét rằng bài toán Classification là tiền đề của bài toán Localization và thông tin của bài toán Localization cũng rất hữu ích cho bài toán Detection. Để phân biệt các bài toán khác nhau ta có thể xác định dựa trên việc kết quả của bài toán đang trả lời các câu hỏi gì (Hình 6).

Hình 6: Phân biết bài toán classification, object localization, object detection

4-Image Segmentation – Phân đoạn ảnh

Nếu như kết quả của bài toán Object Detection là bounding boxes – thường là hình chữ nhật chỉ ra vị trí của các đối tượng trong hình (có thể bao gồm cả phần nền bao quanh đối tượng), thì kết quả bài toán Image Segmentation – phân đoạn ảnh không những chỉ ra vị trí mà còn chỉ rõ đối tượng bằng cách vẽ ra đường biên (boudaires) bao quanh đối tượng. Cụ thể hơn, Image Segmentation là quá trình xác định – gán nhãn cho từng điểm ảnh (pixel) trong ảnh sao cho các pixel có cùng nhãn thì thuộc về một nhóm. Ví dụ: hãy tưởng tượng khi các bác sĩ áp dụng Computer Vision vào việc chữa bệnh ung thư, thì việc xác định kích thước của vùng bị ung thư thực sự rất quan trọng.

Hình 7: Phân biệt đầu ra của bài toán Detection và Segmentation

Bài toán Image Segmentation có thể được chia làm 2 loại :

  • Semantic Segmentation: Phân tách các lớp, các đối tượng cùng một lớp thì gom vào một nhóm. Ví dụ cụ thể hình dưới các pixel của person sẽ gom vào chung 1 nhóm thể hiển ở màu sắc khác nhau.
Hình 8 Kết quả của bài toán Semantic segmentation
  • Instance Segmentation: Phân tách từng đối tượng trong cùng một lớp. Khi Semantic Segmentation gom chung các đối tượng cùng lớp thì bài toán Instance Segmentation sẽ có sự phân biệt giữa các đối tượng trong cùng một lớp.
Hình 9 Kết quả của bài toán Instance segmentation

III-Tổng kết

Như vậy đối với bài viết này chúng ta đã tạm thời phân biệt được 4 bài toán phổ biến trong lĩnh vực CV và một số ứng dụng của nó. Ta có thể tổng kết lại thông qua bảng sau

Nguồn tham khảo cho bài viết :

[1] https://cs231n.github.io/classification/

[2] https://medium.com/deep-dimension/an-analysis-on-computer-vision-problems-6c68d56030c3

[3] https://machinelearningmastery.com/applications-of-deep-learning-for-computer-vision/

Danh sách tác giả:

Phạm Xuân Trí – KHTN 2018

Nguyễn Văn Khoa – CNCL2018.1


2 thoughts on “Phân biệt một số bài toán trong lĩnh vực Computer Vision

  1. I have some abigous things like bellow:
    – You define the purpose of computer vision field is give the computer have ability to see like human and you define what is “see”, but you define it recursively. And the question is what is “understand” ? How we know the computer have “understanding” ability ?
    – In the section II.1 Object classification, You say that we must input the image having one only object but if i have many objects in my image, How i can classify image and them?
    – In the section II.2 Object Localization and section II.3 Object Detection, You define the object localization problem is same with Object Detection, Do you have the clear explaination for each problem and how we can seperately classify it ?
    – Also in the section II.3 Object Detection, you write some object detection applications, but it’s TEXT. Do you have some resources like articles, video,… for the readers.
    – In the section II.4, you said the Object Segmentation is “pro” than other problems. What is “pro” ? Why do you suppose that ? also, you define two segmentation prblems with start word is “segment”, what is “segment” ? also, in the starting part of section you say the object segmentation is the PROBLEM, but at the end of the section, you say that it is a FIELD… PROBLEM == FIELD ??

    It’s just the question from your lovely friend and I hope you will give the the answers.
    TienN <3

    1. Thank you your comment , and I answer your questions below :
      + In this case, “Understand” means You can get information from what you (or computer) sees, to your purpose. And How we know the computer have “understanding” ability ?.. Computer have understanding ability when it can get information from what it sees.
      + “How i can classify image and them?” . The answer to this question is what I wrote in the sessions below ( II.2 , II.3, II.4)
      + I updated the post, you can read it again to understand it
      + About application, I will update later . And you can refer to the following links : https://imagga.com/blog/the-top-5-uses-of-image-recognition/ , https://en.wikipedia.org/wiki/Image_segmentation
      + I have not understood this question of yours. I write this post by Vietnamese, so your question may be not suitable.

      By Phạm Xuân Trí

Leave a Reply

Your email address will not be published. Required fields are marked *