Chương 1: CƠ SỞ LÝ THUYẾT 1.1 Ảnh và xử lý ảnh Xử lý ảnh là một trong những mảng quan trọng nhất trong kỹ thuật thị giác máy tính, là tiền đề cho nhiều nghiên cứu thuộc lĩnh vực này. Ngày nay kỹ thuật xử lý ảnh đã được ứng dụng rộng rãi ở rất nhiều lĩnh vực trong sản xuất cũng như trong đời sống. Ví dụ như các hệ thống giám sát công cộng, hệ thống phân loại sản phẩm lỗi trong công nghiệp hay các phần mềm xử lý ảnh chuyên dụng như Adobe Photoshop, Capture One,… Nhiệm vụ cơ bản của quá trình xử lý ảnh là làm giàu thông tin, chất lượng hình ảnh và xử lý số liệu cung cấp cho các quá trình bao gồm cả việc ứng dụng thị giác máy tính vào điều khiển. Một hệ thống xử lý ảnh bắt đầu từ việc thu nhận ảnh đầu vào, tác động các thuật toán hoặc các phép xử lý lên dữ liệu thay đổi cấu trúc ảnh và nhận dạng ở đầu ra đáp ứng phù hợp với các ứng dụng khác nhau.
Phân tích và Camera Hình ảnh Tiền xử lý nhận dạng Lưu trữ Hình 1: Sơ đồ tổng quan hệ thống xử lý ảnh Sơ đồ khối về tổng quan hệ thống xử lý ảnh được thể hiện như hình trên, trong đó gồm 3 khối chức năng cơ bản: - Khối thu thập hình ảnh: Khối này thực hiện chức năng thu nhận ảnh và lưu trữ hình ảnh theo định dạng yêu cầu. - Khối tiền xử lý: Là giai đoạn đầu tiên trong xử lý ảnh số, có mục đích làm cho ảnh dễ nhận dạng hơn, loại bỏ các yếu tố không cần thiết hoặc ảnh hưởng tới 3 các kết quả về sau và tăng cường cải thiện chất lượng hình ảnh chẳng hạn như khử nhiễu, bóp méo hình ảnh, resize ảnh… phù hợp với yêu cầu. - Khối phân tích và nhận dạng: Ở bước này các đặc điểm của đối tượng sẽ được trích xuất tùy theo mục đích cần nhận dạng, Trích xuất hiệu quả các đặc điểm sẽ giúp cho việc nhận dạng đối tượng được chính xác. Sau đó dựa vào các đặc trưng được trích xuất từ ảnh mà thực hiện quá trình nhận dạng, đưa ra các quyết định tương ứng với yêu cầu như phân loại đối tượng hay phát hiện đối tượng.2 Học sâu và trí tuệ nhân tạo Trí tuệ nhân tạo là một nhánh của khoa học máy tính liên quan đến việc xây dựng các máy thông minh có khả năng thực hiện các nhiệm vụ thường đòi hỏi trí tuệ con người.
Trí tuệ nhân tạo là một ngành khoa học với nhiều cách tiếp cận, như những tiến bộ trong học máy và học sâu đang tạo ra sự thay đổi mô hình trong hầu hết mọi lĩnh vực công nghệ của ngành công nghiệp. Nhà nghiên cứu học sâu và kỹ sư của Google, François Chollet, lập luận rằng trí thông minh là “tốc độ mà người học biến kinh nghiệm của mình và cải tiến thành các kỹ năng mới ở những nhiệm vụ có giá trị liên quan đến sự không chắc chắn và thích nghi”. Nói cách khác: Các hệ thống thông minh nhất có thể chỉ cần một lượng nhỏ kinh nghiệm và tiếp tục đoán kết quả sẽ như thế nào trong nhiều tình huống khác nhau. Trí tuệ nhân tạo có thể được định nghĩa như: - Hành động nhân bản: hành động theo cách bắt chước hành vi của con người.
- Hành động theo lý trí: hành động theo cách nhằm đạt được một mục tiêu cụ thể. - Tư duy nhân bản: bắt chước tư duy dựa trên bộ óc của con người. - Suy nghĩ hợp lý: bắt chước suy nghĩ dựa trên suy luận logic. Vai trò của AI ngày càng trở quan trọng đối với cuộc sống.
Chẳng hạn như trong các hệ thống gợi ý sản phẩm trên các trang thương mại điện tử, gợi ý các bài hát bạn có thể yêu thích dựa trên lịch sử nghe của bạn hay là các trợ lý ảo, các hệ thống giám sát thông minh,… Có thể nói trong tương lai trí tuệ nhân tạo vẫn là một lĩnh vực sẽ được phát triển mạnh mẽ. Trí tuệ nhân tạo (AI) đề cập đến việc mô phỏng trí thông minh của con người trong máy móc được lập trình để suy nghĩ giống như con người và bắt chước hành động của họ. Đặc tính của trí tuệ nhân tạo là khả năng hợp lý hóa và thực hiện các hành động 4 phương án tối ưu nhất để đạt được một mục tiêu cụ thể. Các kỹ thuật học sâu cho phép AI hoạt động thông qua việc hấp thụ một lượng lớn dữ liệu như văn bản, hình ảnh hoặc video.
Học sâu là kỹ thuật học máy, là một chức năng của trí tuệ nhân tạo, bắt chước hoạt động của bộ não con người trong việc xử lí dữ liệu và tạo ra các mẫu để sử dụng cho việc ra quyết định. Trong học sâu, máy tính học cách thực hiện các nhiệm vụ phân loại trực tiếp từ hình ảnh, văn bản hoặc âm thanh. Các mô hình học sâu có thể đạt được độ chính xác hiện đại. Các mô hình được đào tạo bằng cách sử dụng một tập hợp lớn dữ liệu được gắn nhãn và kiến trúc mạng nơ-ron chứa nhiều lớp Hình 2: Mối quan hệ giữa AI ML và DL 1.3 Mạng thần kinh tích chập Mạng thần kinh tích chập, hay còn được gọi là CNN, là mô hình học sâu được sử dụng phổ biến cho các ứng dụng thị giác máy tính (chẳng hạn như phân loại hình ảnh) và trong một số trường hợp được sử dụng cho các tác vụ xử lý ngôn ngữ tự nhiên (chẳng hạn như phân loại văn bản).
Điểm đặc biệt của CNN là nó có thể nhận dạng hiệu quả các đối tượng xuất hiện trong hình ảnh đầu vào, bao gồm hình dạng, độ dốc, mắt hoặc thậm chí là khuôn mặt. Do khả năng nhận dạng chi tiết rất tốt của CNN, nên mô hình này chủ yếu được sử dụng trong các ứng dụng thị giác máy tính.1 Tích chập (Convolution) Tích chập là kỹ thuật được sử dụng trong xử lý ảnh, được sử dụng chủ yếu trong các phép toán lên ảnh như làm mịn ảnh hay làm sắc nét ảnh hay trích xuất biên cạnh ảnh. Cơ chế của tích chập được qua hình minh họa bên dưới. Hình 3: Ví dụ về Tích chập Ảnh đầu vào input là một ảnh nhị phân với mỗi ô là một điểm ảnh.
Mỗi giá trị của ma trận ảnh tương ứng với một điểm ảnh, 0 là màu đen, 1 là màu trắng. Ta có thể xem tích chập như một bộ lọc áp đặt lên ma trận, có tên gọi là ma trận kernel (hay còn gọi là filter, feature detector). Hình minh họa trên sử dụng ma trận 3x3 nhân từng thành phần tương ứng với ma trận input. Điểm neo (anchor point) sẽ quyết định vùng ma trận trên ảnh để tích chập, thường được chọn là tâm của kernel.
Phép tích chập ở đây dùng ma trận kernel nhân với ma trận input trượt lần lượt từ trái sang phải và đặt anchor point ở tâm ma trận, kết quả ta được một ma trận đặc trưng (feature map). Ví dụ như sử dụng bộ lọc Gaussian blur 7x7 lên ảnh ta sẽ được kết quả như sau: 6 Hình 4: Làm mờ ảnh dùng ma trận tích chập Gaussian blur 7x7 1.2 Mô hình mạng thần kinh tích chập Mạng thần kinh tích chập là một mạng nơ-ron chuyển tiếp gồm 20 đến 30 layer. Giống như các mạng nơ-ron khác, CNN sử dụng kích hoạt ReLu và một lớp được kết nối đầy đủ. Về cơ bản, lớp ReLu đảm bảo tính phi tuyến tính khi dữ liệu đi qua mỗi lớp và nếu không có nó, dữ liệu sẽ mất đi kích thước cần thiết để duy trì.
Sau đó, lớp được kết nối đầy đủ sẽ thực hiện phân loại trên tập dữ liệu. Mạng thần kinh tích chập khác với các mạng nơ-ron khác là nó có các phân lớp đặc biệt gọi là lớp tích chập (convolutional layer) và lớp gộp (pooling layer). Hình 5: Kiến trúc cơ bản của CNN Lớp tích chập là lớp đầu tiên trích xuất các tính năng từ hình ảnh đầu vào và hoạt động bằng cách đặt một bộ lọc lên một vùng điểm ảnh. Lớp này sẽ duy trì mối tương quan giữa các điểm ảnh bằng cách tìm hiểu các tính năng của hình ảnh, sử dụng các ô vuông nhỏ của dữ liệu đầu vào, có nghĩa là sử dụng hai đầu vào gồm ma trận hình ảnh đầu vào và bộ lọc để trích xuất ma trận đặc trưng.
Ma trận đặc trưng là kết quả của một bộ lọc đã được áp dụng cho lớp trước đó. Bộ lọc được trượt trên từng điểm ảnh một của 7 lớp trước. Mỗi vị trí sẽ kích hoạt một nơ-ron và kết quả được thu thập được trong ma trận đặc trưng. Lớp gộp làm giảm kích thước mẫu của bản đồ đối tượng và cũng giúp xử lý nhanh hơn vì nó làm giảm tổng số tham số mà mạng cần xử lý.
Có hai khía cạnh đáng chú ý của CNN đó là Sự bất biến của vị trí (Location Invariance) và Tích hợp phần (Compositionality). Giả sử ta muốn phân loại xem có đối tượng ta cần nhận dạng trong một hình ảnh hay không. Bởi vì ta đang trượt bộ lọc của mình trên toàn bộ hình ảnh, ta không thực sự quan tâm nơi đối tượng xuất hiện. Trên thực tế, việc sử dụng các lớp gộp cũng mang lại cho bạn sự bất biến đối với dịch (translation), xoay (rotation) và chia tỷ lệ (scaling).
Khía cạnh quan trọng thứ hai là tính tổng hợp (Compositionality). Mỗi bộ lọc tạo một bản vá cục bộ của các tính năng cấp thấp hơn thành các biểu diễn cấp cao hơn. Đó là lý do tại sao CNN rất mạnh mẽ trong Thị giác máy tính. Nó có ý nghĩa trực quan rằng bạn xây dựng các cạnh từ pixel, hình dạng từ các cạnh và các đối tượng phức tạp hơn từ hình dạng.4 Nhận dạng đối tượng 1.1 Khái niệm và ứng dụng Nhận dạng đối tượng là một nhiệm thị giác máy tính quan trọng liên quan tới việc xác định và định vị các đối tượng trong hình ảnh hoặc video.
Chúng ta xác định vị trí các đối tượng đang ở đâu hoặc đã di chuyển qua một cảnh nhất định bằng cách vẽ các hộp giới hạn xung quanh đối tượng cần được phát hiện. Việc nhận dạng đối tượng có thể được chia thành các phương pháp tiếp cận: hoặc là dựa trên học máy hoặc là dựa trên học sâu. Hầu hết các thuật toán phát hiện đối tượng ban đầu được xây dựng dựa trên các tính năng thủ công. Do thiếu biểu diễn hình ảnh hiệu quả vào thời điểm đó, mọi người không có lựa chọn nào khác ngoài việc thiết kế các biểu diễn tính năng tinh vi và nhiều kỹ năng tăng tốc khác nhau để sử dụng hết tài nguyên máy tính hạn chế.