[ML] Vọc phân loại ảnh với kỹ thuật Transfer Learning

Kỹ thuật Transfer Learning là gì thì mình xin dẫn lại lời của anh Duy Luân như sau:

Bình thường khi bạn train từ đầu các model (mô hình, mà mình thích dùng chữ model hơn) nhận diện hình ảnh, bạn sẽ cần rất nhiều sức mạnh từ máy tính. Nếu không có GPU khủng, nói chung là cấu hình mạnh thì sẽ mất rất nhiều thời gian. Chưa kể việc bạn phải viết từ đầu cũng là một thứ không chắc là hay trừ khi bạn cần phải tối ưu nó một cách cụ thể.
Thế nên người ta mới nghĩ tới Transfer Learning, nó là kĩ thuật giúp rút ngắn thời gian (và sức mạnh máy tính) cần thiết để train model bằng cách sử dụng một model nền có sẵn, tạm gọi là model được train gần hoàn chỉnh, sau đó train thêm chút xíu nữa bằng data của riêng bạn để có thể phân loại theo ý bạn muốn. Việc này giống như có ai đó đào móng, dựng cốt thép bê tông sẵn cho bạn rồi, bạn chỉ việc lên xây cái nhà theo ý thích của mình là được.
Bài hướng dẫn mình xem trên Google sử dụng ImageNet 122 làm nền. Đây là một database cực lớn về phân loại hình ảnh đã được Google phát triển một thời gian. Nó đã được train sẵn với 20 nghìn loại (category) hình ảnh khác nhau, chúng ta chỉ cần tận dụng nó thêm một bước nữa để áp category mà bạn muốn vào là được (thay vì chỉ dùng category do Google cung cấp).
Tất nhiên, việc bạn xài một giải pháp có sẵn sẽ không bao giờ có thể tốt như việc bạn từ làm từ đầu, model cũng thế. Nhưng không phải lúc nào bạn cũng cần tới mức phức tạp như vậy, đôi khi chỉ cần việc nó chạy là ngon lắm rồi, và tình huống của mình là như thế đấy. Độ chính xác tầm 70-80% là đã cực kì hiệu quả và giúp cho user của mình nhiều lắm rồi.
Kiểu transfer learning này cũng cho phép bạn train vài nghìn tấm ảnh bằng chính laptop của mình, ngay cả khi nó không có GPU rời. Cho nhu cầu cơ bản và để học, tìm hiểu thì quá tuyệt vời.


https://forum.machinelearningcoban.com/t/viet-engine-phan-loai-hinh-anh-bang-neural-network-mot-cach-de-dang-python-tensorflow/2522

Bắt đầu thôi

Ở đây mình dùng Google Colab