Xử lý ảnh hình thái học, phát hiện cạnh, Gaussian, Fourier Transform và Wavelet là những thuật toán xử lý hình ảnh chúng ta đã tìm hiểu từ bài viết trước. Bên cạnh những thuật toán cổ điển này, một giải pháp hiện đại và đang được ứng dụng phổ biến là Neural networks. Vậy Neural networks là gì và chúng hoạt động như thế nào trong xử lý dữ liệu hình ảnh? Bài viết dươi đây sẽ là câu trả lời chi tiết dành cho bạn.
Neural networks – Cấu trúc và hoạt động cơ bản trong xử lý ảnh
Mạng thần kinh là mạng nhiều lớp bao gồm các nơ-ron hoặc các nút. Các nơ-ron này là đơn vị xử lý cốt lõi của mạng nơ-ron. Chúng được thiết kế để hoạt động giống như bộ não của con người. Chúng tiếp nhận dữ liệu, tự đào tạo để nhận ra các mẫu trong dữ liệu và sau đó dự đoán kết quả đầu ra.
Một mạng nơ-ron cơ bản có ba lớp:
- Lớp đầu vào
- Lớp ẩn
- Lớp đầu ra
Các lớp đầu vào nhận dữ liệu đầu vào, lớp đầu ra dự đoán kết quả đầu ra và các lớp ẩn thực hiện hầu hết các phép tính. Số lớp ẩn có thể được sửa đổi tùy theo yêu cầu. Ít nhất phải có một lớp ẩn trong mạng nơ-ron.
Hoạt động cơ bản của mạng nơ-ron như sau:
- Hãy xem xét một hình ảnh, mỗi pixel được cung cấp làm đầu vào cho mỗi nơ-ron của lớp đầu tiên, các nơ-ron của một lớp được kết nối với các nơ-ron của lớp tiếp theo thông qua các kênh.
- Mỗi kênh này được gán một giá trị số được gọi là trọng số.
- Các đầu vào được nhân với trọng số tương ứng và tổng trọng số này sau đó được đưa vào làm đầu vào cho các lớp ẩn.
- Đầu ra từ các lớp ẩn được chuyển qua một hàm kích hoạt sẽ xác định xem liệu nơ-ron cụ thể có được kích hoạt hay không.
- Các nơ-ron được kích hoạt sẽ truyền dữ liệu đến các lớp ẩn tiếp theo. Theo cách này, dữ liệu được truyền qua mạng, đây được gọi là Truyền dẫn chuyển tiếp.
- Trong lớp đầu ra, nơ-ron có giá trị cao nhất sẽ dự đoán kết quả đầu ra. Các kết quả đầu ra này là các giá trị xác suất.
- Đầu ra dự đoán được so sánh với đầu ra thực tế để thu được lỗi. Thông tin này sau đó được chuyển trở lại thông qua mạng, quá trình này được gọi là Backpropagation.
- Dựa trên thông tin này, trọng số được điều chỉnh. Chu kỳ lan truyền tiến và lùi này được thực hiện nhiều lần trên nhiều đầu vào cho đến khi mạng dự đoán đầu ra chính xác trong hầu hết các trường hợp.
- Bước này kết thúc quá trình đào tạo của mạng nơ-ron. Trong một số trường hợp, thời gian dành cho việc đào tạo mạng nơ-ron có thể tăng cao.
Trong hình ảnh dưới đây, ai là tập hợp các đầu vào, wi là trọng số, z là đầu ra và g là bất kỳ hàm kích hoạt nào.
Dưới đây là một số hướng dẫn để chuẩn bị dữ liệu cho quá trình xử lý ảnh.
- Cần cung cấp thêm dữ liệu cho mô hình để có được kết quả tốt hơn.
- Tập dữ liệu hình ảnh phải có chất lượng cao để có được thông tin rõ ràng hơn, nhưng để xử lý chúng, cần có mạng nơ-ron sâu hơn.
- Trong nhiều trường hợp, hình ảnh RGB được chuyển đổi sang thang độ xám trước khi đưa chúng vào mạng nơ-ron.
Phân loại mạng thần kinh
Mạng thần kinh tích chập (Convolutional Neural Network)
Convolutional Neural Network (ConvNets) là mạng thần kinh tích chập, gồm có 3 lớp
- Lớp Convolutions (CONV): Đây là khối cốt lõi của CNN, chịu trách nhiệm thực hiện phép toán tích chập, liên quan đến phần tử được gọi là Kernel / Filter (ma trận). Tại đây, kernel tạo ra sự thay đổi theo chiều ngang và dọc cho đến khi quét được toàn bộ hình ảnh.
- Lớp Pooling (POOL): Lớp này đảm nhiệm việc giảm kích thước, từ đó hỗ trợ giảm thiểu sức mạnh tính toán cần thiết để xử lý dữ liệu. Có hai loại Pooling: Tổng gộp tối đa và Tổng gộp trung bình. Tổng gộp tối đa trả ra giá trị lớn nhất từ vùng được bao phủ bởi kernel trên hình ảnh. Trong khi đó, tổng gộp trung bình trả ra giá trị trung bình của vùng này.
- Lớp Fully Connected (FC): Lớp FC hoạt động trên đầu vào phẳng, nơi mỗi đầu vào được kết nối với tất cả các nơ-ron. Nếu có, các lớp FC thường xuất hiện ở cuối của kiến trúc CNN.
CNN chủ yếu được sử dụng để trích xuất đặc điểm từ hình ảnh với sự trợ giúp của các lớp. Phổ biến nhất trong các ứng dụng của CNN là phân loại hình ảnh, trong đó mỗi hình ảnh đầu vào được chuyển qua một loạt các lớp để nhận được giá trị xác suất từ 0 đến 1.
Mạng sinh đối nghịch (Generative Adversarial Networks)
Mô hình sinh sử dụng phương pháp học không giám sát (cung cấp hình ảnh không dán nhãn).
GAN bao gồm hai mô hình Generator (bộ tạo) và Discriminator (bộ phân loại). Generator học cách tạo ra những hình ảnh giả trông giống thật và Discriminator học cách phân biệt hình ảnh giả với hình ảnh thật.
Một số yếu tố nhiễu được dùng làm đầu vào cho Generator để có thể tạo ra các ví dụ khác nhau và không phải hình ảnh cùng loại. Dựa trên điểm số được dự đoán bởi Discriminator, Generator sẽ cố gắng cải thiện kết quả của nó, sau một thời gian nhất định, sẽ có thể tạo ra hình ảnh khó phân biệt hơn. Discriminator cũng tự cải thiện vì ngày càng có nhiều hình ảnh giống thực hơn ở mỗi vòng từ trình tạo.
Các loại GAN phổ biến là GAN tích chập sâu (DCGAN), GAN có điều kiện (cGAN), StyleGAN, CycleGAN, DiscoGAN, GauGAN, v.v.
GAN rất tốt cho việc tạo và xử lý hình ảnh. Một số ứng dụng của GAN bao gồm: Face Aging, Photo Blending, Super Resolution, Photo Inpainting, Clothing Translation.