Yüz Algılayıcısı ön ayarıyla yüzleri bulma ve redact (bulanıklaştırma)
v2 Media Services mı arayabilirsiniz?
Azure Media Services v3 API'si, bulutta ölçeklenebilir yüz algılama ve redaction (bulanıklık) sunan bir Face Detector ön ayarı içerir. Yüz değiştirme, seçilen kişilerin yüzlerini bulanıklaştırma amacıyla videolarınızı değiştirmenize olanak sağlar. Kamu güvenliği ve haber medyası senaryolarında yüz redaction hizmetini kullanmak istiyor olabilirsiniz. Birden çok yüz içeren birkaç dakikalık çekim el ile işlem yapmak saatler sürebilir, ancak bu önceden ayarlanmış şekilde yüz yeniden düzenleme işlemi yalnızca birkaç basit adım gerektirir.
Bu makalede Yüz Algılayıcısı Ön Ayarı hakkında ayrıntılı bilgiler ve .NET için Azure Media Services SDK ile nasıl kullanabileceğiniz açıklanmıştır.
Uyumluluk, gizlilik ve güvenlik
Önemli bir anımsatıcı olarak, Azure Media Services'de analiz kullanımınıza uygun Azure Media Services. Azure Media Services veya başka bir Azure hizmetini başkalarının haklarını ihlal eden bir şekilde kullanmamanız gerekir. İşleme ve depolama için biyometrik veriler dahil olmak üzere herhangi bir videoyu Azure Media Services hizmetine yüklemeden önce, videonun kişilerinden gelen tüm uygun onaylar da dahil olmak üzere tüm uygun haklara sahipsiniz. Azure Bilişsel Hizmetler Koşulları'Azure Media Services uyumluluk, gizlilik ve güvenlik hakkında bilgi edinmek için. Microsoft'un gizlilik yükümlülükleri ve verilerinizi işlemesi için Microsoft'un Gizlilik Bildirimi,Çevrimiçi Hizmet Şartları (OST) ve Veri İşleme Ekini ("DPA") gözden geçirebilirsiniz. Veri saklama, silme/yok etme gibi daha fazla gizlilik bilgisi OST'de ve burada mevcuttur. Bu Azure Media Services Bilişsel Hizmetler Koşulları, OST, DPA ve Gizlilik Bildirimine bağlı olduğunu kabul etmiş oluruz
Yüz redaction modları
Yüz redaction, videonun her çerçevesindeki yüzleri algılayan ve yüz nesnesini hem ileri hem de geriye doğru izleerek çalışır, böylece aynı kişi diğer açılardan da bulanıklaştırabilirsiniz. Otomatik redaction işlemi karmaşıktır ve her zaman her yüzü %100 garantiyle bulanıklaştırmaz. Bu nedenle ön ayar, son silme geçişi için dosya gönderilmeden önce bir düzenleme aşamasında bulanıklık kalitesini ve doğruluğunu artırmak için iki geçişli bir mod kullanılabilir.
Tam otomatik Birleştirilmiş moda ek olarak, iki geçişli iş akışı yüz kimliklerinin listesi aracılığıyla bulanıklaştırmak istediğiniz yüzleri (veya bulanıklaştırmamanızı) seçmenize olanak sağlar. Çerçeve başına rastgele ayarlamalar yapmak için, ön ayar ikinci geçişe giriş olarak JSON biçiminde bir meta veri dosyası kullanır. Bu iş akışı Analiz ve Redact modlarına ayrılır.
İki modu tek bir işte iki görevi de çalıştıran tek bir geçişte kolayca birleştirebilirsiniz; Bu mod Birleşik olarak çağrılır. Bu makalede örnek kod, örnek kaynak dosyada basitleştirilmiş tek geçişli Birleşik modun nasıl kullanıla birleştirilmiş modunun nasıl olduğunu gösterir.
Birleşik mod
Bu işlem, JSON dosyasının el ile düzenlenmesi gerekmeden tek geçişte yeniden işlem yapılan bir MP4 video dosyası üretir. İş için varlık klasöründeki çıkış, seçilen .mp4 bulanık yüzler içeren tek bir dosya olacak. Redaction için en iyi sonuçları elde etmek üzere SourceResolution olarak ayarlanmış çözümleme özelliğini kullanın.
| Aşama | Dosya Adı | Notlar |
|---|---|---|
| Giriş varlığı | "ignite-sample.mp4" | WMV, MOV veya MP4 biçiminde video |
| Önceden ayarlanmış yapılandırma | Yüz Algılayıcısı yapılandırması | mode: FaceRedactorMode.Combined,type:Type.Med, resolution: AnalysisResolution.SourceResolution |
| Çıkış varlığı | "ignite-redacted.mp4 | Yüzlere bulanıklaştırma etkisi uygulanmış video |
Analiz modu
İki geçişli iş akışının Analiz geçişi bir video girişi alır ve algılanan her yüzün yüz konumlarının, Yüz Kimliğinin ve jpg görüntülerinin listesinin bulunduğu bir JSON dosyası üretir. Analiz geçişinin sonraki çalıştırmaları için yüz kimliklerinin aynı olması garanti edilemez.
| Aşama | Dosya Adı | Notlar |
|---|---|---|
| Giriş varlığı | "ignite-sample.mp4" | WMV, MPV veya MP4 biçiminde video |
| Önceden ayarlanmış yapılandırma | Yüz Algılayıcısı yapılandırması | mode: FaceRedactorMode.Analyze, resolution: AnalysisResolution.SourceResolution |
| Çıkış varlığı | ignite-sample_annotations.json | Yüz konumlarının JSON biçiminde ek açıklama verileri. Analiz geçişinin sonraki çalıştırmaları için Face Id kimliklerinin aynı olması garanti edilemez. Bu, kullanıcı tarafından bulanık sınırlayıcı kutuları değiştirmek için düzenlenebilir. Aşağıdaki örneğine bakın. |
| Çıkış varlığı | foo_thumb%06d.jpg [foo_thumb000001.jpg, foo_thumb000002.jpg] | Algılanan her yüzün kırpılmış jpg'i; burada sayı yüzün labelId'lerini gösterir |
Çıkış örneği
{
"version": 1,
"timescale": 24000,
"offset": 0,
"framerate": 23.976,
"width": 1280,
"height": 720,
"fragments": [
{
"start": 0,
"duration": 48048,
"interval": 1001,
"events": [
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[
{
"index": 13,
"id": 1138,
"x": 0.29537,
"y": -0.18987,
"width": 0.36239,
"height": 0.80335
},
{
"index": 13,
"id": 2028,
"x": 0.60427,
"y": 0.16098,
"width": 0.26958,
"height": 0.57943
}
],
... truncated
Redact (bulanıklık) modu
İş akışının ikinci geçişi, tek bir varlıkta birleştirilmiş olması gereken daha fazla sayıda girişi alır.
Buna, detaylandırmanız gereken kimliklerin listesi, özgün video ve JSON ek açıklamaları dahildir. Bu mod, giriş videosunda bulanıklık uygulamak için ek açıklamaları kullanır.
Analiz geçişinin çıkışı özgün videoyu içermez. Videonun, Redact modu görevi için giriş varlıbine yük olmalı ve birincil dosya olarak seçilmelidir.
| Aşama | Dosya Adı | Notlar |
|---|---|---|
| Giriş varlığı | "ignite-sample.mp4" | WMV, MPV veya MP4 biçiminde video. 1. adımla aynı video. |
| Giriş varlığı | "ignite-sample_annotations.json" | birinci aşamadaki ek açıklamalar meta veri dosyası, yüzleri bulanık olarak değiştirmek isterseniz isteğe bağlı değişikliklerle birlikte. Bu, dış uygulama, kod veya metin düzenleyicisinde düzenlenemez. |
| Giriş varlığı | "ignite-sample_IDList.txt" (İsteğe bağlı) | İsteğe bağlı olarak, yüz kimliklerinin redact için yeni satırla ayrılmış listesi. Boş bırakılırsa, kaynakta yer alan tüm yüzlerde bulanıklık uygulanır. Listeyi kullanarak belirli yüzleri bulanıklaştırmayı seçerek seçebilirsiniz. |
| Yüz Algılayıcısı ön ayarı | Önceden ayarlanmış yapılandırma | mode: FaceRedactorMode.Redact,type:Type.Med |
| Çıkış varlığı | "ignite-sample-redacted.mp4" | Ek açıklamalara göre bulanıklık uygulanmış video |
Örnek çıkış
Bu, tek bir kimliğin seçili olduğu bir IDList'in çıktısıdır. Analiz geçişinin sonraki çalıştırmaları için yüz kimliklerinin aynı olması garanti edilemez.
Örnek foo_IDList.txt
1
2
3
Bulanıklık türleri
Birleşik veya Redact modunda, JSON giriş yapılandırması aracılığıyla seçebilirsiniz beş farklı mod vardır: Düşük, Med, Yüksek, Box ve Siyah. Varsayılan olarak Med kullanılır.
Aşağıda, bulanıklık türlerinin örneklerini bulabilirsiniz.
Düşük

Med

Yüksek

Box

Siyahi

Çıkış JSON dosyasının öğeleri
Redaction MP, bir video çerçevesinde en fazla 64 insan yüzü algılayan yüksek duyarlıklı yüz konumu algılama ve izleme özelliği sağlar. Ön yüzler en iyi sonuçları sağlarken, yan yüzler ve küçük yüzler (24x24 piksele eşit veya 24x24 pikselden küçük) zor olabilir.
İş, algılanan ve izlenen yüzler hakkında meta veriler içeren bir JSON çıkış dosyası oluşturur. Meta veriler, yüzlerin konumunu gösteren koordinatları ve bu kişinin izlenmesini belirten bir yüz KIMLIK numarası içerir. Yüz KIMLIĞI numaraları, en alt yüz kayıp veya çerçevede örtüşdüğünde, bazı kişilerin birden çok kimliğe atanabileceği durumlar altında sıfırlanır.
JSON çıktısı aşağıdaki öğeleri içerir:
Kök JSON öğeleri
| Öğe | Açıklama |
|---|---|
| sürüm | Bu, video API 'sinin sürümünü ifade eder. |
| zaman | Videonun saniye başına "ticks" değeri. |
| uzaklık | Bu, zaman damgaları için zaman kaymadır. Video API 'Lerinin 1,0 sürümünde bu her zaman 0 olur. Daha sonra destekduğumuz senaryolarda bu değer değişebilir. |
| Genişlik, daha fazla | Çıkış video çerçevesinin piksel cinsinden genişliği ve uzunluğu. |
| kare hızı değerini | Videodaki saniye başına kare hızı. |
| Eşleştir | Meta veriler parçalar adlı farklı kesimlere bölünmüştür. Her parçada başlangıç, süre, aralık sayısı ve olaylar vardır. |
Parçacık JSON öğeleri
| Öğe | Açıklama |
|---|---|
| start | "Ticks" içindeki ilk olayın başlangıç saati. |
| süre | Parçanın uzunluğu, "ticks." |
| dizin | (Yalnızca Azure Media Redactor için geçerlidir) geçerli olayın çerçeve dizinini tanımlar. |
| interval | "Ticks" içinde, parça içindeki her bir olay girişinin aralığı. |
| etkinlikler | Her olay, algılanan ve bu süre içinde izlenen yüzeyleri içerir. Bu, bir dizi olaydır. Dış dizi bir zaman aralığını temsil eder. İç dizi belirtilen noktada gerçekleşen 0 veya daha fazla olaydan oluşur. Boş köşeli ayraç [] hiçbir yüz algılanmadığı anlamına gelir. |
| kimlik | İzlenmekte olan yüzün KIMLIĞI. Bir yüz algılanmadan bu numara istenmeden değişebilir. Belirli bir bireyin, genel videonun tamamında aynı KIMLIĞE sahip olmalıdır, ancak algılama algoritmasındaki sınırlamalar (occlusiyon vb.) nedeniyle bu garanti edilemez. |
| x, y | 0,0 ile 1,0 arasında normalleştirilmiş ölçekte yüz sınırlayıcı kutusunun sol üst X ve Y koordinatları. -X ve Y koordinatları yatay olarak her zaman görelidir. bu nedenle, dikey bir videonuz (veya iOS söz konusu olduğunda) varsa koordinatları uygun şekilde yeniden ayarlamanız gerekir. |
| Genişlik, yükseklik | 0,0 ile 1,0 arasında normalleştirilmiş ölçekte yüz sınırlayıcı kutunun genişliği ve yüksekliği. |
| Facesalgılandı | Bu, JSON sonuçlarının sonunda bulunur ve bu, video sırasında algoritmanın algıladığı yüzlerin sayısını özetler. Bir yüz algılanmadığı durumlarda kimlikler yanlışlıkla sıfırlanabileceğinden (ör. yüz ekran, uzaklaşma), bu numara her zaman videodaki gerçek sayıda yüzdeke eşit olamaz. |
.NET örnek kodu
Aşağıdaki program, Birleşik tek geçişli redaction modunun nasıl kullanıla birleştirilmiş olduğunu gösterir:
- Bir varlık oluşturun ve var olan varla bir medya dosyası yükleyin.
- Modu vetypeType ayarlarını kullanan Face Detector ön ayarını yapılandırma.
- Yüz Algılayıcısı ön ayarını kullanarak yeni bir Dönüşüm oluşturma
- Yeniden işlem yapılan çıktı video dosyasını indirin.
Örneği indirme ve yapılandırma
Aşağıdaki komutu kullanarak, .NET örneğini içeren bir GitHub havuzunu makinenize kopyalayın:
git clone https://github.com/Azure-Samples/media-services-v3-dotnet.git
Örnek, FaceRedactor klasöründe bulunur. İndirdiğiniz projede appsettings.json'ı açın. değerleri, API'lere erişirken sahip olduğunuz kimlik bilgileriyle değiştirin.
İsteğe bağlı olarak, deponun kökünde sample.env dosyasını kopyalayıp burada ayrıntıları doldurabilirsiniz ve bu dosyayı deponun tüm örnek projelerinde kullanılası için .env (Öndeki noktayı not edin!) olarak yeniden adlandırabilirsiniz. Bu, her örnekte doldurulmuş bir appsettings.json dosyası olması gereklerini ortadan kaldırmanın yanı sıra tüm ayarları git hub'ı kopyalanmış depolarına denetlemenizi de sağlar.
Örnekler
Bu kod, FaceDetectorPreset'in Birleştirilmiş mod ayarı için nasıl ayarlandırılı olduğunu gösterir.
// Create a Face Detector preset and enable redaction/blurring of the faces.
Preset faceRedactionPreset = new FaceDetectorPreset(
resolution: AnalysisResolution.SourceResolution,
mode: FaceRedactorMode.Combined, // Use the Combined mode here. This is the single pass mode where detection and blurring happens as one pass - if you want to analyze and get JSON results first before blur, use Analyze mode, followed by Redact mode.
blurType: BlurType.Med // Sets the amount of blur. For debugging purposes you can set this to Box to just see the outlines of the faces.
);
// Ensure that you have the desired encoding Transform. This is really a one time setup operation.
// Once it is created, we won't delete it.
Transform videoAnalyzerTransform = await GetOrCreateTransformAsync(client, config.ResourceGroup, config.AccountName, FaceRedactorTransformName, faceRedactionPreset);
Bu kod örneği, oluşturma sırasında ön ayarın bir Transform nesnesine nasıl geçir olduğunu gösterir. Dönüştürmeyi oluşturdukta işler doğrudan bu dönüşüme gönderebilirsiniz.
// Start by defining the desired outputs.
TransformOutput[] outputs = new TransformOutput[]
{
new TransformOutput(preset),
};
// Create the Transform with the output defined above
// Does a Transform already exist with the desired name? This method will just overwrite (update) the Transform if it exists already.
// In production code, you may want to be cautious and try to avoid updates. It really depends on your scenario.
Transform transform = await client.Transforms.CreateOrUpdateAsync(resourceGroupName, accountName, transformName, outputs);
return transform;
Sonraki adımlar
Media Services v3 (en son)
Azure Media Services en son sürümüne göz atın!
Media Services v2 (eski)
Geribildirim gönderme
Geri bildirim sağlamak ve Azure Media Services’ı geliştirme hakkında önerilerde bulunmak için User Voice forumunu kullanın. Doğrudan aşağıdaki kategorilerden birine de gidebilirsiniz: