Xây dựng model phân biệt và tránh xa ảnh “mát mẻ”

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é.

nhận diện ảnh mát mẻ

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.

nhận diện ảnh mát mẻ

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: http://ainoodle.tech
Youtube: http://bit.ly/miaiyoutube

mm
Nguyễn Chiến Thắng

Một người đam mê những điều mới mẻ và công nghệ hiện đại. Uớc mơ cháy bỏng dùng AI, ML để làm cho cuộc sống tốt đẹp hơn! Liên hệ: thangnch@gmail.com hoặc facebook.com/thangnch

Related Post

4 Replies to “Xây dựng model phân biệt và tránh xa ảnh “mát mẻ””

  1. 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í.

Leave a Reply

Your email address will not be published. Required fields are marked *