استفاده از Vision API با سی شارپ

۱. مرور کلی

رابط برنامه‌نویسی کاربردی Google Cloud Vision به توسعه‌دهندگان اجازه می‌دهد تا به راحتی ویژگی‌های تشخیص بینایی، از جمله برچسب‌گذاری تصویر، تشخیص چهره و نقاط دیدنی، تشخیص کاراکتر نوری (OCR) و برچسب‌گذاری محتوای صریح را در برنامه‌ها ادغام کنند.

در این آزمایشگاه کد، شما بر استفاده از رابط برنامه‌نویسی کاربردی بینایی (Vision API) با سی‌شارپ (C#) تمرکز خواهید کرد. یاد خواهید گرفت که چگونه تشخیص متن، تشخیص نقاط دیدنی و تشخیص چهره را انجام دهید!

آنچه یاد خواهید گرفت

  • نحوه استفاده از پوسته ابری
  • نحوه فعال کردن API گوگل کلود ویژن
  • نحوه احراز هویت درخواست‌های API
  • نحوه نصب کتابخانه کلاینت Vision API برای سی شارپ
  • نحوه انجام تشخیص برچسب
  • نحوه انجام تشخیص متن
  • نحوه انجام تشخیص نقاط برجسته
  • نحوه انجام تشخیص چهره

آنچه نیاز دارید

  • یک پروژه پلتفرم ابری گوگل
  • یک مرورگر، مانند کروم یا فایرفاکس
  • آشنایی با استفاده از سی شارپ

نظرسنجی

چگونه از این آموزش استفاده خواهید کرد؟

فقط تا انتها بخوانید آن را بخوانید و تمرین‌ها را انجام دهید

تجربه خود را با C# چگونه ارزیابی می‌کنید؟

تازه کار متوسط ماهر

تجربه خود را در استفاده از خدمات پلتفرم ابری گوگل چگونه ارزیابی می‌کنید؟

تازه کار متوسط ماهر

۲. تنظیمات و الزامات

تنظیم محیط خودتنظیم

  1. وارد کنسول گوگل کلود شوید و یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید. اگر از قبل حساب جیمیل یا گوگل ورک اسپیس ندارید، باید یکی ایجاد کنید .

۲۹۵۰۰۴۸۲۱bab6a87.png

37d264871000675d.png

۹۶d86d3d5655cdbe.png

  • نام پروژه، نام نمایشی برای شرکت‌کنندگان این پروژه است. این یک رشته کاراکتری است که توسط APIهای گوگل استفاده نمی‌شود. شما همیشه می‌توانید آن را به‌روزرسانی کنید.
  • شناسه پروژه در تمام پروژه‌های گوگل کلود منحصر به فرد است و تغییرناپذیر است (پس از تنظیم، قابل تغییر نیست). کنسول کلود به طور خودکار یک رشته منحصر به فرد تولید می‌کند؛ معمولاً برای شما مهم نیست که چه باشد. در اکثر آزمایشگاه‌های کد، باید شناسه پروژه خود را (که معمولاً با عنوان PROJECT_ID شناخته می‌شود) ارجاع دهید. اگر شناسه تولید شده را دوست ندارید، می‌توانید یک شناسه تصادفی دیگر ایجاد کنید. به عنوان یک جایگزین، می‌توانید شناسه خودتان را امتحان کنید و ببینید که آیا در دسترس است یا خیر. پس از این مرحله قابل تغییر نیست و در طول پروژه باقی می‌ماند.
  • برای اطلاع شما، یک مقدار سوم، شماره پروژه ، وجود دارد که برخی از APIها از آن استفاده می‌کنند. برای کسب اطلاعات بیشتر در مورد هر سه این مقادیر، به مستندات مراجعه کنید.
  1. در مرحله بعد، برای استفاده از منابع/API های ابری، باید پرداخت صورتحساب را در کنسول ابری فعال کنید . اجرای این آزمایشگاه کد هزینه زیادی نخواهد داشت، اگر اصلاً هزینه‌ای داشته باشد. برای خاموش کردن منابع به منظور جلوگیری از پرداخت صورتحساب پس از این آموزش، می‌توانید منابعی را که ایجاد کرده‌اید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان ۳۰۰ دلاری هستند.

شروع پوسته ابری

اگرچه می‌توان از راه دور و از طریق لپ‌تاپ، گوگل کلود را مدیریت کرد، اما در این آزمایشگاه کد، از گوگل کلود شل ، یک محیط خط فرمان که در فضای ابری اجرا می‌شود، استفاده خواهید کرد.

فعال کردن پوسته ابری

  1. از کنسول ابری، روی فعال کردن پوسته ابری کلیک کنید d1264ca30785e435.png .

cb81e7c8e34bc8d.png

اگر این اولین باری است که Cloud Shell را اجرا می‌کنید، یک صفحه میانی برای توضیح آن به شما نمایش داده می‌شود. اگر با یک صفحه میانی مواجه شدید، روی ادامه کلیک کنید.

d95252b003979716.png

آماده‌سازی و اتصال به Cloud Shell فقط چند لحظه طول می‌کشد.

7833d5e1c5d18f54.png

این ماشین مجازی مجهز به تمام ابزارهای توسعه مورد نیاز است. این ماشین یک دایرکتوری خانگی پایدار ۵ گیگابایتی ارائه می‌دهد و در فضای ابری گوگل اجرا می‌شود که عملکرد شبکه و احراز هویت را تا حد زیادی افزایش می‌دهد. بخش عمده‌ای از کار شما در این آزمایشگاه کد، اگر نگوییم همه، را می‌توان با یک مرورگر انجام داد.

پس از اتصال به 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].

۳. فعال کردن رابط برنامه‌نویسی کاربردی بینایی (Vision API)

قبل از اینکه بتوانید از Vision API استفاده کنید، باید آن را فعال کنید. با استفاده از Cloud Shell، می‌توانید API را با استفاده از دستور زیر فعال کنید:

gcloud services enable vision.googleapis.com

۴. کتابخانه کلاینت 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/

و بسته‌ی 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 هستید!

۵. تشخیص برچسب را انجام دهید

یکی از ویژگی‌های اساسی Vision API شناسایی اشیاء یا موجودیت‌ها در یک تصویر است که به عنوان حاشیه‌نویسی برچسب شناخته می‌شود. تشخیص برچسب، اشیاء عمومی، مکان‌ها، فعالیت‌ها، گونه‌های جانوری، محصولات و موارد دیگر را شناسایی می‌کند. Vision API یک تصویر ورودی را دریافت می‌کند و محتمل‌ترین برچسب‌هایی را که برای آن تصویر اعمال می‌شود، برمی‌گرداند. این 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%)

خلاصه

در این مرحله، شما توانستید تشخیص برچسب را روی تصویری از یک صحنه خیابانی در چین انجام دهید و محتمل‌ترین برچسب‌های مرتبط با آن تصویر را نمایش دهید. درباره تشخیص برچسب بیشتر بخوانید.

۶. تشخیص متن را انجام دهید

تشخیص متن 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

خلاصه

در این مرحله، شما توانستید تشخیص متن را روی تصویر یک گذرگاه سمور آبی انجام دهید و متن تشخیص داده شده از تصویر را چاپ کنید. درباره تشخیص متن بیشتر بخوانید.

۷. تشخیص نقاط برجسته را انجام دهید

قابلیت تشخیص عوارض زمینی (Landmark Detection) در رابط برنامه‌نویسی کاربردی ویژن (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

خلاصه

در این مرحله، شما توانستید تشخیص نقاط برجسته را روی تصویر برج ایفل انجام دهید. درباره تشخیص نقاط برجسته بیشتر بخوانید.

۸. تشخیص چهره احساسی را انجام دهید

تشخیص چهره، چندین چهره را در یک تصویر به همراه ویژگی‌های کلیدی چهره مرتبط مانند حالت عاطفی یا پوشیدن کلاه تشخیص می‌دهد.

در این مثال، شما احتمال حالت عاطفی را از چهار احتمال عاطفی مختلف از جمله شادی، خشم، غم و تعجب تشخیص خواهید داد.

به فایل 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

خلاصه

در این مرحله، شما توانستید تشخیص چهره احساسی را انجام دهید. درباره تشخیص چهره بیشتر بخوانید.

۹. تبریک می‌گویم!

شما یاد گرفتید که چگونه از Vision API با استفاده از C# برای انجام تشخیص‌های مختلف روی تصاویر استفاده کنید!

تمیز کردن

برای جلوگیری از تحمیل هزینه به حساب پلتفرم گوگل کلود خود برای منابع استفاده شده در این راهنمای سریع:

  • به کنسول پلتفرم ابری بروید.
  • پروژه‌ای را که می‌خواهید خاموش کنید انتخاب کنید، سپس روی «حذف» در بالا کلیک کنید: این کار پروژه را برای حذف زمان‌بندی می‌کند.

اطلاعات بیشتر

مجوز

این اثر تحت مجوز عمومی Creative Commons Attribution 2.0 منتشر شده است.