Bir kişilik grubuna yüz ekleme
Bu kılavuzda, bir PersonGroup nesnesine çok sayıda kişi ve yüz ekleme gösterilmektedir. Aynı strateji LargePersonGroup, çok yönlü liste ve Largecelist nesneleri için de geçerlidir. Bu örnek, Azure bilişsel hizmetler 'In .NET istemci kitaplığı kullanılarak C# dilinde yazılmıştır.
1. Adım: Başlatma
Aşağıdaki kod birkaç değişken bildirir ve yüz ekleme isteklerini zamanlamak için bir yardımcı işlevi uygular:
PersonCount, toplam kişi sayısıdır.CallLimitPerSecond, abonelik katmanına göre saniyedeki maksimum çağrı sayısıdır._timeStampQueue, istek zaman damgalarını kaydetmek için kullanılan bir Kuyruktur.await WaitCallLimitPerSecondAsync()sonraki isteği göndermek için geçerli olana kadar bekler.
const int PersonCount = 10000;
const int CallLimitPerSecond = 10;
static Queue<DateTime> _timeStampQueue = new Queue<DateTime>(CallLimitPerSecond);
static async Task WaitCallLimitPerSecondAsync()
{
Monitor.Enter(_timeStampQueue);
try
{
if (_timeStampQueue.Count >= CallLimitPerSecond)
{
TimeSpan timeInterval = DateTime.UtcNow - _timeStampQueue.Peek();
if (timeInterval < TimeSpan.FromSeconds(1))
{
await Task.Delay(TimeSpan.FromSeconds(1) - timeInterval);
}
_timeStampQueue.Dequeue();
}
_timeStampQueue.Enqueue(DateTime.UtcNow);
}
finally
{
Monitor.Exit(_timeStampQueue);
}
}
2. Adım: API çağrısını yetkilendirme
Bir istemci kitaplığı kullandığınızda, abonelik anahtarınızı Faceclient sınıfının oluşturucusuna geçirmeniz gerekir. Örnek:
private readonly IFaceClient faceClient = new FaceClient(
new ApiKeyServiceClientCredentials("<SubscriptionKey>"),
new System.Net.Http.DelegatingHandler[] { });
Abonelik anahtarını almak için Azure portal Azure Marketi 'ne gidin. Daha fazla bilgi için bkz. abonelikler.
3. Adım: PersonGroup oluşturma
Kişileri kaydetmek için "MyPersonGroup" adlı bir PersonGroup oluşturulur.
Genel doğrulama sağlamak için istek süresi, _timeStampQueue hedefinde kuyruğa alınır.
const string personGroupId = "mypersongroupid";
const string personGroupName = "MyPersonGroup";
_timeStampQueue.Enqueue(DateTime.UtcNow);
await faceClient.LargePersonGroup.CreateAsync(personGroupId, personGroupName);
4. Adım: PersonGroup için kişileri oluşturma
Kişiler eşzamanlı olarak oluşturulur ve await WaitCallLimitPerSecondAsync() çağrı limitini aşmamak için de geçerlidir.
Person[] persons = new Person[PersonCount];
Parallel.For(0, PersonCount, async i =>
{
await WaitCallLimitPerSecondAsync();
string personName = $"PersonName#{i}";
persons[i] = await faceClient.PersonGroupPerson.CreateAsync(personGroupId, personName);
});
5. Adım: Kişilere yüz ekleme
Farklı kişilere eklenen yüzler eşzamanlı olarak işlenir. Belirli bir kişiye eklenen yüzler sırayla işlenir.
Yeniden, await WaitCallLimitPerSecondAsync() istek sıklığının sınırlama kapsamında olduğundan emin olmak için çağrılır.
Parallel.For(0, PersonCount, async i =>
{
Guid personId = persons[i].PersonId;
string personImageDir = @"/path/to/person/i/images";
foreach (string imagePath in Directory.GetFiles(personImageDir, "*.jpg"))
{
await WaitCallLimitPerSecondAsync();
using (Stream stream = File.OpenRead(imagePath))
{
await faceClient.PersonGroupPerson.AddFaceFromStreamAsync(personGroupId, personId, stream);
}
}
});
Özet
Bu kılavuzda, çok sayıda kişi ve yüz içeren bir PersonGroup oluşturma işlemini öğrendiniz. Bazı anımsatıcılar:
- Bu strateji Ayrıca çok yönlü listeler ve LargePersonGroups için de geçerlidir.
- Farklı çok yönlü listelere veya LargePersonGroups içindeki kişilere yüz ekleme veya silme, eşzamanlı olarak işlenir.
- Bir LargePersonGroup içindeki belirli bir çok yönlü liste veya kişiye yüz ekleme veya silme işlemi sırayla yapılır.
- Kolaylık olması için, bu kılavuzda olası bir özel durum nasıl ele alınacağını göz ardı edilir. Daha fazla sağlamlık geliştirmek istiyorsanız, doğru yeniden deneme ilkesini uygulayın.
Aşağıdaki özellikler açıklanmıştı ve gösterilmiştir:
- Persongroup-Create API ' i kullanarak kişilik grupları oluşturun.
- Kişiler -oluşturma API 'Sini kullanarak kişi oluşturun.
- Persongroup kişi-yüz tanıma API 'sini kullanarak kişilere yüz ekleyin.
Sonraki adımlar
Bu kılavuzda, bir kişilik grubuna yüz verileri eklemeyi öğrendiniz. Daha sonra, yüz verileriyle daha fazla bilgi için, gelişmiş veri yapısı Persondizin 'i nasıl kullanacağınızı öğrenin.