Condividi tramite



Novembre 2018

Volume 33 Numero 11

Machine Learning - analisi Olimpiche sportivi combinazione sensori e visione artificiale per intelligenza artificiale

Dal Kevin Ashley | Novembre 2018

Internet delle cose (IoT) e Machine Learning (ML) sono stati utilizzati per tutti gli elementi dall'inventario di rilevamento e controllo qualità per la gestione del traffico e previsioni del tempo per la produzione. Un'area in cui questi due discipline hanno si riuniscono a cambiamenti herald è arena elevata palio sport. Nel numero di aprile di MSDN Magazine (msdn.com/magazine/mt846466), sono stati presentati come i sensori sono utilizzati per monitorare e migliorare le prestazioni negli eventi sportivi Olimpiadi invernali come sci alpine. Ora in questa seconda parte, lo stato attivo passa per le Olimpiadi estive, in cui Machine Learning e IoT vengono usati per migliorare springboard addentrarsi.

Si tratta di un'area di urgenza per gli Stati Uniti Olimpiche Team. Esistono quattro tuffi, ovvero 3 metri springboard, piattaforma misuratore di 10, 3 metro sincronizzati tuffi e 10 metro sincronizzati tuffi, ovvero per 24 totale medaglie disponibili in ogni sochi era basata su account. Sensori e Machine Learning promettono di migliorare regimi di training e ottimizzare le prestazioni degli atleti il protagonista principale.

Oggi, video è il metodo di analisi in immersioni, quando lavora da anni. Allenatori usano rallentatore e video di ciascun frame singolarmente per analizzare coi e fornire un feedback immediato. Tuttavia, questo approccio qualitativo consente analisi rigorosa e confronto efficace delle modifiche delle prestazioni. Alle realmente le modifiche di misure e documenti, è necessaria l'analisi quantitativa che subirebbero video con i dati acquisiti dai sensori specializzati.

In questo progetto, usiamo tecnologia video e sensori per misurare il tuffi decollo: momenti critici prima che sono fondamentali per un approfondimento ha esito positivo. È stato progettato un sensore trovarsi sotto il suggerimento di springboard. Include un'unità di misura inerziale (IMU), un accelerometro e un Giroscopio per misurare le caratteristiche importanti del decollo springboard. Ciò include l'approccio alla fine della Lavagna, l'ostacolo alla fine di bacheca, tenere premuto e sensibili flessioni di springboard e il livello di accuratezza in modalità wireless dal springboard. Un grande decollo è fondamentale per un approfondimento eccezionale, con l'altezza massima e selezione necessari per difficilissimi coi, ad esempio un somersault inoltrare 4 1/2.

I dati dei sensori può determinare se la bacheca è stata premuta al lungo il percorso verso il basso e, se il diver rode completamente la bacheca eseguire il backup e attendono che generi che lo riguardano in modalità wireless. Molti driver non esegue questa operazione anche e tendono a "skip off bacheca" in uscita verso l'alto, la perdita di altezza e la rotazione del processo. Questo progetto mira a creare un sistema che concede a driver coaches le informazioni che necessarie per migliorare rapidamente la qualità del decollo, consentendo difficile e più difficile coi deve essere eseguita correttamente.

All'interno del sensore

Collegato per il suggerimento lato inferiore del trampolino, il sensore è piccolo e sufficientemente chiaro per non influire sulle prestazioni della Lavagna e opera per diverse ore in un unico addebito (figura 1). È quindi pronto per misurare gli angoli, le accelerazioni e temporizzazione durante il decollo di un diver sensore. Il parametro più importante è l'angolo massimo flessione, che determina la quantità di energia di diver ha trasmesso in bacheca prima il decollo.

Installazione di Springboard e simulazione SensorKit
Figura 1 SensorKit simulazione e il programma di installazione di Springboard

Un elenco parziale dei parametri tipici che possono essere misurati e importanti per la porta includono:

  • Massimo flessione verso il basso della bacheca; indicato da flessione Lavagna massimo.
  • Ora di volo ostacolo, che indica l'altezza massima ostacolo raggiunto.
  • Bacheca contatto ora, che misura il tempo di destinazione per il decollo ostacolo.
  • Velocità al contatto di lavagna dopo ostacolo, stimato dal momento in aria.
  • Velocità nel decollo, calcolato dalla velocità angolare del suggerimento di lavagna e relativo accelerazione.
  • Massimo sideway inclinare angolo del suggerimento della Lavagna, che determina se si è verificato il di decollo da un lato della bacheca.
  • Profilo di accelerazione, che fornisce i dati non elaborati per analisi più dettagliate.

Nella soluzione end-to-end, che esula dall'ambito di questo articolo research, questi dati verranno sincronizzati con i video acquisiti dell'approfondimento di un tablet o smartphone e quindi caricati nel cloud. Un'interfaccia utente intuitiva fornirà allenatori e gli atleti immediati accesso al video, con i controlli per rallentatore, funzioni di inoltro del passaggio e Vai indietro. L'integrazione dei dati di telemetria del sensore con video offre allenatori e divers comprendere a fondo i meccanismi di ogni dive, in modo che può comprendere cosa deve essere migliorato. In questa soluzione è verranno solo essere calcolo angolo massimo flessione, relativo alla velocità massima springboard e accelerazione springboard massimo.

Sensor Kit e l'App tuffi

I dati vengono raccolti nel nostro sensore SensorKit. L'accelerometro e il Giroscopio forniscono i dati per calcolare flessione angolo ostacolo dei voli e analizzare i dati e trasmetterlo in modalità wireless per l'app per dispositivi mobili in cui la porta può visualizzarlo. L'app può attivare una registrazione video basata sul rilevamento del sensore un ostacolo e quindi arrestare la registrazione dopo un determinato periodo di tempo trascorso dopo il decollo rilevato sensore. L'app automaticamente carica i dati acquisiti nel cloud usando il SDK SensorKit e fornisce un'interfaccia utente per allenatori per tag e commentare gli atleti e piaciuto.

Il sensore deve essere in grado di elaborare i modelli di segnale specifico a illustrare, che è limitati al rilevamento di questa procedura ostacolo da oscillazioni springboard, stima del tempo il decollo e l'invio di valori calcolati tornare all'app (Figura2). È possibile trovare il codice sorgente per SDK per App tuffi su SensorKit bit.ly/2ImaNQT.

Fisica di Springboard illustrato
Illustrato nella figura 2 fisica di Springboard

SensorKit SDK fornisce le strutture di dati per l'approfondimento e l'ostacolo. Le due classi sono rappresentate nel codice illustrato nella figura 3.

Figura 3 SensorDiveData e classi SensorHurdleData

public class SensorDiveData
{
  public long t { get; set; } // Timestamp
  public double dt { get; set; } // Duration
  public double count { get; set; } // Hurdle count
  public double g { get; set; } // Acceleration, m/s^2
  public double w { get; set; } // Angular velocity, dps
  public double angle { get; set; } // Max flexion angle, deg
}
public class SensorHurdleData
{
  public long t { get; set; } // Timestamp
  public double dt { get; set; } // Duration
  public double angle { get; set; } // Flexion angle, deg
  public double g { get; set; } // Acceleration
  public double w { get; set; } // Angular velocity, dps
}

Questi dati viene trasmesso all'app tramite il SDK SensorKit, in cui può essere archiviato, ad esempio usando Cosmos DB. SensorKit fornisce una classe utile per gestire i dati di Cosmos DB.

Fisica di approfondimento

I sensori di lavorare in due modalità: non elaborato e viene calcolata. Verrà lavoriamo con i dati non elaborati dai sensori, sia dal nostro simulato springboard e da coi effettivi. Esistono diversi tipi di unità. In questo articolo ci concentreremo su coi che iniziano in piedi sul retro della scheda, seguita da un percorso di inoltro e un ostacolo alla fine della Lavagna, ci si fino a un decollo di avvio in modalità wireless. Dal repository di GitHub al github.com/kevinash/MSDNDivingSensor, è possibile usare le immersioni. File di R per caricare e analizzare i dati del sensore e calcolare i valori che è stato usato nella sezione analitica di questo articolo.

In termini di fisica coinvolta, è consigliabile eseguire il push in un elemento pesante presto verso chi guarda. La forza esercitare il rallentamento dell'oggetto in basso, questo viene arrestato e alla fine si accelera in altra direzione. Tutto questo interessa l'aspetto è necessario individuare i tuffi il decollo dalle curve velocità e l'accelerazione. Il problema consiste nel determinare dove siamo il di decollo basato su velocità angolare o curve di accelerazione lineare. Un grafico dello spostamento della Lavagna sarà simile a un grafico di oscillazione: Dalla posizione orizzontale bacheca va down intermedie flessione max, quindi viene restituito tramite la posizione orizzontale 0 e oscilla avanti fino a quando non è ancora.

Per calcolare lo spostamento di flessibilità massima, è possibile usare la velocità angolare del suggerimento della Lavagna o acceleration lineare. Velocità angolare sarà esaurito fase con accelerazione corrispondente, perché l'accelerazione è derivato l'ora di velocità, tuttavia. Stessa relazione esiste tra di spostamento e di velocità, in quanto velocità viene derivato il tempo di spostamento. Ciò significa che la velocità pari a 0 nella flessione max (punto di fine dello spostamento) del trampolino e l'accelerazione è al massimo (figura 2, passaggio 5). Successivamente, la Lavagna passa alla posizione orizzontale in cui distanziato dello spostamento è uguale a 0 e la velocità è max (figura 2, passaggio 7). È stato calcolato angolo dello spostamento flessione max integrando velocità angolare nel corso del tempo dal nostro primo punto uguale a zero (Figura2, passaggio 5) per il secondo punto del di decollo in cui velocità angolare diventa max (Figura2, Passaggio 7).

Per iniziare, nel codice R (figura 4) è possibile chiamare la funzione-it-all che analizza i file e visualizza i risultati, come illustrato di seguito:

CalculateSpringBoardDivingValues (sourceFile,lag, threshold, influence,1)

Analisi dei dati del sensore in R
Figura 4 sensori di analisi di dati in R

Passiamo ora a esaminare i dettagli delle operazioni eseguite all'interno di questa chiamata. In primo luogo, la funzione carica i dati dall'origine file non elaborato del sensore in frame di dati con il seguente codice:

df <- ReadNewFormatFile(dat2, debug_print = debug_print)

Sensori come gyro e dell'accelerometro Usa formati di dati specifici in qualche modo, principalmente per scopi di ottimizzazione dei dati. Ad esempio, il Giroscopio produce valori di velocità angolare in millidegrees al secondo (provider di dati multidimensionali). Questo avviene per evitare l'utilizzo di numeri a virgola mobile. Nei nostri calcoli usiamo il sistema internazionale di unità (SI), usati nella maggior parte dei calcoli di fisica. Per l'accelerazione, è anche la conversione dei valori del sensore non elaborati a m/sec ^ 2, un'unità standard per l'accelerazione. Di seguito sono riportati i calcoli:

#   wx, wy, wz *  0.001 * degrees/second (ang. Velocity)
#   ax, at, az = * 0.001 * 9.81 = m/s^2 (acceleration)
df$wx <- df$wx *  0.001 # convert to degrees per second
df$wy <- df$wy *  0.001 # convert to degrees per second
df$wz <- df$wz *  0.001 # convert to degrees per second
df$ax <- df$ax * 0.001 * 9.81
df$ay <- df$ay * 0.001 * 9.81
df$az <- df$az * 0.001 * 9.81

La direzione dei punti di vettore di velocità angolare perpendicolare al piano del movimento, mentre avviene la rotazione intorno all'asse di rotazione, come illustrato nella figura 5. È possibile determinare l'asse di rotazione in base all'asse con la modifica più significativa del valore. In questo caso, un piccolo matematica per velocità angolare è il tasso di variazione dell'angolo nel tempo:

Rilevamento il Giroscopio orientamento Angular
Figura 5 rilevamento il Giroscopio orientamento Angular

Per ottenere l'angolo, possiamo semplicemente integrare velocità angolare nel tempo:

La deviazione o errore, viene ridotto poiché presa in considerazione solo nel momento in cui la chiave per l'avvio rimbalzo. In R, questo è il codice per l'integrazione:

# Interested only in [posStart:posEnd]
# When displacement is at MAX, velocity passes 0 point
revFirstMin <- which.min(rev(wSm$avgFilter[posStart:posEnd]))
# After been max negative
posLastMin <- posEnd - revFirstMin +1
# Next index when Angular Velocity goes
# through 0 is our starting integration point
nextZero <- min(which(floor(wSm$avgFilter[posLastMin:posEnd])>0))
# 0 position relative to Last Minimum
nextZero <- nextZero + posLastMin -1
# Max position after 0 position
nextMaxAfterZero <- which.max(wSm$avgFilter[nextZero:posEnd])
nextMaxAfterZero <- nextMaxAfterZero + nextZero -1
We also provided plotting functions to draw the results, as shown here:
PlotSingleChart(wSm$avgFilter[posStart:posEnd],
  "Angular Velocity Smooth OUR Segment ","cyan4", kitSensorFile,
  "Wx smooth deg.",TRUE, FALSE, d$Start[posStart:posEnd])

Nei grafici sul figura 6, abbiamo tracciare i dati del sensore gyro mentre la bacheca è ancora, con l'ostacolo e dopo aver nel momento in cui il decollo. È chiaro che la Lavagna raggiunge sua massima ampiezza prima il di decollo, dopo il quale l'oscillazione diminuisce con tempo. Per rendere il calcolo più preciso, ridurre al minimo la deviazione errore dall'integrazione, verranno usate solo nel momento in cui tra quando viene avviata la springboard oscilla avanti fino al momento quando oscillazione raggiunge il limite massimo.

Grafici per flessione angolo durante l'approfondimento
Figura 6 grafici per flessione angolo durante l'approfondimento

Infine, si calcola l'angolo massimo flessione e l'ora il decollo, con il seguente codice:

timeTakeOff <- d$Start[posHorizontal]
timeStart <- d$Start[posLastMin]  
writeLines (paste (
  "Hurdle landing time (Start)  = ", timeStart,"\n",
  "Take Off time (End)  = ", timeTakeOff,"\n",
  "Board contact time (from hurdle landing to takeoff) = ",
  round(difftime(
  as.POSIXct(paste(dt,df$t[posHorizontal],sep=" ")),
  as.POSIXct(paste(dt,df$t[posLastMin],sep=" "))),digits = 4)," secs \n",
  "Maximum downward flexion of the board  = ",
  round(max(abs(d$theta2Cum[posLastMin:nextZero])),digits=4)," deg.",
  " secs", sep="" ))

Recuperare questi dati di sensori è essenziale per allenatori tuffi e gli atleti, poiché li fornisce utili informazioni sull'approfondimento, in particolare il componente il decollo che è quindi fondamentale per un approfondimento ha esito positivo.

Analisi e acquisizione video

Panoramica dell'analisi video attualmente allenatori tuffi si basano su ciò che vedono per fornire commenti e suggerimenti a loro volta. Devono essere in grado di associare i dati che ricevono dai nostri sensori con ciò che vedono con i propri gli occhi. Correlando i dati dei sensori con video, forniamo allenatori la possibilità di comprendere meglio ciò che viene visualizzato.

La sincronizzazione dati di telemetria del sensore con video acquisiti è effettivamente un po' complesso. A tale scopo, abbiamo abilitato in una raccolta di visione artificiale computer chiamata openCV, per determinare visivamente quando il driver è a suo punto più basso, quando la bacheca è completamente flesso subito prima il decollo momento esatto. È quindi sincronizzate con tale punto sul video con il punto misurato più basso segnalato dal sensore. Vengono illustrati i dettagli di questa implementazione ulteriormente nel codice di esempio disponibile in GitHub all'indirizzo bit.ly/2IjjkUO.

Rilevamento Diver in-Flight visione artificiale viene usato anche per determinare il momento esatto quando il diver lascia la Lavagna. Una tecnica semplice per flow ottici, spesso usata durante il rilevamento di oggetto e vengono fornite informazioni sulla direzionalità e velocità di un punto selezionato da un'immagine a un altro. Abbiamo utilizzato l'algoritmo Lucas Kanade ottici flusso per determinare il tempo che di diver passa off bacheca, nonché per determinare la velocità e l'altezza del passaggio dell'esecuzione. Questa analisi video di movimento (come illustrato nella figura 7) offre la possibilità di comprendere le informazioni più dettagliate da ogni dive allenatori.

Rilevamento movimento Diver in modalità wireless con l'analisi del movimento Video
Figura 7 rilevamento movimento Diver in modalità wireless con l'analisi del movimento Video

È possibile ottenere il codice sorgente per lo spostamento di rilevamento delle bit.ly/2QduA7X. Inizialmente, specifichiamo il file video di origine per l'acquisizione:

cap = cv2.VideoCapture("YOUR-VIDEO-FILE.MP4")

Dopo aver selezionato il file, viene chiesto di selezionare un punto nell'immagine del video iniziale da rilevare. Con l'opzione selezionata, viene chiamato il metodo calcOpticalFlowPyrLK da OpenCV, che calcola un flusso per una funzionalità di tipo sparse impostato utilizzando il metodo Lucas Kanade iterativo, come illustrato nell'ottico figura 8.

Figura 8 chiamata calcOpticalFlowPyrLK

Code samplecv2.calcOpticalFlowPyrLK(old_gray, gray_frame, old_points,
  None, **lk_params)
For visualization, we track the diver on the video:
for i,(new,old) in enumerate(zip(new_points,old_points)):
    a,b = new.ravel()
    if start is None:
      start = a
    c,d = old.ravel()
    mask = cv2.line(mask, (a,b),(c,d), color[i].tolist(), 2)
    frame = cv2.circle(frame,(a,b),5,color[i].tolist(),-1)
    if b > lowest_point and abs(a - start) <= THRESH:
      low = np.zeros_like(frame)
      low = cv2.circle(low, (a,b), 5, color[i+1].tolist(), -1)
      lowest_point = b
  img = cv2.add(frame,mask) # essey
  img = cv2.add(img, low)
  cv2.imshow('Frame',img)
  old_points = new_points.reshape(-1,2)

Conclusioni

L'obiettivo è per questa soluzione essere semplice da utilizzare per allenatori e invisibile al driver. Questi attributi verranno consentono l'integrazione nelle sessioni di formazione di routine e impostarlo come uno strumento standard di coaching, molto il modo in cui la riproduzione di video è stato negli ultimi venti anni. Allenatori sarà in grado di valutare la qualità del decollo del driver analizzando le metriche principali:

  • Tempo in modalità wireless durante l'ostacolo indica la quantità potenziale di energia è disponibile per l'approfondimento.
  • Periodo di flessione Lavagna indica in modo efficace il driver è "caricato springboard" per l'avvio in modalità wireless. 
  • Ora nella Lavagna indica come il diver vengono ignorate springboard compresso e sfrutta la sua energia, convertirlo in altezza e raggiungono il decollo.

I vantaggi del nostro approccio video e sensore combinato sono chiare. Dai sensori, vengono raccolte informazioni dettagliate e immediate caratteristiche il decollo importanti, consentendo allenatori alla tecnica corretto. Anche nel corso del tempo di rilevamento degli indicatori di prestazioni consente di valutazione delle modifiche in takeoffs diver in passato e tiene traccia dell'avanzamento. Questo ciclo di commenti e suggerimenti può fungere da un incentivo per volta migliorare le relative metriche il decollo in ogni procedura consigliata, producendo più altezza e, di conseguenza, più tempo per completare ogni dive potenti.

L'obiettivo principale del progetto consiste nel fornire informazioni più dettagliate sui biomechanics il decollo, esplorando quindi per i driver elite degli Stati Uniti, in modo che possono raggiungere livelli di punteggio più alto della concorrenza. A tale scopo, si spera di migliorare analitica di visione artificiale, che comporta i passaggi successivi:

  • Con i contrassegni m 1 e 2 milioni di distanza visual in springboard (vedere figura 5), è inoltre possibile stimare le dimensioni della bacheca relativo traiettoria per calcolare l'altezza del driver in modalità wireless.
  • Utilizzo di visione artificiale e Machine Learning per determinare esattamente quando il driver viene inserita nella Lavagna e decolla dalla bacheca consentirà calcolo accurato del tempo ostacolo, ora Lavagna contatto e il decollo immediato.
  • Prendere in considerazione gli algoritmi oltre Lucas-Kanade, con alcuni vincoli. Lucas Kanade funziona solo sugli angoli, non funziona bene con le variazioni di luce e sfuggono registrare gli spostamenti di grandi dimensioni.
  • Esplorare implementazione posizione corpo e comportare la stima da video acquisito.
  • Sincronizzare i video con altre funzionalità utili nell'app, in modo che è possibile attivare azioni nell'app basata su video analizzato.

Kevin Ashleyè un architetto senior presso Microsoft e un esperto di IoT, machine learning e sport.

Phil Cheethamè attualmente il tecnologo senior di sport e biomechanist per gli Stati Uniti Olimpiche Committee (USOC) al centro formazione Olimpiche in Vista alfabeto tailandese (California)

Dan Laaksi chiamava director ad alte prestazioni per entrare negli Stati Uniti nel 2018 dopo che funge da head coach tuffi nell'università di Georgia negli ultimi anni 31.

Olga Vigdorovichè un data scientist e un fanatico di acquascooter nel tempo. Anna funziona con analisi di dati di sensori IoT e compila i modelli di dati per le piattaforme cloud scalabili basate su Microsoft Azure.

Daria Fradkinè un junior alla University of Pennsylvania nell'istituto di istruzione di ingegneria, l'utilizzo di progettazione di supporti digitali, principale che scienze informatiche di combina con i corsi di livello superiore in Computer grafica.

Kevin Kangè studente universitario quarta-anno l'utilizzo di analisi scientifica dei Computer con un'opzione di analisi scientifica dei dati alla University of Washington, Seattle.


Discutere di questo articolo nel forum di MSDN Magazine