Phân loại hình ảnh với Tensorflow – Bài 2 chạy code Python trên Windows 10

Đây là bài thứ 2 trong chuỗi bài viết về Image Classification với thư viện Tensorflow. Sau khi đọc và làm theo Bài 1 thử nghiệm độ chính xác thì các bạn đã giải thuật này rất là hiệu quả.

Bài này sẽ hướng dẫn cách thực thi code Python trên Windows 10 do copy code trên Notebook về không sử dụng được ngay. Khi viết bài này mình sử dụng GPU NVIDIA RTX 2060 để tăng tốc training và predict. Nếu máy bạn không có GPU hoặc laptop thì chạy rất là chậm, có thể gấp 6-20 lần thời gian.

Chuẩn bị

  • Python 3.7.3: miễn là Python 3.6 trở lên là được, cài xong thì restart máy
  • CUDA 10.1 trở lên

Cài đặt Tensorflow 2.3 vì máy mình cài CUDA 10.1, nếu bạn muốn cài Tensorflow 2.6 trở lên thì phải cài CUDA 11.1.
pip install tensorflow-gpu==2.3

Nếu máy không có GPU thì cài bằng lệnh
pip install tensorflow==2.3

Cài các package khác:
matplotlib==3.4.3
numpy==1.18.5
Pillow==8.3.2

Download hình ảnh về và giải nén vào folder flower_photos, trong folder này có 5 folder chứa 5 loài hoa
https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz

Source code

Save nội dung bên dưới vào file image_classification.py


Sau đó chạy file bằng lệnh dưới là ra kết quả
python image_classification.py

Sử dụng hình ảnh bên dưới để dự đoán

Kết quả dự đoán là dandelion (hoa Bồ Công Anh) với 80% confident

Giải thích source code

  • Bước 1: import các thư viện cần thiết
  • Bước 2: load ảnh và chia thành 2 bộ: 80% ảnh cho training set và 20% ảnh cho bộ valid set
  • Bước 3: setup các tham số dùng để training
  • Bước 4: khởi tạo model Neural Network với nhiều layers
  • Bước 5: compile model
  • Bước 6: optimize model bằng Dropout để giảm thời gian xử lý
  • Bước 7: training model
  • Bước 8: predict hình ảnh

8 bước trên có các bước trước khi training khá phức tạp, các bạn đón đọc các bài tiếp theo để nắm được nguyên lý.

Sự khác biệt giữa code Python ở trên với code trong Notebook

Đoạn code ở trên đã được chỉnh sửa nhiều để có thể chạy trên Windows 10.

  1. Không download ảnh trong code nữa, user download về sẵn
  2. Thay thế hàm load files ảnh
  3. Thêm code save model tại dòng: model.save(“model_flower.h5”)
  4. Thêm code load model tại dòng: new_model = tf.keras.models.load_model(‘model_flower.h5’)
  5. Thêm code xóa ảnh đã predict tại dòng: os.remove(sunflower_path)

Chúc các bạn thành công. Còn không thành công? Contact me with detail on the website footer.

Leave a Reply