3D-pose schatten voor het volgen van atleten met behulp van 2D-video's en Amazon SageMaker Studio

Bronknooppunt: 808260

Ter voorbereiding op de komende Olympische Spelen ontwikkelde Intel®, een Amerikaanse multinational en een van 's werelds grootste technologiebedrijven, een concept rond 3D Athlete Tracking (3DAT). 3DAT is een machine learning (ML)-oplossing om real-time digitale modellen van atleten in competitie te creëren om de betrokkenheid van fans tijdens uitzendingen te vergroten. Intel wilde deze technologie gebruiken voor het coachen en trainen van topsporters.

Klassieke computervisiemethoden voor het reconstrueren van 3D-houdingen zijn voor de meeste wetenschappers omslachtig gebleken, aangezien deze modellen meestal berusten op het inbedden van extra sensoren op een atleet en het ontbreken van 3D-labels en -modellen. Hoewel we met gewone mobiele telefoons naadloze mechanismen voor gegevensverzameling kunnen opzetten, is het ontwikkelen van 3D-modellen met behulp van 2D-videogegevens een uitdaging, gezien het gebrek aan diepte van informatie in 2D-video's. Het 3DAT-team van Intel werkte samen met de Amazon ML Solutions-lab (MLSL) om 3D-technieken voor het inschatten van menselijke poses op 2D-video's te ontwikkelen om een ​​lichtgewicht oplossing te creëren voor coaches om biomechanica en andere statistieken van de prestaties van hun atleten te extraheren.

Deze unieke samenwerking bracht de rijke geschiedenis van Intel op het gebied van innovatie samen met de expertise op het gebied van computervisie van Amazon ML Solution Lab om een ​​3D pijplijn voor het schatten van poses voor meerdere personen te ontwikkelen met behulp van 2D-video's van standaard mobiele telefoons als input, met Amazon SageMaker Studio notebooks (SM Studio) als ontwikkelomgeving.

Jonathan Lee, directeur van Intel Sports Performance, Olympic Technology Group, zegt: “Het MLSL-team heeft fantastisch werk geleverd door naar onze eisen te luisteren en een oplossing voor te stellen die aan de behoeften van onze klanten zou voldoen. Het team overtrof onze verwachtingen en ontwikkelde in slechts twee weken een pijplijn voor het schatten van 3D-poses met behulp van 2D-video's die met mobiele telefoons waren vastgelegd. Door onze ML-workload te standaardiseren op Amazon SageMaker, bereikten we een opmerkelijke gemiddelde nauwkeurigheid van 97% op onze modellen.”

Dit bericht bespreekt hoe we 3D pose-inschattingsmodellen hebben gebruikt en 3D-outputs hebben gegenereerd op 2D-videogegevens verzameld van Ashton Eaton, een tienkamper en tweevoudig Olympisch gouden medaillewinnaar uit de Verenigde Staten, met verschillende invalshoeken. Het presenteert ook twee computervisietechnieken om de video's die vanuit verschillende hoeken zijn vastgelegd, uit te lijnen, waardoor coaches een unieke set 3D-coördinaten tijdens de run kunnen gebruiken.

Uitdagingen

Technieken voor het inschatten van menselijke poses maken gebruik van computervisie en zijn bedoeld om een ​​grafisch skelet te bieden van een persoon die in een scène wordt gedetecteerd. Ze bevatten coördinaten van vooraf gedefinieerde sleutelpunten die overeenkomen met menselijke gewrichten, zoals de armen, nek en heupen. Deze coördinaten worden gebruikt om de oriëntatie van het lichaam vast te leggen voor verdere analyse, zoals pose-tracking, houdingsanalyse en daaropvolgende evaluatie. Recente ontwikkelingen op het gebied van computervisie en diep leren hebben wetenschappers in staat gesteld om pose-schatting in een 3D-ruimte te verkennen, waarbij de Z-as aanvullende inzichten biedt in vergelijking met 2D-pose-schatting. Deze aanvullende inzichten kunnen worden gebruikt voor uitgebreidere visualisatie en analyse. Het is echter een uitdaging om vanaf het begin een 3D-pose-schattingsmodel te bouwen, omdat hiervoor beeldgegevens en 3D-labels nodig zijn. Daarom gebruiken veel onderzoekers voorgetrainde 3D-pose-schattingsmodellen.

Pijplijn voor gegevensverwerking

We hebben een end-to-end pijplijn voor het schatten van poses in 3D ontworpen, geïllustreerd in het volgende diagram, met behulp van SM Studio, die verschillende componenten omvatte:

  • Amazon eenvoudige opslagservice (Amazon S3) bucket om videogegevens te hosten
  • Frame-extractiemodule om videogegevens om te zetten in statische afbeeldingen
  • Objectdetectiemodules om begrenzingskaders van personen in elk frame te detecteren
  • 2D-houdingsschatting voor toekomstige evaluatiedoeleinden
  • 3D-pose-schattingsmodule om 3D-coördinaten te genereren voor elke persoon in elk frame
  • Evaluatie- en visualisatiemodules

SM Studio biedt een breed scala aan functies die het ontwikkelingsproces vergemakkelijken, waaronder gemakkelijke toegang tot gegevens in Amazon S3, beschikbaarheid van rekenmogelijkheden, beschikbaarheid van software en bibliotheken, en een geïntegreerde ontwikkelingservaring (IDE) voor ML-toepassingen.

Eerst hebben we de videogegevens uit de S3-bucket gelezen en de 2D-frames geëxtraheerd in een PNG-indeling (Portable Network Graphics) voor ontwikkeling op frameniveau. We hebben YOLOv3-objectdetectie gebruikt om een ​​begrenzingskader te genereren van elke persoon die in een frame is gedetecteerd. Voor meer informatie, zie Trainingstijd benchmarken voor op CNN gebaseerde detectoren met Apache MXNet.

Vervolgens hebben we de frames en bijbehorende begrenzingskaderinformatie doorgegeven aan het 3D pose-schattingsmodel om de belangrijkste punten voor evaluatie en visualisatie te genereren. We hebben een 2D-houdingsschattingstechniek toegepast op de frames en we hebben de belangrijkste punten per frame gegenereerd voor ontwikkeling en evaluatie. In de volgende secties worden de details van elke module in de 3D-pijplijn besproken.

Data voorverwerking

De eerste stap was het extraheren van frames uit een bepaalde video met behulp van OpenCV, zoals weergegeven in de volgende afbeelding. We gebruikten twee tellers om respectievelijk de tijd en het aantal frames bij te houden, omdat video's met verschillende frames per seconde (FPS) werden vastgelegd. Vervolgens hebben we de reeks afbeeldingen opgeslagen alsvideo_name + second_count + frame_countin PNG-formaat.

Detectie van objecten (personen).

We gebruikten vooraf getrainde YOLOv3-modellen op basis van de Pascal VOC-dataset om personen in frames te detecteren. Voor meer informatie, zie Aangepaste modellen implementeren die zijn gebouwd met Gluon en Apache MXNet op Amazon SageMaker. Het YOLOv3-algoritme produceerde de begrenzingsvakken die worden weergegeven in de volgende animaties (de originele afbeeldingen zijn verkleind tot 910 × 512 pixels).

We hebben de coördinaten van het begrenzingsvak opgeslagen in een CSV-bestand, waarin de rijen de frame-index, informatie over het begrenzingsvak als een lijst en hun betrouwbaarheidsscores aangaven.

2D pose-schatting

We hebben ResNet-18 V1b geselecteerd als het vooraf getrainde pose-schattingsmodel, dat een top-down strategie overweegt om menselijke poses te schatten binnen de begrenzingskaders die worden uitgevoerd door het objectdetectiemodel. We hebben de detectorklassen verder gereset om mensen op te nemen, zodat het niet-maximale onderdrukkingsproces (NMS) sneller kan worden uitgevoerd. Het Simple Pose-netwerk werd toegepast om heatmaps voor belangrijke punten te voorspellen (zoals in de volgende animatie), en de hoogste waarden in de heatmaps werden toegewezen aan de coördinaten op de originele afbeeldingen.

3D pose-schatting

We gebruikten een state-of-the-art 3D-pose-schattingsalgoritme dat een camera-afstandsbewuste top-down-methode omvat voor meerdere personen per RGB-frame, aangeduid als 3DMPPE (Moon et al.). Dit algoritme bestond uit twee hoofdfasen:

  • RootNet – Schat de camera-gecentreerde coördinaten van de wortel van een persoon in een bijgesneden frame
  • posenet - Gebruikt een top-downbenadering om de relatieve 3D-posecoördinaten in de bijgesneden afbeelding te voorspellen

Vervolgens hebben we de begrenzingskaderinformatie gebruikt om de 3D-coördinaten terug naar de oorspronkelijke ruimte te projecteren. 3DMPPE bood twee vooraf getrainde modellen aan die getraind waren met Human36- en MuCo3D-datasets (voor meer informatie, zie de GitHub repo), die respectievelijk 17 en 21 kernpunten bevatten, zoals geïllustreerd in de volgende animaties. We gebruikten de 3D-posecoördinaten die door de twee vooraf getrainde modellen waren voorspeld voor visualisatie- en evaluatiedoeleinden.

Evaluatie

Om de prestaties van de 2D- en 3D-pose-schattingsmodellen te evalueren, hebben we de coördinaten voor 2D-pose (x,y) en 3D-pose (x,y,z) gebruikt voor elk gewricht dat voor elk frame in een bepaalde video is gegenereerd. Het aantal kernpunten varieerde op basis van de datasets; de Leeds Sports Pose Dataset (LSP) bevat er bijvoorbeeld 14, terwijl de MPII Human Pose-dataset, een state-of-the-art benchmark voor het evalueren van gearticuleerde schattingen van menselijke houdingen die verwijst naar Human3.6M, 16 sleutelpunten bevat. We hebben twee metrieken gebruikt die vaak worden gebruikt voor zowel 2D- als 3D-poseschatting, zoals beschreven in het volgende gedeelte over evaluatie. In onze implementatie volgde ons standaard sleutelpuntenwoordenboek de COCO-detectiedataset, die 17 sleutelpunten heeft (zie de volgende afbeelding), en de volgorde is als volgt gedefinieerd:

KEY POINTS = {
    0: "nose",
    1: "left_eye",
    2: "right_eye",
    3: "left_ear",
    4: "right_ear",
    5: "left_shoulder",
    6: "right_shoulder",
    7: "left_elbow",
    8: "right_elbow",
    9: "left_wrist",
    10: "right_wrist",
    11: "left_hip",
    12: "right_hip",
    13: "left_knee",
    14: "right_knee",
    15: "left_ankle",
    16: "right_ankle"
}

Gemiddelde per gewrichtspositiefout

Mean per joint position error (MPJPE) is de Euclidische afstand tussen grondwaarheid en een gezamenlijke voorspelling. Omdat MPJPE de fout- of verliesafstand meet, en lagere waarden duiden op een grotere precisie.

We gebruiken de volgende pseudocode:

  • Laat G aanduiden ground_truth_joint en verwerk G voor door:
    • De null-items in G vervangen door [0,0] (2D) of [0,0,0] (3D)
    • Een Booleaanse matrix B gebruiken om de locatie van null-items op te slaan
  • Laat P aanduiden predicted_joint matrixen lijn G en P uit op frame-index door een nulvector in te voegen als een frame geen resultaten heeft of geen label heeft
  • Bereken elementsgewijs de Euclidische afstand tussen G en P, en laat D de afstandsmatrix aangeven
  • Vervang Di,j met 0 als Bi,j
  • Gemiddelde per gewrichtspositie is de gemiddelde waarde van elke kolom van Ds,tDi,j 0

De volgende figuur visualiseert een voorbeeld van video's per gewrichtsfout, een matrix met dimensie m*n, waarbij m staat voor het aantal frames in een video en n staat voor het aantal gewrichten (sleutelpunten). De matrix toont een voorbeeld van een heatmap van per gewrichtspositiefout aan de linkerkant en het gemiddelde per gewrichtspositiefout aan de rechterkant.

De volgende afbeelding visualiseert een voorbeeld van video's per gewrichtsfout, een matrix met dimensie m*n , waarbij m staat voor het aantal frames in een video en n voor het aantal gewrichten (sleutelpunten). De matrix toont een voorbeeld van een heatmap van per gewrichtspositiefout aan de linkerkant en het gemiddelde per gewrichtspositiefout aan de rechterkant.

Percentage correcte kernpunten

Het percentage correcte sleutelpunten (PCK) vertegenwoordigt een pose-evaluatiemaatstaf waarbij een gedetecteerd gewricht als correct wordt beschouwd als de afstand tussen het voorspelde en het werkelijke gewricht binnen een bepaalde drempel ligt; deze drempel kan variëren, wat leidt tot een paar verschillende variaties van statistieken. Drie variaties worden vaak gebruikt:

  • PCKh@0.5, dat is wanneer de drempel wordt gedefinieerd als 0.5 * kopbeenverbinding
  • PCK@0.2, dat is wanneer de afstand tussen het voorspelde en het daadwerkelijke gewricht < 0.2 * torsodiameter is
  • 150 mm als harde drempel

In onze oplossing hebben we de PCKh@0.5 gebruikt als onze grondwaarheids-XML-gegevens die het hoofdbegrenzingsvak bevatten, dat we kunnen gebruiken om de hoofd-botkoppeling te berekenen. Voor zover wij weten, bevat geen enkel bestaand pakket een gebruiksvriendelijke implementatie voor deze statistiek; daarom hebben we de metriek intern geïmplementeerd.

Pseudo-code

We gebruikten de volgende pseudocode:

  • Laat G de grond-waarheidsverbinding aangeven en G voorbewerken door:
    • De null-items in G vervangen door [0,0] (2D) of [0,0,0] (3D)
    • Een Booleaanse matrix B gebruiken om de locatie van null-items op te slaan
  • Voor elk frame Fi, gebruik de bbox Bi= (xMin,yMin,xmax,ymax) om de corresponderende kop-beenverbinding H van elk frame te berekeneni , waar Hi=((xmax-xMin)2+ (jamax-yMin)2)½
  • Laat P de voorspelde gewrichtsmatrix aangeven en lijn G en P uit met frame-index; voeg een nul-tensor in als er een frame ontbreekt
  • Bereken de elementgewijze 2-normfout tussen G en P; laat E de foutmatrix aangeven, waarbij Ei,j=||Gi,j-Pi,j||
  • Bereken een geschaalde matrix S=H*I, waarbij I een identiteitsmatrix voorstelt met dezelfde dimensie als E
  • Vervang S om deling door 0 te voorkomeni,j met 0.000001 als Bi,j=1
  • Bereken geschaalde foutmatrix Si,j=Ei,j/Si,j
  • Filter SE eruit met drempelwaarde = 0.5, en laat C de tegenmatrix aangeven, waarbij Ci,j=1 als SEi,j<0.5 en Ci,j=0 anders
  • Tel hoeveel enen in C*,j als c⃗ en tel hoeveel nullen er in B staan*,j als b⃗
  • PCKh@0.5=gemiddelde(c⃗/b⃗)

In de zesde stap (vervang Si,jmet 0.000001 als Bi,j=1), hebben we een trap opgezet voor de geschaalde foutmatrix door 0 ingangen te vervangen door 0.00001. Het delen van een willekeurig getal door een klein getal genereert een versterkt getal. Omdat we later > 0.5 als drempel gebruikten om onjuiste voorspellingen eruit te filteren, werden de null-items uitgesloten van de juiste voorspelling omdat deze veel te groot was. Vervolgens hebben we alleen de niet-null-items in de Booleaanse matrix geteld. Op deze manier hebben we ook de null-items uitgesloten van de hele dataset. We hebben in deze implementatie een technische truc voorgesteld om null-items uit te filteren uit niet-gelabelde sleutelpunten in de grondwaarheid of de frames zonder gedetecteerde persoon.

Video-uitlijning

We hebben twee verschillende cameraconfiguraties overwogen om videogegevens van atleten vast te leggen, namelijk de lijn- en boxopstellingen. De lijnopstelling bestaat uit vier camera's die langs een lijn zijn geplaatst, terwijl de boxopstelling bestaat uit vier camera's die in elke hoek van een rechthoek zijn geplaatst. De camera's werden gesynchroniseerd in de lijnconfiguratie en vervolgens opgesteld op een vooraf bepaalde afstand van elkaar, waarbij gebruik werd gemaakt van enigszins overlappende camerahoeken. Het doel van de video-uitlijning in de lijnconfiguratie was om de tijdstempels te identificeren die opeenvolgende camera's met elkaar verbinden om herhaalde en lege frames te verwijderen. We hebben twee benaderingen geïmplementeerd op basis van objectdetectie en kruiscorrelatie van optische stromen.

Algoritme voor objectdetectie

We gebruikten de resultaten van objectdetectie in deze benadering, inclusief de begrenzingsvakken van personen uit de vorige stappen. De objectdetectietechnieken produceerden een kans (score) per persoon in elk frame. Daarom stelde het plotten van de scores in een video ons in staat om het frame te vinden waar de eerste persoon verscheen of verdween. Het referentieframe uit de boxconfiguratie werd uit elke video geëxtraheerd en alle camera's werden vervolgens gesynchroniseerd op basis van de referenties van het eerste frame. In de lijnconfiguratie werden zowel de start- als eindtijdstempels geëxtraheerd en werd een op regels gebaseerd algoritme geïmplementeerd om opeenvolgende video's te verbinden en uit te lijnen, zoals geïllustreerd in de volgende afbeeldingen.

De bovenste video's in de volgende afbeelding tonen de originele video's in de lijnconfiguratie. Daaronder staan ​​persoonsdetectiescores. De volgende rijen tonen een drempel van 0.75 toegepast op de scores, en de juiste start- en eindtijdstempels worden geëxtraheerd. De onderste rij toont uitgelijnde video's voor verdere analyse.

Moment van snap

We hebben het moment van snap (MOS) geïntroduceerd – een bekende afstemmingsbenadering – die aangeeft wanneer een evenement of spel begint. We wilden het framenummer bepalen wanneer een atleet het toneel betreedt of verlaat. Meestal vindt er relatief weinig beweging plaats op het hardloopveld voor de start en na het einde van de snap, terwijl er relatief veel beweging plaatsvindt wanneer de atleet rent. Daarom konden we intuïtief het MOS-frame vinden door de videoframes te vinden met relatief grote verschillen in de beweging van de video voor en na het frame. Hiertoe hebben we optische dichtheidsstroom gebruikt, een standaardmaat voor beweging in de video, om de MOS te schatten. Eerst, gegeven een video, berekenden we de optische stroom voor elke twee opeenvolgende frames. De volgende video's presenteren een visualisatie van een dichte optische stroom op de horizontale as.

Vervolgens hebben we de kruiscorrelatie gemeten tussen de optische stromen van twee opeenvolgende frames, omdat kruiscorrelatie het verschil daartussen meet. Voor de met de camera vastgelegde video van elke hoek hebben we het algoritme herhaald om de MOS te vinden. Ten slotte hebben we het MOS-frame gebruikt als hoofdframe voor het uitlijnen van video's vanuit verschillende hoeken. In de volgende video worden deze stappen beschreven.

Conclusie

Het technische doel van het werk dat in dit bericht wordt gedemonstreerd, was het ontwikkelen van een op deep learning gebaseerde oplossing die 3D-positieschattingscoördinaten produceert met behulp van 2D-video's. We gebruikten een camera-afstandsbewuste techniek met een top-downbenadering om een ​​3D-positieschatting van meerdere personen te bereiken. Verder hebben we met behulp van objectdetectie, kruiscorrelatie en optische stroomalgoritmen de video's die vanuit verschillende hoeken zijn vastgelegd, uitgelijnd.

Dit werk heeft coaches in staat gesteld om de 3D-houdingsschatting van atleten in de loop van de tijd te analyseren om biomechanische statistieken, zoals snelheid, te meten en de prestaties van de atleten te volgen met behulp van kwantitatieve en kwalitatieve methoden.

Dit bericht demonstreerde een vereenvoudigd proces voor het extraheren van 3D-houdingen in scenario's uit de echte wereld, die kunnen worden geschaald naar coaching in andere sporten zoals zwemmen of teamsporten.

Als u hulp wilt bij het versnellen van het gebruik van ML in uw producten en diensten, neem dan contact op met de Amazon ML Solutions-lab programma.

Referenties

Maan, Gyeongsik, Ju Yong Chang en Kyoung Mu Lee. "Camera-afstandsbewuste top-downbenadering voor 3D-positieschatting van meerdere personen op basis van een enkel RGB-beeld." In Proceedings van de IEEE International Conference on Computer Vision, pp. 10133-10142. 2019.


Over de auteur

Saman Sarraf is Data Scientist bij de Amazon ML Solutions-lab​ Zijn achtergrond ligt in toegepaste machine learning, waaronder deep learning, computervisie en voorspelling van tijdreeksgegevens.

Amery Cong is Algorithms Engineer bij Intel, waar hij machine learning en computer vision-technologieën ontwikkelt om biomechanische analyses op de Olympische Spelen aan te sturen. Hij is geïnteresseerd in het kwantificeren van menselijke fysiologie met AI, vooral in de context van sportprestaties.

Ashton Eaton is een Product Development Engineer bij Intel, waar hij helpt bij het ontwerpen en testen van technologieën die gericht zijn op het verbeteren van sportprestaties. Hij werkt samen met klanten en het technische team om producten te identificeren en te ontwikkelen die aan de behoeften van de klant voldoen. Hij is geïnteresseerd in het toepassen van wetenschap en technologie op menselijke prestaties.

Jonathan Lee is de directeur van Sports Performance Technology, Olympic Technology Group bij Intel. Hij studeerde de toepassing van machine learning op gezondheid als bachelor aan de UCLA en tijdens zijn afstudeerwerk aan de Universiteit van Oxford. Zijn carrière was gericht op de ontwikkeling van algoritmen en sensoren voor gezondheid en menselijke prestaties. Hij leidt nu het 3D Athlete Tracking-project bij Intel.

Nelson Leung is de platformarchitect in de Sports Performance CoE bij Intel, waar hij end-to-end-architectuur definieert voor geavanceerde producten die de prestaties van atleten verbeteren. Hij leidt ook de implementatie, implementatie en productisering van deze machine learning-oplossingen op schaal voor verschillende Intel-partners.

Suchitra Sathyanarayana is manager bij de Amazon ML Solutions-lab, waar ze AWS-klanten in verschillende brancheverticalen helpt hun AI en cloud-acceptatie te versnellen. Ze heeft een PhD in Computer Vision van de Nanyang Technological University, Singapore.

Shenzhen Zhu is een data scientist bij de Amazon ML-oplossingslab team bij Amazon Web Services. Ze maakt gebruik van Machine Learning en Deep Learning om uiteenlopende problemen in verschillende bedrijfstakken op te lossen voor AWS-klanten.

Bron: https://aws.amazon.com/blogs/machine-learning/estimating-3d-pose-for-athlete-tracking-using-2d-videos-and-amazon-sagemaker-studio/

Tijdstempel:

Meer van AWS Blog over machine learning