October 20, 2021
Image recognition technique

Định dạng và kích thước ảnh được khuyến khích sử dụng trong Cloud Vision API

Trong quá trình phát triển model machine learning, ngoài thuật toán tối ưu được sử dụng thì định dạng, kích thước và dung lượng ảnh là vấn đề mà mình cũng cần phải quan tâm do nó ảnh hưởng trực tiếp đến tốc độ đọc -load file ảnh vào để xử lý.

Nếu độ phân giải của ảnh thấp mình tiết kiệm được không gian lưu trữ và tốc độ learn sẽ nhanh. Nhưng sẽ bị đánh đổi bởi model mà mình train được sẽ dự đoán cho kết quả không như mong muốn.

Nếu dung luợng và kích thước ảnh có độ phân giải lớn (hoặc quá lớn) thì thời gian learn sẽ lâu và sẽ tốn kha khá không gian để lưu trữ các file ảnh chất lượng cao và model của mình đạt được cũng sẽ cho kết quả tốt hơn.

vậy làm thế nào để tiết kiệm được không gian lưu trữ, learn nhanh ?. Vision API được cung cấp trên nền tảng Google Cloud Platform cũng đã đưa ra một số đề nghị về độ phân giải cũng như kích thước file ảnh như thế nào để đạt được kết quả tốt nhất.

Định dạng ảnh nào tốt cho machine leanring?

Hiện nay có rất nhiều định dạng ảnh. Tuỳ vào mục đích mà người dùng chọn định dạng ảnh nào cho phù hợp. Một số định dạng ảnh được hiện được Cloud Vision API hỗ trợ.

  • JPEG
  • PNG8
  • PNG24
  • GIF
  • Animated GIF (first frame only)
  • BMP
  • WEBP
  • RAW
  • ICO
  • PDF
  • TIFF

Đối với những định dạng ảnh dạng nén “lossy” (ví dụ như JPEG) thì việc giảm kích thước ảnh của file dạng này có thể sẽ dẫn đến suy giảm chất lượng model mà mình học được.

Trong những định dạng mà Cloud Vision hỗ trợ thì định dạng JPEG, PNG có lẽ là định dạng mà các file ảnh được dùng phổ biển nhất trong web cũng như machine learning. Ưu điểm của nó là kích thước nhỏ – nên sẽ load nhanh và tiết kiệm được không gian lưu trữ.

Và ít ai dùng nhất chắc chắn là RAW – file ảnh dạng thô chứa rất nhiều thông tin chưa được xử lý và đương nhiên nó có dung lượng lớn nên chắc chắn sẽ ảnh hưởng đến tốc độ train.

Ngoài ra còn có WEBP– một định dạng ảnh cũng rất đáng được quan tâm đến từ Google ( https://developers.google.com/speed/webp/). Nó hỗ trợ cả hai lossy lossless. Dung lượng của WEBP -lossless nhỏ hơn 26% so với PNG WEBP -lossly nhỏ hơn 25-34% so với JPEG cùng chất lượng ảnh. Đây cũng có lẽ là định dạng ảnh tốt nhất mà mình nghĩ có thể tối ưu không gian lưu trữ và tốc độ training model của mình.

Kích thước ảnh bao nhiêu là đủ ?

Trong Vision API, để phát hiện được các đối tượng được chính xác thì độ phân giải ảnh tối thiểu là 640 x 480 pixel (khoảng 300k pixel). Cũng theo nhu cầu sử dụng dịch vụ nào thì sẽ có khuyến khích riêng cho từng dịch vụ

Vision API FeatureRecommended Size
FACE_DETECTION1600 x 1200
LANDMARK_DETECTION640 x 480
LOGO_DETECTION640 x 480
LABEL_DETECTION640 x 480
EXT_DETECTION and
DOCUMENT_TEXT_DETECTION
1024 x 768
SAFE_SEARCH_DETECTION640 x 480

Những kích thước này được các kỹ sư Google đưa ra dựa trên nhiều lần thử nghiệm và phân tích kết quả đạt được. Kiểm nghiệm trong thực tế thì ảnh có kích thước 640 x 480 pixel là đã có thể làm việc cho kết quả tốt ở rất nhiều trường hợp. Nhưng cũng có điểm chú ý là : Đối với FACE_DETECTIONDOCUMENT_TEXT_DETECTION: Do đối tượng có thể nhỏ hơn nhiều so với ảnh đầu vào. Do đó đối với trường hợp này có thể cần ảnh có kích thước lớn hơn so với kích thước được đề nghị để tăng độ chính xác.

Cloud Vision API cần phải có kích thước để phân biệt được các đặc trưng cần thiết cho từng yêu cầu cụ thể. Kích thước ảnh có thể lớn hơn hoặc nhỏ hơn kích thước ảnh được đề nghị thì API vẫn hoạt động bình thường. Tuy vậy, đối với ảnh có kích thước nhỏ hơn thì có thể dẫn đến độ chính xác thấp hơn. Trong khi đó, đối với ảnh có kích thước lớn hơn thì sẽ dẫn đến thời gian xử lý sẽ lâu hơn mà mang lại độ chính xác tương đương so với kích thước ảnh được đề nghị.

Dung lượng bao nhiêu là đủ?

Nhằm đảm bảo tốc độ xử lý cũng như tiết kiệm được băng thông. Vision API đề nghị và chỉ cho phép dung lượng ảnh upload lên không lớn hơn 20MB. Đối với những file ảnh có dung lượng lớn 20MB thì phải cần phải lưu trên Cloud Storage hoặc Web. Và còn một điếm chú ý nữa là dung lượng chuỗi JSON khi request không vượt quá 10MB.

Qua bài viết này, hy vọng các bạn sẽ có cách lựa chọn hình ảnh của mình để có thể sử dụng Vision API một cách hiệu quả, tiết kiệm được thời gian cũng như chi phí khi phát triển cũng như vận hành ứng dụng của mình.

Khi có chỗ nào chưa rõ, cần support, các bạn hãy liên hệ với các chuyên gia – Cloud Ace Việt Nam – để được hỗ trợ tốt hơn.

Nguồn: https://cloud.google.com/vision/docs/supported-files

Bao Vuong

Vương hiện là Cloud Engineer của Cloud Ace Vietnam.+6 năm kinh nghiệm phát triển backend +2 năm kinh nghiệm Data Analytics +1 năm kinh nghiệm Machine Learning

View all posts by Bao Vuong →