การใช้ 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 ของ Cloud การทำตาม Codelab นี้จะไม่มีค่าใช้จ่ายมากนัก หรืออาจไม่มีค่าใช้จ่ายเลย หากต้องการปิดทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่สร้างขึ้นหรือลบโปรเจ็กต์ได้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD

เริ่มต้น Cloud Shell

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

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

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

cb81e7c8e34bc8d.png

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

d95252b003979716.png

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

7833d5e1c5d18f54.png

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

เมื่อเชื่อมต่อกับ 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

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

gcloud services enable vision.googleapis.com

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

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

dotnet new console -n VisionApiDemo

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

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

จากนั้นไปที่โฟลเดอร์ VisionApiDemo โดยใช้คำสั่งต่อไปนี้

cd VisionApiDemo/

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

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)}%)");
            }
        }
    }
}

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

กลับไปที่ 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);
                }
            }
        }
    }
}

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

กลับไปที่ 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

สรุป

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

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);
                }
            }
        }
    }
}

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

กลับไปที่ 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}");
            }
        }
    }
}

ใช้เวลาสัก 1-2 นาทีเพื่อศึกษาโค้ดและดูวิธีใช้ไลบรารี C# ของ Vision API เพื่อทำการตรวจจับอารมณ์จากใบหน้า

เรียกใช้แอป

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
  • เลือกโปรเจ็กต์ที่ต้องการปิด แล้วคลิก "ลบ" ที่ด้านบน ซึ่งจะเป็นการกำหนดเวลาให้ลบโปรเจ็กต์

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

ใบอนุญาต

ผลงานนี้ได้รับอนุญาตภายใต้สัญญาอนุญาตครีเอทีฟคอมมอนส์สำหรับยอมรับสิทธิของผู้สร้าง (Creative Commons Attribution License) 2.0 แบบทั่วไป