Nello svolgimento delle nostre attività affrontiamo quotidianamente il problema della determinazione delle priorità di sviluppo. Considerando l'elevata dinamica di sviluppo del settore IT, la domanda in costante aumento da parte delle imprese e del governo per nuove tecnologie, ogni volta che determiniamo il vettore di sviluppo e investiamo le nostre forze e fondi nel potenziale scientifico della nostra azienda, ci assicuriamo che tutte le nostre ricerche e progetti sono di natura fondamentale e interdisciplinare.
Pertanto, sviluppando la nostra tecnologia principale - il framework di riconoscimento dei dati HIEROGLYPH, ci preoccupiamo sia di migliorare la qualità del riconoscimento dei documenti (la nostra linea di business principale) sia della possibilità di utilizzare la tecnologia per risolvere i relativi problemi di riconoscimento. Nell'articolo di oggi vi racconteremo come, sulla base del nostro motore di riconoscimento (documenti), abbiamo effettuato il riconoscimento di oggetti più grandi e strategicamente importanti in un flusso video.
Formulazione del problema
Utilizzando gli sviluppi esistenti, costruire un sistema di riconoscimento dei carri armati che consenta di classificare un oggetto, nonché di determinare indicatori geometrici di base (orientamento e distanza) in condizioni scarsamente controllate senza l'uso di attrezzature specializzate.
Soluzione
Abbiamo scelto l'approccio statistico del machine learning come algoritmo principale per risolvere il problema. Ma uno dei problemi chiave del machine learning è la necessità di disporre di una quantità sufficiente di dati di addestramento. Ovviamente non abbiamo a disposizione immagini naturali ottenute da scene reali contenenti gli oggetti di cui abbiamo bisogno. Pertanto, fortunatamente, si è deciso di ricorrere alla generazione dei dati necessari per la formazione
Gli oggetti bersaglio erano 4 modelli di carri armati: T-90 (Russia), M1A2 Abrams (USA), T-14 (Russia), Merkava III (Israele). Gli oggetti erano posizionati in diverse posizioni del poligono, espandendo così l'elenco degli angoli visibili accettabili dell'oggetto. Le barriere tecniche, gli alberi, i cespugli e altri elementi del paesaggio hanno svolto un ruolo significativo.
Pertanto, in un paio di giorni abbiamo raccolto un set sufficiente per l'addestramento e la successiva valutazione della qualità dell'algoritmo (diverse decine di migliaia di immagini).
Hanno deciso di dividere il riconoscimento stesso in due parti: localizzazione dell'oggetto e classificazione dell'oggetto. La localizzazione è stata eseguita utilizzando un classificatore addestrato di Viola e Jones (dopotutto, un carro armato è un normale oggetto rigido, non peggiore di una faccia, quindi il metodo "cieco ai dettagli" di Viola e Jones localizza rapidamente l'oggetto bersaglio). Ma abbiamo affidato la classificazione e la determinazione dell'angolo a una rete neurale convoluzionale: in questo compito è importante per noi che il rilevatore identifichi con successo quelle caratteristiche che, diciamo, distinguono il T-90 dal Merkava. Di conseguenza, è stato possibile costruire una composizione efficace di algoritmi che risolva con successo il problema della localizzazione e della classificazione di oggetti dello stesso tipo.
Successivamente, abbiamo lanciato il programma risultante su tutte le nostre piattaforme esistenti (Intel, ARM, Elbrus, Baikal, KOMDIV), ottimizzando algoritmi computazionalmente difficili per aumentare le prestazioni (ne abbiamo già scritto più volte nei nostri articoli, ad esempio qui
Come risultato di tutte le azioni descritte, abbiamo ottenuto un prodotto software a tutti gli effetti con caratteristiche tattiche e tecniche significative.
Lettore intelligente di serbatoi
Quindi, vi presentiamo il nostro nuovo sviluppo: un programma per riconoscere le immagini dei carri armati in un flusso video Lettore intelligente di serbatoi, Quale:
- Risolve il problema "amico o nemico" per un dato insieme di oggetti in tempo reale;
- Determina i parametri geometrici (distanza dall'oggetto, orientamento preferito dell'oggetto);
- Funziona in condizioni atmosferiche incontrollate, nonché in caso di blocco parziale dell'oggetto da parte di corpi estranei;
- Funzionamento completamente autonomo sul dispositivo di destinazione, anche in assenza di comunicazione radio;
- Elenco delle architetture di processori supportate: Elbrus, Baikal, KOMDIV, nonché x86, x86_64, ARM;
- Elenco dei sistemi operativi supportati: Elbrus OS, AstraLinux OS, Atlix OS, nonché MS Windows, macOS, varie distribuzioni Linux che supportano gcc 4.8, Android, iOS;
- Sviluppo completamente domestico.
Solitamente, in conclusione dei nostri articoli su Habré, forniamo un collegamento al marketplace, dove chiunque utilizzi il proprio cellulare può scaricare una versione demo dell'applicazione per valutare effettivamente le prestazioni della tecnologia. Questa volta, tenendo conto delle specificità dell'applicazione risultante, auguriamo a tutti i nostri lettori di non affrontare mai nella loro vita il problema di determinare rapidamente se un carro armato appartiene a una certa fazione.
Fonte: habr.com