Nếu được hỏi xem loại hoa trên ảnh là hoa gì, thì chắc rằng, bạn sẽ biết đó là hoa hướng dương. Kỳ diệu thay, hiện nay máy tính đã có thể được huấn luyện để phân loại được hoa hướng dương cũng như vô vàn loài hoa khác. Và thậm chí, người huấn luyện còn chẳng cần phải biết hoa hướng dương là gì.

Bí mật của khả năng trên là Mạng nơ ron tích chập (CNN)

Để giúp máy tính có thể phân loại được nhiều loại hoa như thược dược, cúc, hướng dương, và hoa hồng, một mạng nơ ron tích chập (CNN) đã được phát triển để thực hiện điều này. Và bạn có thể xem code đầy đủ tại ĐÂY.

Vậy thì, mạng nơ-ron là gì? Về cơ bản, chúng được mô phỏng theo các mạng nơ-ron trong não bộ của con người, và mang khả năng dự đoán dựa trên các xu hướng được nhận diện từ dữ liệu sẵn có. Những mạng nơ-ron này thường gồm 3 loại lớp: 1 lớp đầu vào với các dữ liệu sẵn có, 1 lớp ẩn với các biến và định vị để thực hiện tính toán, và 1 lớp đầu ra với tính năng kích hoạt để đưa ra kết quả cuối cùng. Bạn có thể đọc sâu hơn về các mạng nơ-ron tại đây.

Minh họa một mạng nơ-ron

Trong đó, mạng nơ-ron tích chập là 1 dạng mạng nơ-ron với các lớp tích chập và lớp max-pooling. Thông thường, để tích chập, ta chỉ cần thêm một bộ lọc vào tập hợp pixel trên hình ảnh đầu vào, dẫn tới sự kích hoạt. Sau đó, ta sẽ lặp lại thực hiện bộ lọc đó, tạo thành một sơ đồ kích hoạt được gọi là “feature map”, với khả năng “dạy” cho máy tính về hình ảnh.

Sau lớp tích chập sẽ là lớp max-pooling, trong đó bộ lọc trên hình ảnh sẽ tìm ra những vùng nhiều pixel nhất trên hình ảnh, rồi từ đó tạo ra một hình ảnh mới với kích thước nhỏ hơn. Sau đó, máy tính sẽ sử dụng các hình ảnh nhỏ này, giúp mô hình chạy được nhanh hơn. Bạn có thể tìm hiểu sâu hơn về CNN thông qua video sau.

Và khi lớp tích chập và lớp max-pooling được kết nối với các lớp đầu vào và đầu ra của mạng nơ-ron, thì mô hình sẽ có thể sử dụng các dữ liệu quá khứ đã được đánh nhãn, từ đó đưa ra các dự đoán về nội dung hình ảnh trong tương lai. Như vậy, sau khi đã hiểu được CNN là gì, thì hãy tìm hiểu cách để xây dựng chúng.

Thu thập dữ liệu

Dự án này sử dụng Python và thư viện TensorFlow, với bộ dữ liệu hoa (gồm hình ảnh 5 loại hoa đã được đánh nhãn) đã được cung cấp sẵn và có thể được tải từ TensorFlow. Tuy nhiên, trước khi sử dụng được bộ dữ liệu này, ta cần phải tinh lọc chúng. Trước hết, ta tách 70% dữ liệu vào bộ huấn luyện, và 30% còn lại vào bộ xác nhận. Trong đó, bộ huấn luyện bao gồm các ví dụ được sử dụng bởi mô hình, để phù hợp với các tham số của bộ phân loại, còn bộ xác nhận sẽ được sử dụng để hoàn thiện các tham số này, giúp bộ phân loại có thể hoạt động trên cả những dữ liệu mới. Do bộ dữ liệu được sử dụng gồm nhiều kích cỡ khác nhau, ta sẽ cần phải chỉnh chúng về một kích thước quy chuẩn.

Sử dụng Transfer Learning để xây dựng mô hình

Sau khi thu thập dữ liệu, ta sẽ tiến hành huấn luyện mô hình. Transfer Learning là quá trình tái sử dụng các phần thuộc một mô hình đã được huấn luyện sẵn, sau đó thay đổi lớp cuối cùng của mô hình này. Lớp này sau đó sẽ được tái huấn luyện trên bộ dữ liệu về hoa nhằm đạt được những đầu ra mong muốn. Với Transfer Learning, mô hình sẽ đạt độ chính xác cao hơn. Mô hình được sử dụng sẽ là MobileNet v2, được đổi lớp cuối cùng, với kết quả là code rất ngắn trong mô hình thực tế.

Huấn luyện mô hình

Sau khi huấn luyện mô hình, ta có thể xem xét độ chính xác và sai lệch để xác định hiệu quả mô hình. Trên đồ thị, trục x biểu thị số lượng mô hình quét toàn bộ bộ dữ liệu huấn luyện và cập nhật.

Mô hình đã đạt mức chính xác 90% khi chạy thử trên bộ xác định.

Đưa ra dự đoán

Cuối cùng, hãy kiểm tra kết quả chạy mô hình.

Có thể thấy, thông qua việc sử dụng transfer learning và kiến trúc CNN, kết quả đạt được là rất tốt.

Vậy, rốt cuộc mô hình này có thể được sử dụng như thế nào? Tuy rằng việc phân loại hoa không có mấy tác dụng trừ khi bạn là một nhà thực vật học, song CNN có thể được sử dụng trong những tác vụ trọng yếu hơn, như phát hiện bệnh từ MRI và biến giấc mơ xe tự lái trở thành sự thật.

FPT TechInsight
Theo Becoming Human

Tin liên quan: