NỘI DUNG BÀI VIẾT
Trong sáu tháng qua, Google, Microsoft và IBM đã công bố một bộ “API thông minh” cung cấp nhiều loại hình hình ảnh, video, giọng nói và nhận dạng văn bản. Ví dụ như qua một bức ảnh ở công viên, bạn có thể nhận biết được các tags bao gồm một con chó, một dĩa nhựa và cây cối. Làm thế nào với các mô hình out-of-the-box ứng dụng cho các mục đích chung, và chúng ta có thể sử dụng chúng để xây dựng các sản phẩm hoặc các tính năng thú vị mới?
Trong bài đăng này, tôi sẽ so sánh khả năng gắn nhãn hình ảnh của năm nhà cung cấp với các quan điểm và đề xuất cho các bạn xây dựng sản phẩm. Tôi cũng cung cấp một công cụ mã nguồn mở, Cloudy Vision, để bạn có thể thử nghiệm những hình ảnh của riêng bạn và chọn nhà cung cấp tốt nhất cho bạn (spoiler: Google không phải là người chiến thắng). Cuối cùng, tôi chia sẻ kết quả ghi lại 40 ví dụ hình ảnh.
Lưu ý rằng mục đích của tôi nhằm để có được một cảm nhận về chất lượng của các API này, đây không phải là một nghiên cứu chính xác. Tôi cũng tập trung vào ghi nhãn hình ảnh, không phải phát hiện khuôn mặt hoặc OCR.
Approach
Tôi bắt đầu bằng cách chụp một vài bức ảnh và chạy chúng thông qua các công cụ kiểm tra dựa trên web của một số nhà cung cấp. Kế hoạch của tôi là tự tìm kiếm các kết quả trong bảng tính. Than ôi, nhưng quá trình này quá tẻ nhạt. Nó cũng không đầy đủ bởi vì không phải tất cả các nhà cung cấp đều có các công cụ kiểm tra như vậy, ý tôi là Google.
Tôi nhanh chóng nhận ra rằng để xem xét và so sánh từng phần của nhiều hình ảnh, cách tốt nhất là xây dựng một công cụ nhỏ. Tôi đã viết một Python script để lặp lại một thư mục các hình ảnh, gọi các API của nhà cung cấp khác nhau, cache các câu trả lời, và hiển thị một trang web để xem các dữ liệu tôi quan tâm.
Cloudy Vision là một open source tools để tạo ra các kết quả như thế này cho bộ ảnh của bạn.
Cloudy Vision có thể ghi tag hình ảnh từ Microsoft, Google, IBM, Clarifai và Cloud Sight nhưng rất dễ mở rộng để hỗ trợ nhiều nhà cung cấp hơn. Nếu bạn có tập hình ảnh và muốn khám phá các tags, đây là một điểm khởi đầu tốt cho đánh giá định tính, cũng như cho việc kiểm tra tính chính xác nghiêm ngặt hơn (ví dụ: so sánh nhãn tính với bộ yêu cầu của bạn).
Observations
Tôi dùng khoảng bốn mươi hình ảnh thông qua 5 nhà cung cấp. Tôi khuyên bạn nên xem trang đó tạo thành các hiển thị của chính bạn trước khi đi xa hơn. Dưới đây là một số điều tôi nhận thấy:
- Hầu hết các hình ảnh đều được gắn với một loại nhãn chính xác cao.
Kết quả đã đủ tốt để hiểu được bản chất của một hình ảnh, ví dụ: nó là thực phẩm, phòng, nhạc cụ, hay động vật? Khá ấn tượng khi xem xét rất nhiều thứ bạn có thể ném vào nó.
- Labels có tính cụ thể không đáng tin cậy
Nếu bạn muốn biết chi tiết, chẳng hạn như loại thực phẩm, hoặc chính xác là động vật nào trong bức ảnh, kết quả có sự khác biệt rất lớn. Một số ấn tượng, như nhận ra tablas của tôi (trống cổ điển Ấn Độ), nhưng nhiều hình ảnh không có nhiều nhãn cụ thể.
- Rất hiếm có lỗi, nhưng sẽ xảy ra
Trong hầu hết các trường hợp, khi thuật toán bị lẫn lộn, nó có xu hướng tạo nhãn có điểm tin cậy thấp, thay vì chỉ đoán sai – vì vậy bạn có thể bỏ qua chúng một cách an toàn. Nhưng ngay cả trong thư mục lưu trữ của tôi, 5-10% các hình ảnh chỉ được dán nhãn không chính xác, đôi khi có kết quả vui nhộn.
- Có sự khác biệt đáng kể giữa các nhà cung cấp.
Vì quan điểm công khai của họ, và những thành tựu gần đây về AI, tôi nghĩ rằng kết quả của Google sẽ cao hơn các nhà cung cấp khác, nhưng điều đó không nhất thiết phải đúng. Trong tập đoàn nhỏ của tôi, tôi đánh giá Clarifai ở vị trí hàng đầu, tiếp theo là Google và Microsoft về chất lượng tương đương, và sau đó thấp hơn IBM. Lưu ý rằng Clarifai là một công ty tư nhân chỉ tập trung vào việc cung cấp các API nhận diện hình ảnh, và họ đã làm việc này từ năm 2014, trước khi những người khổng lồ bước vào không gian này.
- Clarifai làm tốt, Google với Microsoft cũng tạm được, Cloudsight… hừm
Bạn có thể nhận thấy trong các ví dụ ở trên rằng các chú thích của Cloud Sight thật tuyệt vời (bạn có thể xem ví dụ bên dưới). Nếu bạn truy cập trang web của họ, bạn sẽ nhận thấy rằng họ giới thiệu về ‘công nghệ nhận dạng hình ảnh’ của họ, và do đó bạn có thể đoán rằng đó là do một mô hình machine learning ấn tượng. Tuy nhiên, có vẻ như họ gắn tag của con người nhiều hơn so với những gì mà họ marketing.
Thứ nhất, độ trễ cho hầu hết các nhà cung cấp API là chưa tới 1 giây, trong khi các tài liệu của Cloud Sight yêu cầu bạn đợi 6-15 giây (trong thực tế thì nó khoảng 5-30). Thứ hai, tôi nhận ra một điều này bên trong tài liệu về sự riêng tư của họ “Dịch vụ của chúng tôi dùng một công nghệ độc quyền sử dụng cả computer vision và crowdsourcing”.Thứ ba, một số tìm kiếm khác đã bật lên chủ đề Reddit về cách chúng hoạt động, và nhận xét này từ humman tagger. Và cuối cùng, tôi đã gửi cùng một hình ảnh với các tên tập tin khác nhau, và có phụ đề khác nhau, cho thấy rằng việc gắn tag của con người là có liên quan. Oh, và nhãn hiệu đầu tiên có lỗi chính tả …!
Vì vậy, trong khi kết quả của Cloud Sight thực sự ấn tượng, tôi không chắc đó là công bằng khi so sánh chúng với các nhà cung cấp khác từ quan điểm nhìn của machine learning thuần túy. Hơn nữa, chi phí của họ cao hơn đáng kể, có thể cho rằng có nhiều trường hợp gắn thẻ thủ công ở phía sau hơn họ cho phép.
Tôi đã gửi cùng một hình ảnh nhưng với một tên tập tin khác nhau cho tất cả các nhà cung cấp. Tất cả đều có cùng các thẻ trừ Cloud Sight.
- Xoay chiều có thể ảnh hướng đến độ chính xác
Tôi đã làm một phiên bản được quay ngược của hình ảnh của chú chó con được hiển thị ở trên,và như vậy, tôi có kết quả khác nhau. Điều quan trọng là phải nhận biết được, đặc biệt là vì thông tin xoay trong JPEG được lưu trữ trong dữ liệu EXIF và có thể được xử lý bằng các cách khác không theo tiêu chuẩn bởi các ứng dụng khác nhau.
- Kết quả sẽ tốt hơn nếu bạn zoom vào các khu vực cần quan tâm
Tôi muốn xem nếu tôi có thể lấy camera an ninh của tôi để cho tôi biết rằng có một gói hàng ở cửa. Nó đã không hoạt động tốt, cho đến khi tôi cắt hình ảnh của khu vực được quan tâm để xác định. Nếu trường hợp sử dụng của bạn cho phép người dùng xác định khu vực quan tâm, hãy xem xét cách tiếp cận này.
- Giá cả theo số lượng
Giả sử bạn có 100.000 hình ảnh để dán nhãn. Google sẽ có chi phí 500 đô la, Clarifai 220 đô la, 200 đô la của IBM và giá của Microsoft vẫn chưa được công bố.
Không quá tồi, xem xét có giá rẻ nhất để có được ở quy mô lớn hoặc để offline processing(so với thời gian thực). Lưu ý rằng Cloud Sight, nhà cung cấp nhãn hiệu có thể đang thực hiện với rất nhiều con người, sẽ có giá 3.000 đô la, mức độ lớn hơn so với các nhà cung cấp gắn bó với machine learning.
Hãy lấy ví dụ giả thuyết: nếu tôi là Dropbox và tôi muốn cung cấp hình ảnh gắn tag cho khách hàng của tôi, giả sử mỗi khách hàng tải lên 500 hình ảnh một tháng, tôi sẽ phải trả 2 đô la cho mỗi khách hàng. Với kế hoạch hàng năm 100 đô la, điều đó sẽ ảnh hưởng đến lợi nhuận của Dropbox, nhưng về mặt lý thuyết, một công ty ở quy mô đó sẽ được giảm giá tốt hơn hoặc chuyển sang xây dựng in house sau khi chứng minh được giá trị cho thị trường.
Kết luận
Tôi ấn tượng với chất lượng phân loại chung – nó đủ tốt để có được đặc tính cơ bản của một hình ảnh, nhanh và chi phí thấp ở quy mô tương đối thấp.
Điều đó nói rằng, rất khó để đánh giá một giải pháp mà không có một vấn đề thực sự. Ví dụ, việc sử dụng là để phân loại(ví dụ: “đây là thực phẩm”), nếu tôi cần những thông tin chi tiết cho trường hợp sử dụng của tôi (ví dụ: “trang web công thức nấu ăn của tôi cần biết đây có phải là một mẩu thịt hay rau”) . Với ý nghĩ đó, hãy để tôi đặt ra một vài giả thuyết khi bạn có thể thấy các API này có giá trị một lần với bạn.
Tham khảo khóa học lập trình web 6 tháng, đảm bảo 100% công việc đầu ra!
Nguồn: https://topdev.vn/blog/toi-da-rut-ra-kinh-nghiem-lap-trinh-gi-tu-du-an-dau-tien-cua-minh/