Gezichten zoeken en redacteren (wazig maken) met de vooraf ingestelde Face Detector

media services logo v3


Zoekt u Media Services v2-documentatie?

Azure Media Services v3-API bevat een face detector-voorinstelling die schaalbare gezichtsdetectie en -redaction (wazigheid) in de cloud biedt. Met gezichtsherkenning kunt u uw video wijzigen om gezichten van geselecteerde personen te vervagen. Mogelijk wilt u de face-redaction-service gebruiken in scenario's voor openbare veiligheid en nieuwsmedia. Het kan uren duren voordat een paar minuten beeldmateriaal met meerdere gezichten handmatig wordt verwerkt, maar met deze voorinstelling vereist het gezichtsredactionproces slechts enkele eenvoudige stappen.

In dit artikel wordt informatie over de voorinstelling van Face Detector beschreven en wordt beschreven hoe u deze kunt gebruiken met Azure Media Services SDK voor .NET.

Naleving, privacy en beveiliging

Een belangrijke herinnering is dat u moet voldoen aan alle toepasselijke wetgeving voor het gebruik van analyses in Azure Media Services. U mag geen Azure Media Services of andere Azure-service gebruiken op een manier die de rechten van anderen schendt. Voordat u video's, inclusief biometrische gegevens, uploadt naar de Azure Media Services-service voor verwerking en opslag, moet u over alle juiste rechten, inclusief alle juiste toestemmingen, van de personen in de video hebben. Voor meer informatie over naleving, privacy en beveiliging in Azure Media Services, kunt u de Azure Cognitive Services gebruiken. Voor de privacyverplichtingen van Microsoft en de verwerking van uw gegevens, bekijkt u de Privacyverklaringvan Microsoft, de Voorwaarden voor Online Diensten (OST) en de aanvulling op gegevensverwerking (DPA). Meer privacy-informatie, waaronder over gegevensretentie, verwijdering/vernietigen, is beschikbaar in de OST en hier. Als u Azure Media Services, gaat u akkoord met de voorwaarden Cognitive Services, de OST, DPA en de privacyverklaring

Gezichtsherkenningsmodi

Gezichtsherkenning werkt door gezichten in elk videoframe te detecteren en het gezichtsobject zowel vooruit als achterwaarts in de tijd bij te houden, zodat dezelfde persoon ook vanuit andere hoeken kan worden vervaagd. Het geautomatiseerde redaction-proces is complex en vervaagt niet altijd elk gezicht dat 100% gegarandeerd is. Daarom kan de voorinstelling worden gebruikt in een modus met twee slagen om de kwaliteit en nauwkeurigheid van de wazigheid te verbeteren via een bewerkingsfase voordat het bestand wordt verzenden voor de definitieve wazigheidspass.

Naast een volledig automatische gecombineerde modus kunt u met de werkstroom met twee slagen de gezichten kiezen die u wilt vervagen (of niet wazig maken) via een lijst met gezichts-ID's. Om willekeurige aanpassingen per frame te maken, gebruikt de voorinstelling een metagegevensbestand in JSON-indeling als invoer voor de tweede doorsturen. Deze werkstroom is gesplitst in de modi Analyseren en Redact.

U kunt ook eenvoudig de twee modi combineren in één keer dat beide taken in één taak worden uitgevoerd; Deze modus heet Gecombineerd. In dit artikel laat de voorbeeldcode zien hoe u de vereenvoudigde gecombineerde modus voor één keer doorgeven gebruikt in een voorbeeldbronbestand.

Gecombineerde modus

Hierdoor wordt in één keer een geseed MP4-videobestand geproduceerd zonder dat het JSON-bestand handmatig moet worden bewerkt. De uitvoer in de assetmap voor de taak is één .mp4 bestand dat wazige gezichten bevat met behulp van het geselecteerde wazige effect. Gebruik de eigenschap resolution die is ingesteld op SourceResolution om de beste resultaten voor de oplossing te krijgen.

Fase Bestandsnaam Notities
Invoeractivum 'ignite-sample.mp4' Video in WMV-, MOV- of MP4-indeling
Vooraf ingestelde configuratie Configuratie van Face Detector mode: FaceRedactorMode.Combined, blurType: BlurType.Med, resolution: AnalysisResolution.SourceResolution
Uitvoeractivum "ignite-redacted.mp4 Video met wazig effect toegepast op gezichten

Analysemodus

De werkstroom Analyseren van de werkstroom met twee passen gebruikt een video-invoer en produceert een JSON-bestand met een lijst met de gezichtslocaties, Face ID's en JPG-afbeeldingen van elk gedetecteerd gezicht. Het wordt aangeraden dat de gezichts-id's niet gegarandeerd identiek zijn bij volgende runs van de analysepass.

Fase Bestandsnaam Notities
Invoeractivum 'ignite-sample.mp4' Video in WMV-, MPV- of MP4-indeling
Vooraf ingestelde configuratie Configuratie van Face Detector modus: FaceRedactorMode.Analyze, resolution: AnalysisResolution.SourceResolution
Uitvoeractivum ignite-sample_annotations.json Aantekeningengegevens van gezichtslocaties in JSON-indeling. Face ID's zijn niet gegarandeerd identiek bij volgende runs van de analysepass. Dit kan door de gebruiker worden bewerkt om de wazige begrenzendvakken te wijzigen. Zie het voorbeeld hieronder.
Uitvoeractivum foo_thumb%06d.jpg [foo_thumb000001.jpg, foo_thumb000002.jpg] Een bijgesneden jpg van elk gedetecteerd gezicht, waarbij het getal de labelId van het gezicht aangeeft

Voorbeeld van uitvoer

{
  "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

Modus Redact (wazig maken)

De tweede pass van de werkstroom neemt een groter aantal invoerwaarden die moeten worden gecombineerd tot één asset.

Dit omvat een lijst met te vervagen ID's, de oorspronkelijke video en de JSON van aantekeningen. In deze modus worden de aantekeningen gebruikt om wazige tekst toe te passen op de invoervideo.

De uitvoer van de Analyze pass bevat niet de oorspronkelijke video. De video moet worden geüpload naar de invoeractiva voor de redactmodustaak en worden geselecteerd als het primaire bestand.

Fase Bestandsnaam Notities
Invoeractivum 'ignite-sample.mp4' Video in WMV-, MPV- of MP4-indeling. Dezelfde video als in stap 1.
Invoeractivum ignite-sample_annotations.json metagegevensbestand van aantekeningen uit fase 1, met optionele wijzigingen als u de gezichten wazig wilt wijzigen. Dit moet worden bewerkt in een externe toepassing, code of teksteditor.
Invoeractivum 'ignite-sample_IDList.txt' (optioneel) Optionele, door een nieuwe regel gescheiden lijst met gezichts-ID's die moeten worden verzonderd. Als u dit leeg laat, worden alle gezichten in de bron wazig toegepast. U kunt de lijst gebruiken om selectief te kiezen om specifieke gezichten niet te vervagen.
Face Detector vooraf instellen Vooraf ingestelde configuratie modus: FaceRedactorMode.Redact, blurType: BlurType.Med
Uitvoeractivum 'ignite-sample-redacted.mp4' Video met wazigheid toegepast op basis van aantekeningen

Voorbeelduitvoer

Dit is de uitvoer van een IDList met één id geselecteerd. De gezichts-id's zijn niet gegarandeerd identiek bij volgende runs van de analysepass.

Voorbeeld van foo_IDList.txt

1
2
3

Wazige typen

In de modus Gecombineerd of Redact kunt u kiezen uit vijf verschillende wazige modi via de JSON-invoerconfiguratie: Laag, Med, Hoog, Box en Zwart. Med wordt standaard gebruikt.

Hieronder vindt u voorbeelden van de wazige typen.

Beperkt

Voorbeeld van een wazige instelling met lage resolutie.

Med

Voorbeeld van wazige instelling met gemiddelde resolutie.

Hoog

Voorbeeld van wazige instelling met hoge resolutie.

Box

Box-modus voor gebruik bij het debuggen van uw uitvoer.

Zwart

De modus Zwarte doos dekt alle gezichten met zwarte vakken.

Elementen van het JSON-uitvoerbestand

Redaction MP biedt detectie en tracering van gezichtslocatie met hoge precisie, waarmee maximaal 64 menselijke gezichten in een videoframe kunnen worden gedetecteerd. Frontale gezichten bieden de beste resultaten, terwijl zijgezichten en kleine gezichten (kleiner dan of gelijk aan 24 x 24 pixels) lastig zijn.

De taak produceert een JSON-uitvoer bestand dat meta gegevens bevat over gedetecteerde en getraceerde gezichten. De meta gegevens bevatten coördinaten die de locatie van de gezichten aangeven, evenals een face ID-nummer dat het bijhouden van die persoon aangeeft. Gezichts-ID-nummers zijn gevoelig voor het opnieuw instellen van de voor kant wanneer het frontale gezicht verloren is gegaan of wordt overlapt in het kader, wat betekent dat sommige personen meerdere Id's krijgen toegewezen.

De JSON van de uitvoer bevat de volgende elementen:

Wortel-JSON-elementen

Element Beschrijving
versie Dit verwijst naar de versie van de video-API.
lijnen ' Ticks ' per seconde van de video.
offset Dit is de tijds verschuiving voor tijds tempels. In versie 1,0 van video-Api's is dit altijd 0. Deze waarde kan worden gewijzigd in toekomstige scenario's die worden ondersteund.
breedte, Hoogt De breedte en de hoogte van het video kader voor de uitvoer, in pixels.
snelheid Aantal frames per seconde video.
fragmenten De meta gegevens worden gesegmenteerd in verschillende segmenten die fragmenten worden genoemd. Elk fragment bevat een start, een duur, een intervalnummer en een of meer gebeurtenissen.

Fragmenten JSON-elementen

Element Beschrijving
starten De begin tijd van de eerste gebeurtenis in Ticks.
duur De lengte van het fragment, in Ticks.
index (Alleen van toepassing op Azure Media Redactor) Hiermee definieert u de kader-index van de huidige gebeurtenis.
interval Het interval van elke gebeurtenis vermelding in het fragment, in Ticks.
events Elke gebeurtenis bevat de gezichten die binnen die tijds duur zijn gedetecteerd en bijgehouden. Het is een matrix met gebeurtenissen. De buitenste matrix vertegenwoordigt een tijdsinterval. De binnenste matrix bestaat uit 0 of meer gebeurtenissen die hebben plaatsgevonden gedurende de interval. Een lege beugel [] betekent dat er geen gezichten zijn gedetecteerd.
id De ID van het gezicht dat wordt bijgehouden. Dit aantal kan per ongeluk worden gewijzigd als een gezicht niet wordt gedetecteerd. Een bepaalde persoon moet dezelfde ID hebben in de gehele video, maar dit kan niet worden gegarandeerd vanwege beperkingen in het detectie algoritme (bedekking, enzovoort).
x, y De linkerbovenhoek van de X-en Y-coördinaten van het begrenzingsvak van het gezicht in een genormaliseerde schaal van 0,0 tot 1,0.
-X-en Y-coördinaten zijn relatief ten opzichte van liggend, dus als u een staande video (of ondersteboven, in het geval van iOS) hebt, moet u de coördinaten dienovereenkomstig transponeren.
breedte, hoogte De breedte en hoogte van het begrenzingsvak van het gezicht in een genormaliseerde schaal van 0,0 tot 1,0.
facesDetected Aan het einde van de JSON-resultaten vindt u een samen vatting van het aantal gezichten dat de algoritme tijdens de video heeft gedetecteerd. Omdat de Id's per ongeluk opnieuw kunnen worden ingesteld als een gezicht niet wordt gedetecteerd (bijvoorbeeld omdat het gezicht niet meer wordt weer gegeven, ziet het scherm er uit), is dit aantal mogelijk niet altijd gelijk aan het werkelijke aantal gezichten in de video.

.NET-voorbeeldcode

In het volgende programma ziet u hoe u de gecombineerde redaction-modus met één wachtwoord gebruikt:

  • Maak een asset en upload een mediabestand naar de asset.
  • Configureer de voorinstelling Face Detector die gebruikmaakt van de modus- en blurType-instellingen.
  • Een nieuwe transformatie maken met behulp van de voorinstelling Face Detector
  • Download het videobestand met de redacted-uitvoer.

Het voorbeeld downloaden en configureren

Kloon met de volgende opdracht een GitHub-opslagplaats met het .NET-voorbeeld op de computer:

git clone https://github.com/Azure-Samples/media-services-v3-dotnet.git

Het voorbeeld bevindt zich in de map FaceRedactor. Open appsettings.json in het project dat u hebt gedownload. Vervang de waarden door de referenties die u hebt verkregen via toegang tot API's.

Desgewenst kunt u het bestand sample.env in de hoofdmap van de opslagplaats kopiëren en de details invullen en de naam van dat bestand wijzigen in .env (let op de stip aan de voorzijde), zodat het kan worden gebruikt voor alle voorbeeldprojecten in de opslagplaats. Dit elimineert de noodzaak van een gevuld appsettings.json-bestand in elk voorbeeld en beschermt u ook tegen het controleren van instellingen in uw eigen gekloonde Git Hub-opslagplaatsen.

Voorbeelden

Deze code laat zien hoe u de FaceDetectorPreset instelt voor een wazige modus gecombineerd.


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

In dit codevoorbeeld ziet u hoe de voorinstelling tijdens het maken wordt doorgegeven aan een Transform-object. Na het maken van de transformatie kunnen taken rechtstreeks naar de transformatie worden verzonden.


// 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;

Volgende stappen

Media Services v3 (recentste)

Bekijk de nieuwste versie van Azure Media Services.

Media Services v2 (verouderd)

Feedback geven

Geef via het forum User Voice uw feedback en suggesties om Azure Media Services te verbeteren. U kunt ook meteen naar een van de volgende categorieën gaan: