การใช้ Vision API กับ C#

1. ภาพรวม

Google Cloud Vision API ช่วยให้นักพัฒนาซอฟต์แวร์ผสานรวมฟีเจอร์การตรวจจับการมองเห็นภายในแอปพลิเคชันได้อย่างง่ายดาย รวมถึงการติดป้ายกำกับรูปภาพ การตรวจจับใบหน้าและจุดสังเกต การรู้จำอักขระด้วยภาพ (OCR) และการติดแท็กเนื้อหาที่อาจไม่เหมาะสม

ใน Codelab นี้ คุณจะมุ่งเน้นที่การใช้ Vision API กับ C# คุณจะได้เรียนรู้วิธีตรวจหาข้อความ ตรวจจับจุดสังเกต และการตรวจจับใบหน้า

สิ่งที่คุณจะได้เรียนรู้

  • วิธีใช้ Cloud Shell
  • วิธีเปิดใช้ Google Cloud Vision API
  • วิธีตรวจสอบสิทธิ์คำขอ API
  • วิธีติดตั้งไลบรารีของไคลเอ็นต์ Vision API สำหรับ C#
  • วิธีตรวจหาป้ายกำกับ
  • วิธีตรวจหาข้อความ
  • วิธีตรวจหาจุดสังเกต
  • วิธีดำเนินการตรวจจับใบหน้า

สิ่งที่คุณต้องมี

  • โปรเจ็กต์ Google Cloud Platform
  • เบราว์เซอร์ เช่น Chrome หรือ Firefox
  • ความคุ้นเคยกับการใช้ C#

แบบสำรวจ

คุณจะใช้บทแนะนำนี้อย่างไร

อ่านเท่านั้น อ่านและทำแบบฝึกหัด

คุณจะให้คะแนนความพึงพอใจสำหรับประสบการณ์การใช้งาน C# อย่างไร

มือใหม่ ระดับกลาง ผู้ชำนาญ

คุณจะให้คะแนนความพึงพอใจสำหรับประสบการณ์การใช้บริการ Google Cloud Platform อย่างไร

มือใหม่ ระดับกลาง ผู้ชำนาญ

2. การตั้งค่าและข้อกำหนด

การตั้งค่าสภาพแวดล้อมตามเวลาที่สะดวก

  1. ลงชื่อเข้าใช้ Google Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • ชื่อโครงการคือชื่อที่แสดงของผู้เข้าร่วมโปรเจ็กต์นี้ เป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ โดยคุณจะอัปเดตวิธีการชำระเงินได้ทุกเมื่อ
  • รหัสโปรเจ็กต์จะไม่ซ้ำกันในทุกโปรเจ็กต์ของ Google Cloud และจะเปลี่ยนแปลงไม่ได้ (เปลี่ยนแปลงไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ปกติแล้วคุณไม่สนว่าอะไรเป็นอะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยปกติจะระบุเป็น PROJECT_ID) หากคุณไม่ชอบรหัสที่สร้างขึ้น คุณสามารถสร้างรหัสแบบสุ่มอื่นได้ หรือคุณจะลองดำเนินการเองแล้วดูว่าพร้อมให้ใช้งานหรือไม่ คุณจะเปลี่ยนแปลงหลังจากขั้นตอนนี้ไม่ได้และจะยังคงอยู่ตลอดระยะเวลาของโปรเจ็กต์
  • สำหรับข้อมูลของคุณ ค่าที่ 3 คือหมายเลขโปรเจ็กต์ ซึ่ง API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 ค่าได้ในเอกสารประกอบ
  1. ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของระบบคลาวด์ การใช้งาน Codelab นี้จะไม่มีค่าใช้จ่ายใดๆ หากมี หากต้องการปิดทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินที่นอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่คุณสร้างหรือลบโปรเจ็กต์ได้ ผู้ใช้ Google Cloud ใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรี$300 USD

เริ่มต้น Cloud Shell

แม้ว่าคุณจะดำเนินการ Google Cloud จากระยะไกลได้จากแล็ปท็อป แต่คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมแบบบรรทัดคำสั่งที่ทำงานในระบบคลาวด์ใน Codelab นี้

เปิดใช้งาน Cloud Shell

  1. คลิกเปิดใช้งาน Cloud Shell d1264ca30785e435.png จาก Cloud Console

cb81e7c8e34bc8d.png

หากเริ่มต้นใช้งาน Cloud Shell เป็นครั้งแรก คุณจะเห็นหน้าจอตรงกลางที่อธิบายว่านี่คืออะไร หากระบบแสดงหน้าจอตรงกลาง ให้คลิกต่อไป

d95252b003979716.png

การจัดสรรและเชื่อมต่อกับ Cloud Shell ใช้เวลาเพียงไม่กี่นาที

7833d5e1c5d18f54.png

เครื่องเสมือนนี้โหลดด้วยเครื่องมือการพัฒนาทั้งหมดที่จำเป็น โดยมีไดเรกทอรีหลักขนาด 5 GB ถาวรและทำงานใน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพของเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก งานส่วนใหญ่ใน Codelab นี้สามารถทำได้โดยใช้เบราว์เซอร์

เมื่อเชื่อมต่อกับ Cloud Shell แล้ว คุณควรเห็นข้อความตรวจสอบสิทธิ์และโปรเจ็กต์ได้รับการตั้งค่าเป็นรหัสโปรเจ็กต์แล้ว

  1. เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคุณได้รับการตรวจสอบสิทธิ์แล้ว
gcloud auth list

เอาต์พุตจากคำสั่ง

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคำสั่ง gcloud รู้เกี่ยวกับโปรเจ็กต์ของคุณ
gcloud config list project

เอาต์พุตจากคำสั่ง

[core]
project = <PROJECT_ID>

หากไม่ใช่ ให้ตั้งคำสั่งด้วยคำสั่งนี้

gcloud config set project <PROJECT_ID>

เอาต์พุตจากคำสั่ง

Updated property [core/project].

3. เปิดใช้ Vision API

คุณต้องเปิดใช้ API ก่อนจึงจะเริ่มใช้ Vision API ได้ เมื่อใช้ Cloud Shell คุณจะเปิดใช้ API ได้โดยใช้คำสั่งต่อไปนี้

gcloud services enable vision.googleapis.com

4. ติดตั้งไลบรารีของไคลเอ็นต์ Google Cloud Vision API สำหรับ C#

ก่อนอื่นให้สร้างแอปพลิเคชันคอนโซล C# แบบง่ายที่คุณจะใช้เพื่อเรียกใช้ตัวอย่าง Vision API

dotnet new console -n VisionApiDemo

คุณควรเห็นการสร้างแอปพลิเคชันและการแก้ไขทรัพยากร Dependency แล้ว

The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.

จากนั้นไปที่โฟลเดอร์ VisionApiDemo

cd VisionApiDemo/

และเพิ่มแพ็กเกจ NuGet Google.Cloud.Vision.V1 ลงในโปรเจ็กต์ด้วย

dotnet add package Google.Cloud.Vision.V1
info : Adding PackageReference for package 'Google.Cloud.Vision.V1' into project '/home/atameldev/VisionApiDemo/VisionApiDemo.csproj'.
log  : Restoring packages for /home/atameldev/VisionApiDemo/VisionApiDemo.csproj...
...
info : PackageReference for package 'Google.Cloud.Vision.V1' version '1.2.0' added to file '/home/atameldev/VisionApiDemo/VisionApiDemo.csproj'.

ตอนนี้คุณพร้อมที่จะใช้ Vision API แล้ว

5. ดำเนินการตรวจหาป้ายกำกับ

ฟีเจอร์พื้นฐานอย่างหนึ่งของ Vision API คือการระบุวัตถุหรือเอนทิตีในรูปภาพ ซึ่งเรียกว่าคำอธิบายประกอบป้ายกำกับ การตรวจจับป้ายกำกับจะระบุวัตถุทั่วไป ตำแหน่ง กิจกรรม สายพันธุ์ของสัตว์ ผลิตภัณฑ์ และอื่นๆ Vision API จะเลือกรูปภาพอินพุตและแสดงผลป้ายกำกับที่น่าจะใช้กับรูปภาพนั้นมากที่สุด โดยจะแสดงป้ายกำกับที่ตรงกันมากที่สุดพร้อมคะแนนความเชื่อมั่นของการจับคู่ที่ตรงกันกับรูปภาพ

ในตัวอย่างนี้ คุณจะดำเนินการตรวจหาป้ายกำกับในรูปภาพของภาพท้องถนนในเซี่ยงไฮ้ เปิดตัวแก้ไขโค้ดจากด้านขวาบนของ Cloud Shell ดังนี้

92ea233083f961c5.png

ไปที่ไฟล์ Program.cs ภายในโฟลเดอร์ VisionApiDemo และแทนที่โค้ดด้วยข้อมูลต่อไปนี้

using Google.Cloud.Vision.V1;
using System;

namespace VisionApiDemo
{
    class Program
    {   
        static void Main(string[] args)
        {
            var client = ImageAnnotatorClient.Create();
            var image = Image.FromUri("gs://cloud-samples-data/vision/using_curl/shanghai.jpeg");
            var labels = client.DetectLabels(image);

            Console.WriteLine("Labels (and confidence score):");
            Console.WriteLine(new String('=', 30));

            foreach (var label in labels)
            {
                Console.WriteLine($"{label.Description} ({(int)(label.Score * 100)}%)");
            }
        }
    }
}

โปรดใช้เวลาสักครู่เพื่อศึกษาโค้ดและดูว่าไลบรารี Vision API C# ใช้ในการตรวจหาป้ายกำกับอย่างไร

กลับไปที่ Cloud Shell แล้วเรียกใช้แอปโดยทำดังนี้

dotnet run 

คุณควรจะเห็นผลลัพธ์ต่อไปนี้

Labels (and confidence score):
==============================
Wheel (97%)
Tire (97%)
Photograph (94%)
Bicycle (94%)
Motor vehicle (89%)
Infrastructure (89%)
Vehicle (86%)
Mode of transport (84%)
Bicycle wheel (83%)
Asphalt (81%)

สรุป

ในขั้นตอนนี้ คุณสามารถตรวจหาป้ายกำกับในภาพฉากถนนในประเทศจีน และแสดงป้ายกำกับที่เกี่ยวข้องกับภาพนั้นมากที่สุดได้ อ่านเพิ่มเติมเกี่ยวกับการตรวจจับป้ายกำกับ

6. ดำเนินการตรวจหาข้อความ

การตรวจจับข้อความของ Vision API ทำการรู้จำอักขระด้วยภาพ โดยจะตรวจหาและดึงข้อความในรูปภาพด้วยการรองรับภาษาที่หลากหลาย นอกจากนี้ ยังมีการระบุภาษาอัตโนมัติอีกด้วย

ในตัวอย่างนี้ คุณจะดำเนินการตรวจหาข้อความในรูปภาพของหน้าจอการอัปเดตซอฟต์แวร์ระบบ

ไปที่ไฟล์ Program.cs ภายในโฟลเดอร์ VisionApiDemo และแทนที่โค้ดด้วยข้อมูลต่อไปนี้

using Google.Cloud.Vision.V1;
using System;

namespace VisionApiDemo
{
    class Program
    {   
        static void Main(string[] args)
        {
            var client = ImageAnnotatorClient.Create();
            var image = Image.FromUri("gs://cloud-samples-data/vision/text/screen.jpg");
            var response = client.DetectText(image);
            foreach (var annotation in response)
            {
                if (annotation.Description != null)
                {
                    Console.WriteLine(annotation.Description);
                }
            }
        }
    }
}

โปรดใช้เวลาสักครู่เพื่อศึกษาโค้ดและดูว่าไลบรารี Vision API C# ใช้ในการตรวจหาข้อความอย่างไร

กลับไปที่ Cloud Shell แล้วเรียกใช้แอปโดยทำดังนี้

dotnet run 

คุณควรจะเห็นผลลัพธ์ต่อไปนี้

System Software Update
Back
Preparing to install...
After preparation is complete, the PS4 will automatically restart and the update file will be
installed.
37%
gus class
System
Software
Update
Back
Preparing
to
install
...
After
preparation
is
complete
,
the
PS4
will
automatically
restart
and
the
update
file
will
be
installed
.
37
%
gus
class

สรุป

ในขั้นตอนนี้ คุณสามารถตรวจหาข้อความในรูปภาพของ Otter Crossing และพิมพ์ข้อความที่รู้จักจากรูปภาพ อ่านเพิ่มเติมเกี่ยวกับการตรวจจับข้อความ

7. ดำเนินการตรวจหาจุดสังเกต

การตรวจหาจุดสังเกตของ Vision API จะตรวจหาโครงสร้างตามธรรมชาติและที่มนุษย์สร้างขึ้นยอดนิยมภายในรูปภาพ

ในตัวอย่างนี้ คุณจะดำเนินการตรวจหาจุดสังเกตในรูปภาพหอไอเฟล

ไปที่ไฟล์ Program.cs ภายในโฟลเดอร์ VisionApiDemo และแทนที่โค้ดด้วยข้อมูลต่อไปนี้

using Google.Cloud.Vision.V1;
using System;

namespace VisionApiDemo
{
    class Program
    {   
        static void Main(string[] args)
        {
            var client = ImageAnnotatorClient.Create();
            var image = Image.FromUri("gs://cloud-samples-data/vision/eiffel_tower.jpg");
            var response = client.DetectLandmarks(image);
            foreach (var annotation in response)
            {
                if (annotation.Description != null)
                {
                    Console.WriteLine(annotation.Description);
                }
            }
        }
    }
}

โปรดใช้เวลาสักครู่เพื่อศึกษาโค้ดและดูว่าไลบรารี Vision API C# ใช้ในการตรวจหาจุดสังเกตอย่างไร

กลับไปที่ Cloud Shell แล้วเรียกใช้แอปโดยทำดังนี้

dotnet run

คุณควรจะเห็นผลลัพธ์ต่อไปนี้

Eiffel Tower

สรุป

ในขั้นตอนนี้ คุณสามารถตรวจหาจุดสังเกตในภาพหอไอเฟลได้ อ่านเพิ่มเติมเกี่ยวกับการตรวจหาจุดสังเกต

8. ดำเนินการตรวจจับใบหน้าทางอารมณ์

การตรวจจับใบหน้าจะตรวจจับใบหน้าหลายใบหน้าในภาพ พร้อมกับลักษณะใบหน้าที่สำคัญที่เกี่ยวข้อง เช่น ภาวะอารมณ์หรือการสวมหมวก

ในตัวอย่างนี้ คุณจะตรวจพบแนวโน้มของสภาวะทางอารมณ์จากแนวโน้มทางอารมณ์ 4 แบบ ได้แก่ ความสุข ความโกรธ ความเศร้าโศก และความประหลาดใจ

ไปที่ไฟล์ Program.cs ภายในโฟลเดอร์ VisionApiDemo และแทนที่โค้ดด้วยข้อมูลต่อไปนี้

using Google.Cloud.Vision.V1;
using System;

namespace VisionApiDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = ImageAnnotatorClient.Create();

            var image = Image.FromUri("gs://cloud-samples-data/vision/face/face_no_surprise.jpg");
            var response = client.DetectFaces(image);
            foreach (var annotation in response)
            {
                Console.WriteLine($"Picture: {image}");
                Console.WriteLine($" Surprise: {annotation.SurpriseLikelihood}");
            }
        }
    }
}

โปรดใช้เวลาสักครู่เพื่อศึกษาโค้ดและดูว่าไลบรารี Vision API C# ใช้ในการตรวจจับใบหน้าอารมณ์อย่างไร

เรียกใช้แอป

dotnet run

คุณควรเห็นผลลัพธ์ต่อไปนี้สำหรับตัวอย่าง face_no_surprise ของเรา

Picture: { "source": { "imageUri": "gs://cloud-samples-data/vision/face/face_no_surprise.jpg" } }
 Surprise: Likely

สรุป

ในขั้นตอนนี้ คุณได้ทำการตรวจจับใบหน้าทางอารมณ์ อ่านเพิ่มเติมเกี่ยวกับการตรวจจับใบหน้า

9. ยินดีด้วย

คุณได้เรียนรู้วิธีใช้ Vision API โดยใช้ C# เพื่อตรวจจับรูปภาพแบบต่างๆ แล้ว

ล้างข้อมูล

เพื่อเลี่ยงไม่ให้เกิดการเรียกเก็บเงินกับบัญชี Google Cloud Platform สำหรับทรัพยากรที่ใช้ในการเริ่มต้นอย่างรวดเร็วนี้ ควรทำดังนี้

  • ไปที่คอนโซล Cloud Platform
  • เลือกโครงการที่คุณต้องการปิดการทำงาน แล้วคลิก "ลบ" ที่ด้านบน: การดำเนินการนี้จะกำหนดเวลาการลบโปรเจ็กต์

ดูข้อมูลเพิ่มเติม

ใบอนุญาต

ผลงานนี้ได้รับอนุญาตภายใต้ใบอนุญาตทั่วไปครีเอทีฟคอมมอนส์แบบระบุแหล่งที่มา 2.0