Google vision là gì

Tình hình là mình đang research về các giải pháp xử lý và nhận diện hình ảnh cho dự án sắp tới, chủ yếu là về khả năng detect các object và con người, trích xuất các keywords, nhận diện địa danh... Một số ứng cử viên có thể kể đến như Google Cloud Vision (trả phí), Azure Vision (trả phí) và một số thư viện open-source như OpenCV, TensorFlow.

Google vision là gì


Bài viết sau mình sẽ hướng dẫn các bạn cấu hình và tạo API key để sử dụng Google Vision và một số code mẫu về xử lý hình ảnh của thư viện này như: Keywords Extract, Face Detection, Landmark Detection.

Đăng ký tài khoản

Đầu tiên các bạn cần phải đăng ký tài khoản Google Cloud để được nhận 300$ miễn phí cho 12 tháng. Sau đó tiến hành add thêm project mới vào Google Cloud Console. Sau khi tạo thành công tài khoản và add Google Cloud Vision API cho project các bạn sẽ thấy số tiền và thời gian sử dụng tại trang billing


Google vision là gì


Tiếp theo chúng ta vào trang Credentials tiến hành tạo API key để bắt đầu sử dụng các API của Google Cloud Vision

Google vision là gì


Tài liệu API và ví dụ mẫu

Keywords Extraction API (https://cloud.google.com/vision/docs/detecting-labels)

Google vision là gì


Trích xuất tất cả các nhãn, từ khóa trong một tấm hình, các đối tượng được trích xuất là sự vật, động vật, phương tiện giao thông... Các bạn sử dụng CURL để post, tham khảo mã nguồn dưới đây:

$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://vision.googleapis.com/v1/images:annotate?key=API_KEY", // API key cua bạn CURLOPT_SSL_VERIFYHOST => 0, CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => '{"requests":[{"image":{"content":"'. $imdata .'"},"features":[{"type":"LABEL_DETECTION"}]}]}', // $imdata : base64 image CURLOPT_HTTPHEADER => array( "cache-control: no-cache", "content-type: application/json" ), ));


Sau khi thêm thắt một chút Html & CSS thì ình có một demo ở đây: http://huynhphuchuy.com/pixlrx

Face Detection API (https://cloud.google.com/vision/docs/detecting-faces)


Google vision là gì


Nhận diện khuôn mặt cùng các bộ phận và cảm xúc trên khuôn mặt. Các bạn sử dụng CURL để post, tham khảo mã nguồn dưới đây:

$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://vision.googleapis.com/v1/images:annotate?key=API_KEY", // API key cua bạn CURLOPT_SSL_VERIFYHOST => 0, CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => '{"requests":[{"image":{"content":"'. $imdata .'"},"features":[{"type":"FACE_DETECTION"}]}]}', CURLOPT_HTTPHEADER => array( "cache-control: no-cache", "content-type: application/json" ), ));


Demo: http://huynhphuchuy.com/pixlrx/face.php

Landmark Detection API (https://cloud.google.com/vision/docs/detecting-landmarks)

Google vision là gì


Nhận diện các địa danh, danh lam thắng cảnh, các công trình kiến trúc nổi tiếng. Các bạn sử dụng CURL để post, tham khảo mã nguồn dưới đây:

$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://vision.googleapis.com/v1/images:annotate?key=API_KEY", // API key cua bạn CURLOPT_SSL_VERIFYHOST => 0, CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => '{"requests":[{"image":{"content":"'. $imdata .'"},"features":[{"type":" LANDMARK_DETECTION"}]}]}', CURLOPT_HTTPHEADER => array( "cache-control: no-cache", "content-type: application/json" ), ));


Còn một số các API khác nữa mà mình chưa có thời gian để tìm hiểu, các bạn có thể tự tìm hiểu thêm ở trang tài liệu API mà mình đã đề cập ở trên. Các bài viết tiếp theo mình sẽ hướng dẫn và cung cấp các ví dụ mẫu về các thư viện mã nguồn mở cho việc xử lý hình ảnh để giúp cho các bạn muốn một giải pháp mà không tốn chi phí nào
Google vision là gì

Google Cloud có thành phần GC Vision API để nhận dạng chữ trong hình ảnh, văn bản. Nó tự dò tìm từng khối văn bản, nhận ra được chữ thuộc ngôn ngữ gì.

Code để nhận dạng chữ trong văn bản, dùng công cụ gcloud trong terminal, kết quả được trả về ở dạng JSON:

gcloud ml vision detect-document resources/column_stem.jpg > result_gcloud_detect-document.json
gcloud ml vision detect-text resources/column_stem.jpg > result_gcloud_detect-text.json

Theo Google cho biết thì dùng “detect-document” khi file hình là văn bản dày đặc chữ (“dense document text”, hướng dẫn: https://cloud.google.com/vision/docs/detecting-fulltext), còn khi trong hình có ít chữ thì dùng “detect-text” (hướng dẫn: https://cloud.google.com/vision/docs/detecting-text).

Trong trường hợp dùng Python để gọi Google Cloud Vision API, tôi có viết chương trình Python để xử lý dữ liệu sau khi thu được (chạy tốt với Python3, còn Python2 thì còn vướng mắc khi chữ nhận dạng có ký tự Unicode): https://gitlab.com/dichthuat/tools/ocr

Nhận xét: Google Cloud Vision API hoạt động rất tốt, chỉ có vấn đề là khi trong hình ảnh có nhiều khối văn bản, có thể nó không phân tách tốt các khối nên bị lẫn lộn các đoạn văn.

Hai ví dụ:

1. Nhận diện chính xác các khối văn bản:

Google vision là gì

Kết quả nhận diện:

Google vision là gì

Kiểm tra vật liệu

WK

Thí nghiệm kéo

( theo DIN EN ISO

6892 – 1 )

Thí nghiệm kéo được dùng để xác định ứng suất cho phép ( an toàn ) của một vật liệu và được dùng làm cơ sở để thiết kế bồn chứa chịu áp suất , đường ống và các bộ phận thiết bị khác chịu áp suất từ bên trong .

Hình 1 – 2 – 3 – 4 ( so sánh với bản gốc tiếng Đức ! ) Chú thích 1 . 1 : Nguyên lý chịu tải Chú thích 2 . 1 : Vật liệu có giới hạn đàn hồi rõ rệt Chú thích 3 . 1 : Vật liệu không có giới hạn đàn hồi rõ rệt Chú thích 4 . 1 : Vật liệu dòn không biến dạng dẻo

Đại lượng đo

hiệu |

Tên gọi

Tương quan

Ý nghĩa

Đon vi %

Độ giãn gãy

Biến đổi chiều dài còn lưu lại so với chiều dài ban đầu ( đơn vị % )

A = ( Lu – Lo ) 100 / LO

Ag

Biến đổi độ dài còn lưu lại cho đến lực Fm lớn nhất so với độ dài ban đầu , đơn vị %

Độ giãn dài không tỷ lệ thuận tại lực kéo Fm lớn nhất ( độ dãn dẻo đo bằng máy đo độ dãn lúc lực lớn nhất )

MPa

Mô – đun đàn hồi

6 E = 0 / €

Lực kéo

Fm | Lực kéo lớn nhất

Trị số đo chiều dài

mm

Tỷ lệ giữa ứng suất và độ giãn dài trong phạm vi đàn hồi ( Độ nghiêng của đường thẳng trên biểu đồ ứng suất – độ giãn dài ) Lực tác dụng thẳng góc với mặt cắt S của mẫu thử Lực kéo tối đa mà một vật liệu với tiết diện ban đầu S . Có thể chịu nổi . Chiều dài giữa 2 điểm đánh dấu trên mẫu thử nghiệm Chiều dài ban đầu giữa 2 điểm đánh dấu trên mẫu thử trước khi thử nghiệm kéo Chiều dài giữa 2 điểm đánh dấu trên vật thử sau khi đứt gãy ( khi ghép 2 mảnh lại với nhau tại chỗ gãy ) Ứng suất kéo của độ dãn dẻo không – theo tỷ – lệ tại điểm 0 , 2 % hoặc 1 , 0 % .

mm

Trị số đo chiều dài ban đầu Tri số đo chiều dài sau khi đứt gay

mm

MPa

p0 , 2

Giới hạn 0 , 2 Giới hạn 10 ( Giới han dẫn đo với máy đỏ độ dãn ) Giới hạn đàn hồi trên

p1 , 0 ReH

MPa

Rm | Độ bền lực kéo

MPa

7

Ứng suất lớn nhất trước khi xuất hiện sự giảm lực rõ rệt lần đầu tiên . Ứng suất kéo là tỷ số giữa lực kéo lớn nhất Fm và tiết diện ban đầu so Tiết diện của mẫu thử trước khi thử nghiệm

Rm = Fm / So

So

Tiết diện ban đầu

mm

e ( 6 ) | Độ dãn dài

%

Độ dãn tương ứng với chiều dài đo ban đầu Lo

Ơ

| Ứng suất

MPa

8 e ( € ) = ( L – Lo ) 100 / LO o = F / S09 Trong vùng đàn hối :
= E . e ( 8 ) 9 . 1 ( 10 ) SV = ReH / Rm

Ứng suất tức thời là tỷ lệ tương ứng giữa | lực đang tác động F và tiết diện ban đầu So

SV

Tỷ lệ giới hạn đàn hồi

SV nhỏ + Khả năng biến dạng lớn . SV lớn + Chỉ biến dạng đàn hồi thuần túy ( t . d , lò xo )

2. Nhận diện từng từ thì đúng, nhưng xử lý sai các khối văn bản, làm cho các đoạn văn (ở 2 cột) bị lẫn vào nhau:

Google vision là gì

Kết quả nhận diện:

Google vision là gì

514

Những thiết bị điều khiển loại nhỏ

www .

15 . 2 Những thiết bị điều khiển loại nhỏ Những thiết bị điều khiển loại nhỏ thích hợp với những Tổng quan 1 : Lĩnh vực ứng dụng của thiết bị điều chức năng điều khiển đơn giản . Chúng có phạm vi khiến loại nhỏ ứng dụng đa dạng ( xem Tổng quan 1 ) , rất dễ sử dụng • Trang bị trong nhà , thí dụ điều khiển đèn chiếu sáng , và lập trình . Trong các nghề lắp ráp và sửa chữa màn cuốn , cổng ra vào , điều hòa nhiệt độ cho các điện thủ công vào thời điểm này có rất nhiều thiết bị nhà vườn vào mùa đông hay các nhà kính . điều khiển loại nhỏ được sử dụng , thí dụ như Easy , LOGO ! 2 và Pharao3 . Chế tạo máy và thiết bị , thí dụ điều khiển động cơ , hệ | thống thông khí , bơm nước dùng trong công nghiệp . • www . automation . siemens . com / logo • www . theben . de Bảng : Thông số đặc trưng của những thiết bị điều khiển • www . moeller . net | loại nhỏ Việc thay đổi điều khiển trong thiết bị nhỏ khá đơn Thông số đặc trưng | Số lượng , giải thích giản bằng cách thay đổi chương trình mà không cần Đầu vào chuyển mạch 6 đến 24 thay đổi việc đấu nối dây phức tạp . Điện áp | 12 V DC , 24 V DC hay 230 V AC Thiết bị điều khiển loại nhỏ cũng thuộc về nhóm Đầu vào analog 2 đến 12 , với bộ biến đổi AD | điều khiến logic lập trình ( PLC ) và thích hợp với Giao diện AS 4 giao diện – đầu nối điện AS những chức năng điều khiển đơn giản . Đầu ra chuyển mạch 4 đến 12 với transistor chuyển ( công tắc ) mạch hay rơle Công suất chuyển 1 A , 8 V đến 24 V DC , 8 A đến Cấu tạo . Những thiết bị điều khiển loại nhỏ có kích mạch 20 A , 230 V AC thước nhỏ và được lắp đặt trong những Vỏ máy đã Công suất tiêu hao 2 W đến 7 W được tiêu chuẩn hóa dưới dạng cáp nối tiếp nhau hay găn nhanh trên đường ray định hình . Tùy theo lĩnh vực sử dụng , các nhà chế tạo cung cấp Nguồn điện nhiều kiểu máy khác nhau , thí dụ như nguồn điện cung cấp Các đầu vào cung cấp : 12 / 24V DC hay 230V AC với nhiều công L1 N 11 12 13 14 15 16 suất chuyển mạch khác nhau ( Bảng ) . Bên cạnh những Màn hình LCD thiết bị điều khiến nhỏ có đầu vào với tín hiệu digital AC115 / 120V Input 6 x AC và analog , còn có một loại thiết bị nhỏ khác nối với Giao diện bus trường ( AS – I ) ( Trang 537 ) . ( card nhớ rời Vùng bàn phím thao tác của thiết bị điều khiển loại và đầu nối PC ) nhỏ , thí dụ máy LOGO ! ( Hình ) dùng để nhập và thay đổi chương trình chuyển mạch . Màn hình tinh PC / Card . . Start thể lỏng ( LCD ) hiển thị chương trình . Chương trình chuyển mạch chứa trong một môđun EEPROM ( bộ Bàn phím nhớ đọc lập trình được và xóa được bằng điện ) . Vào LOGO ! 230 – RC ESC OK điều khiển bất kỳ thời điểm nào môđun EEPROM này ( Trang Output 4xRelay / 8A 494 ) cũng có thể được thay thế bằng môđun khác . Lập trình . Thực hiện lập trình qua bàn phím trên thiết bị rất phức tạp , nên người ta thường dùng PC với to be enable chương trình phần mềm tương ứng . Do đó cũng có thiết bị điều khiển loại nhỏ không có bàn phím .

Các đầu ra