Hello chào tuần mới anh em! Khi chúng ta xây dựng một nền tảng cho phép người dùng up ảnh lên như forum, group… thì điều chúng ta sợ nhất là người dùng up ảnh “mát mẻ” lên và chúng ta sẽ bị vạ lây. Hôm nay mình sẽ guide anh em xây dựng một model để khi người dùng up lên, máy tính có thể tự động phân biệt được là ảnh “mát mẻ” hay các ảnh ok nhé.
Here we go!
Phần 1 – Chuẩn bị nguyên vật liệu
Các bạn tạo thư mục MiAI_Cool_Detect để lưu các tài liệu bài này nhé. Sau đó các bạn chuyển vào trong thư mục và gõ lệnh:
git clone https://github.com/thangnch/MiAI_Cool_Detect .
Đợi chút là source về trong tầm tay.
Bây giờ là tiến hành cài đặt các thư viện cần thiết với lệnh:
pip install -r setup.txt
Và do là train model nhận diện ảnh nhạy cảm nên chúng ta cần có thư mục các ảnh được chia theo thể loại nhạy cảm và không nhạy cảm. Các bạn thực hiện:
- Tạo thư mục data trong thư mục MiAI_Cool_Detect (nếu chưa có)
- Tải tệp tin dữ liệu tại đây và copy 2 thư mục 0 và 1 vào trong thư mục data. (Thanks bác Phạm Hữu Quang đã chia sẻ bộ data này).
Okie vậy là hòm hòm rồi. Chúng ta sang phần tiếp theo!
Phần 2 – Tư tưởng thuật toán của bài toán nhận diện ảnh nhạy cảm
Bài này chúng ta cúng sẽ chia 2 phase: train và test để các bạn nắm rõ ràng hơn nhé!
- Phase Train: Chúng ta thực hiện các bước như sau:
- Bước 1: Chúng ta build up model. Ở đây mình tận dụng mạng VGG16 với pretrain imagenet. Mình thêm vài lớp FC và Dropout để classify và tránh overfit.
- Bước 2: Load dữ liệu trong 2 thư mục 0 (ảnh bình thường) và 1 (ảnh mát mẻ), resize về 200,200 để chuẩn bị train. Dữ liệu đầu ra có dạng one hot : 0 là okie, 1 là mát mẻ.
- Bước 3: Compile model và fit với dữ liệu nói trên.
- Bước 4. Save model ra file cool_model.h5
- Phase Test:
- Bước 1: Load model từ file cool_model.h5
- Bước 2: Load ảnh cần predict , resize về 200×200 và convert thành tensor.
- Bước 3: Nhét vào trong model để predict và in kết quả ra màn hình!
All right! Nắm tinh thần thế, code thôi!
Phần 3 – Viết code chương trình nhận diện ảnh mát mẻ
Các bạn để ý trong thư mục có 2 file python là train.py và predict.py.
File train.py sẽ thực hiện toàn bộ các việc như ở bước train bên trên mình có nói còn file predict sẽ đọc ảnh và thực hiện nhận diện xem là mát mẻ hay ảnh bình thường.
Mình đã comment khá rõ trong file nhé! Các bạn đọc Phần 2 và comment sẽ hiểu ngay cách làm.
Phần 4 – Tiến hành train và predict xem như nào!
Bây giờ các bạn chạy hãy kiểm tra lại xem dữ liệu đã đầy đủ chưa, đủ các bước chưa? Nếu đã okie các bạn chạy lệnh
python train.py
Và ngồi đợi model train nhé! Mình đang để 2 epoch vì đã thấy accurary khá ổn rồi. Các bạn tùy vào lượng dữ liệu mà tăng cho phù hợp nhé!
Để nhận diện thử ảnh các bạn chạy lệnh sau: (mình có để sẵn 2 file test0.jpg – ảnh thường và test1.jpg – ảnh mát mẻ)
python predict.py test0.jpg
Như các bạn thấy, model sẽ hiển thị là ảnh OK!
Còn nếu các bạn thay bằng file test1.jpg thì sẽ nhận được kết quả là :
Rồi, mình đã guide các bạn các sử dụng VGG16 để nhận diện các ảnh mát mẻ. Các bạn có thể thêm bớt, fine tune tùy ý để dùng vào thực tế nhé.
Chúc các bạn thành công và hẹn gặp lại!
Hãy join cùng cộng đồng Mì AI nhé!
Fanpage: http://facebook.com/miaiblog
Group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup
Website: https://miai.vn
Youtube: http://bit.ly/miaiyoutube
Có server nào free để up mô hình đó lên ko ạ?
Bạn có thể sử dụng Google Colab nhé!
Bạn ơi mình mới làm một project nhỏ với keras và flask. Mình muốn deploy lên cloud thì có cách nào không? Mình đã thử với google cloud nhưng nó bắt phải dùng thẻ ngân hàng các thứ để đăng kí.
Bạn vào group nhé. Có 1 bạn đang bán VPS khá rẻ!
Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup
Bạn chia sẻ giúp dữ liệu data giúp ạ.
Mình vào https://drive.google.com/drive/folders/1cTtHIa1oSAB5Emd9zZCvW_4EJGbWsp9b
==> nhận được thông báo không tìm thấy
Cám ơn bạn rất nhiều
Sorry bạn. Data này mình xin của 1 bạn theo link đó, giờ bạn ấy lại xoá mất rồi. Bạn vào Thư viện Mì AI: https://miai.vn/thu-vien-mi-ai tải lại nhé!