obyektin-askarlanmasi,-səkildə-izləmə-—.net-+-azure-|-merwan-chinta-tərəfindən-|-codenx-|-fevral,-2024-–-orta
Obyektin Aşkarlanması, Şəkildə İzləmə — .NET + Azure | Merwan Chinta tərəfindən | CodeNx | Fevral, 2024 – Orta

Obyektin Aşkarlanması, Şəkildə İzləmə — .NET + Azure | Merwan Chinta tərəfindən | CodeNx | Fevral, 2024 – Orta

Kompüter Görmə

Microsoft-un Koqnitiv Xidmətlərinin bir hissəsi olan Azure Computer Vision API şəkilləri emal etmək və təhlil etmək üçün mürəkkəb alqoritmlər təqdim edir. Bu yazıda biz şəkillərin içindəki obyektləri müəyyən edə və etiketləyə bilən ağıllı təsvir təsnifatı yaradacağıq. Bu, fotoşəkillərin kataloqlaşdırılmasından tutmuş inventar idarəetməsinin avtomatlaşdırılmasına qədər müxtəlif proqramlarda istifadə edilə bilər.

Şəkil təsnifatının əsas rol oynadığı bəzi domenlər və xüsusi istifadə halları bunlardır:

  • Pərakəndə (Məhsulun İdentifikasiyası): İnventar idarəetmə və ya özünü yoxlama sistemləri üçün rəflərdə məhsulların avtomatik müəyyən edilməsi.
  • Kənd təsərrüfatı (Məhsulun monitorinqi): Məhsulun sağlamlığının monitorinqi və xəstəlik və ya zərərvericilərin invaziyasının müəyyən edilməsi.
  • Avtomobil (Keyfiyyətə nəzarət): İstehsal zamanı avtomobilin hissələrində qüsurların və ya pozuntuların aşkar edilməsi.
  • İstehsal (Avtomatlaşdırılmış Çeşidləmə): Vizual xüsusiyyətlərə əsasən istehsal xətlərində əşyaların çeşidlənməsi.
  • Bank işi və maliyyə (Emalı yoxlayın): Çeklərdən məlumatı avtomatik oxumaq və emal etmək.

İlkin şərtlər

  • Microsoft Azure Hesabı: Azure hesabınızın olduğundan əmin olun. Əgər yoxsa, pulsuz hesab üçün qeydiyyatdan keçin burada.
  • Azure Kompüter Görmə Resursu: Açarınızı və son nöqtənizi əldə etmək üçün Azure portalınızda Computer Vision resursu yaradın.
  • İnkişaf mühiti: .NET inkişaf iş yükü ilə Visual Studio quraşdırıldığından əmin olun.
  • Tamaşaçı Səviyyəsi: Başlayanlardan Orta səviyyəli oxuculara.
Azure Abunəliyində Kompüter Görmə Resursunu quraşdırın — Şəkil mənbəyi: Müəllifdən

Bu ilkin şərtlər oxucuların texniki məzmunu rahat şəkildə izləmək, Azure-da xidməti qurmaq, C# kodunu yazmaq və anlamaq və tətbiqlərdə Şəkil təsnifatı funksiyasını uğurla həyata keçirmək üçün lazımi fona malik olmasını təmin etmək üçün nəzərdə tutulub.

Addım 1: Layihənizi qurun

  1. .NET 8-də yeni Konsol Tətbiqi yaradın, ImageClassifier Visual Studio-da.
  2. Lazımi paketləri quraşdırın. Solution Explorer> NuGet Paketlərini idarə et-də layihənizə sağ klikləyin. Bu paketləri quraşdırın:
  • Microsoft.Azure.CognitiveServices.Vision.ComputerVision
  • Microsoft.Extensions.Configuration
  • Microsoft.Extensions.Configuration.Json
  • System.Drawing.Common

Addım 2: Azure Computer Vision Service üçün autentifikasiya edin

  • Azure portalında Computer Vision resursunuzu yaratdığınız yerdən açarınızı və son nöqtənizi əldə edin.
Computer Vision Services üçün Azure portalından açarlar və son nöqtə bölməsi — Şəkil mənbəyi: Müəllifdən
  • əlavə et appsettings.json açarınız və son nöqtənizlə layihənizə fayl. ‘Çıxış Kataloquna Kopyala’ seçimini ‘Yenidirsə kopyala’ olaraq təyin etməklə faylın çıxış qovluğuna kopyalandığından əmin olun.
{
"ComputerVision": {
"Endpoint": "Your_Computer_Vision_Endpoint",
"SubscriptionKey": "Your_Computer_Vision_Subscription_Key"
}
}

Addım 3: Proqram Kodu

  • Son nöqtəniz və açarınızla müştərini işə salın. Bu kodu özünüzə əlavə edin Program.cs fayl.
using System.Drawing;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision;
using Microsoft.Extensions.Configuration;

namespace ImageClassifier
{
internal class Program
{
public static void Main()
{
IConfiguration config=new ConfigurationBuilder()
.AddJsonFile("appsettings.json", true, true)
.Build();

var computerVision=new ComputerVisionClient(new ApiKeyServiceClientCredentials(config["ComputerVision:SubscriptionKey"]))
{
Endpoint=config["ComputerVision:Endpoint"]
};

const string localImagePath=@"path to image to be detected.jpg";
AnalyzeLocalAsync(computerVision, localImagePath).Wait();

Console.WriteLine("Press ENTER to exit");
Console.ReadLine();
}

private static async Task AnalyzeLocalAsync(IComputerVisionClient computerVision, string imagePath)
{
if (!File.Exists(imagePath))
{
Console.WriteLine($"Unable to open or read localImagePath: {imagePath}");
return;
}

var imageBytes=await File.ReadAllBytesAsync(imagePath);

using var ms=new MemoryStream(imageBytes);
var detectObjectsResults=await computerVision.DetectObjectsInStreamAsync(ms);
Console.WriteLine("Objects in the local image:");
if (detectObjectsResults.Objects.Count==0)
{
Console.WriteLine("No objects detected.");
return;
}

// Create an Image from the byte array
using var image=Image.FromStream(new MemoryStream(imageBytes));

// use the image for drawing
using var graphics=Graphics.FromImage(image);

foreach (var objectInfo in detectObjectsResults.Objects)
{
Console.WriteLine(
$"'{objectInfo.ObjectProperty}' with confidence {objectInfo.Confidence * 100} at location {objectInfo.Rectangle.X}, {objectInfo.Rectangle.X + objectInfo.Rectangle.W}, {objectInfo.Rectangle.Y}, {objectInfo.Rectangle.Y + objectInfo.Rectangle.H}");

// Draw a box around the object
var rect=new Rectangle(objectInfo.Rectangle.X, objectInfo.Rectangle.Y, objectInfo.Rectangle.W,
objectInfo.Rectangle.H);
graphics.DrawRectangle(new Pen(Color.Red, 3), rect);

// Draw the object's name
using var font=new Font("Arial", 16);
using var brush=new SolidBrush(Color.Red);

graphics.DrawString(objectInfo.ObjectProperty, font, brush, objectInfo.Rectangle.X,
objectInfo.Rectangle.Y - 20);
}

// Save or display the image
var outputImagePath=Path.ChangeExtension(imagePath, "_labeled.jpg");
image.Save(outputImagePath);

Console.WriteLine($"Labeled image saved as {outputImagePath}");
}
}
}

  • Proqramın giriş nöqtəsi konfiqurasiyanı oxuyur, işə salır ComputerVisionClienttəhlil ediləcək şəkli müəyyənləşdirir və zəng edir AnalyzeLocalAsync təhlilə başlamaq üçün.
  • AnalyzeLocalAsync təsviri emal üçün yaddaşa oxuyur, bu, təsvirin işlənməsi zamanı fayl axınına girişlə bağlı problemlərin qarşısını almaq üçün edilir. Sonra şəkil məlumatlarını Azure-un Computer Vision API-yə göndərir və aşkar edilmiş obyektlərin siyahısını alır.
  • Tətbiq aşkar edilmiş hər bir obyekt üçün onun ətrafında qırmızı sərhəd qutusu çəkir və onu obyektin adı və etibarlılıq səviyyəsi ilə etiketləyir.
  • Tətbiq sonra annotasiyalarla dəyişdirilmiş şəkli yeni fayl kimi saxlayır.

Tətbiqinizi Çalışın

Tətbiqi şəklinizlə sınamaq üçün:

  • Şəklinizi məlum kataloqa yerləşdirin və yeniləyin localImagePath proqramda.
Aşkarlanacaq şəkil — Şəkil mənbəyi burada
  • Proqramı icra edin. O, təsviri emal edəcək, obyektləri aşkar edəcək və annotasiya edilmiş şəkil yaradacaq.
  • Aşkar edilmiş obyektlərin növlərinə və onların etibarlılıq ballarına baxın.
Aşkar edilmiş obyekt və onların inam balları — Şəkil mənbəyi: Müəllifdən
  • ilə eyni kataloqda saxlanılan yeni şəkli tapın _labeled orijinal fayl adına əlavə olunur, məsələn image_labeled.jpg. Bu şəkildə hər aşkar edilmiş obyekt üçün məhdudlaşdırıcı qutular və etiketlər olacaq. Microsoft + Açıq Mənbə
Azure Computer Vision ilə aşkar edilən və şərh edilən obyektlər — Şəkil mənbəyi: Müəllifdən

Ən yaxşı təcrübələr və mülahizələr

  • API dərəcəsi limitlərini və mümkün xidmət fasilələrini idarə etmək üçün etibarlı səhv idarəsini həyata keçirin.
  • Şəkilləri təhlil edərkən məxfilik və uyğunluq tələblərini nəzərə alın, xüsusən də onların müəyyən edilə bilən insan simaları varsa.
  • Tranzaksiyaların sayına görə ödəniş alan Azure Computer Vision API ilə əlaqəli xərclərdən xəbərdar olun. Keşləmədən istifadə edin və xərcləri idarə etmək üçün uyğun qiymət səviyyəsini seçin.

Bu proqram Azure Computer Vision API-nin tətbiqini nümayiş etdirir, onun şəkillərdəki obyektləri aşkar etmək və vizual olaraq şərh etmək üçün necə istifadə oluna biləcəyini nümayiş etdirir.

Azure-un süni intellekt imkanlarını inteqrasiya etməklə, tətbiqlər şəkil təhlili və obyekt aşkarlama gücündən istifadə edərək əhəmiyyətli dəyər əlavə edə bilər.

Qaynaq