portaldacalheta.pt
  • Principal
  • Mode De Vie
  • Rise Of Remote
  • Processus Financiers
  • Gestion De Projet
La Technologie

Analyse vidéo d'apprentissage automatique: identification des poissons



Les compétitions sont un excellent moyen d'améliorer les compétences d'apprentissage automatique. Non seulement vous avez accès à des ensembles de données de qualité, mais vous avez également des objectifs clairs. Cela vous aide à vous concentrer sur la partie importante: concevoir des solutions de qualité pour les problèmes actuels.

Un de mes amis et moi avons récemment participé à la N + 1 poisson, N + 2 poissons concurrence. Cette compétition d'apprentissage automatique, avec beaucoup de traitement d'image, vous oblige à traiter des clips vidéo de poissons identifiés, mesurés et gardés ou rejetés à la mer.



une image abstraite de l



Dans l'article, je vais vous expliquer comment nous avons abordé le problème de la concurrence en utilisant des techniques de traitement d'image standard et des modèles de réseaux de neurones pré-entraînés. La performance des solutions soumises a été mesurée sur la base d'une certaine formule. Avec notre solution, nous avons réussi à assurer la 11e place.



Pour une brève introduction à l'apprentissage automatique, vous pouvez vous référer à Cet article .

À propos du concours

On nous a fourni des vidéos d'un ou de plusieurs poissons dans chaque segment. Ces vidéos ont été capturées sur différents bateaux pêchant le poisson de fond dans le golfe du Maine.



Les vidéos ont été collectées à partir de caméras à position fixe placées pour regarder vers le bas sur une règle. Un poisson est placé sur la règle, le pêcheur retire ses mains de la règle, puis le pêcheur rejette ou garde le poisson en fonction de l'espèce et de la taille.

un exemple de clip vidéo du projet



Mesure de performance

Trois tâches étaient importantes pour ce projet. Le but ultime était de créer un algorithme qui génère automatiquement des annotations pour les fichiers vidéo, où les annotations sont composées de:

  • La séquence des poissons qui apparaissent
  • Les espèces de chaque poisson qui apparaissent dans la vidéo
  • La longueur de chaque poisson qui apparaît dans la vidéo

Les organisateurs du concours ont créé une métrique agrégée qui a donné une idée générale de la performance sur toutes ces tâches. La métrique était une simple combinaison pondérée d'une métrique individuelle pour chacune des tâches. Bien qu'il y ait certains poids, ils ont recommandé que nous nous concentrions sur un algorithme bien équilibré capable de contribuer à toutes les tâches!



Vous pouvez en savoir plus sur la façon dont la mesure de performance globale est calculée à partir des mesures de performance de chaque tâche individuelle à partir de la page web officielle du concours .

Conception d'une solution d'apprentissage automatique

Lorsque vous travaillez avec apprentissage automatique projets traitant d'images ou de vidéos, vous utiliserez très probablement réseaux de neurones convolutifs . Mais, avant de pouvoir utiliser des réseaux de neurones convolutifs, nous devions prétraiter les trames et résoudre d'autres sous-tâches grâce à différentes stratégies.



Pour la formation, nous avons utilisé un GPU nVidia 1080Ti. Une bonne partie de notre temps a été perdue à essayer d'optimiser notre code afin de rester pertinent dans la concurrence. Nous avons cependant fini par passer moins de temps là où cela aurait eu plus d'importance.

Étape 0: déterminer le nombre de bateaux uniques

Avec l'analyse de la silhouette, trouver le nombre de bateaux est devenu une tâche assez triviale. Les étapes étaient les suivantes et utilisaient des techniques très standard:



  1. Obtenez des images aléatoires de chaque vidéo.
  2. Calculer les statistiques et Fonctionnalités robustes accélérées (SURF) pour chaque image.
  3. En utilisant analyse de la silhouette pour le regroupement K-means, nous pouvons trouver le nombre de bateaux.

SURF détecte les points d'intérêt dans une image et génère des descriptions de fonctionnalités. Cette approche est vraiment robuste, même avec diverses transformations d'image.

Une fois que les caractéristiques des points d'intérêt dans l'image sont connues, un regroupement de K-moyennes est effectué, suivi d'une analyse de silhouette pour déterminer un nombre approximatif de bateaux dans les images.

Étape 1: Identifier les images répétées

Bien que l'ensemble de données contienne des fichiers vidéo distincts, chaque vidéo semble avoir des chevauchements avec d'autres vidéos de l'ensemble de données. C'est peut-être parce que les vidéos ont été séparées d'une longue vidéo et ont donc fini par avoir quelques images communes au début ou à la fin de chaque vidéo.

une représentation graphique des cadres communs

Pour identifier ces cadres et les supprimer si nécessaire, nous avons utilisé des fonctions de hachage rapide sur les cadres.

Étape 2: Localisation de la règle

En appliquant certaines méthodes de traitement d'image standard, nous avons localisé la position de la règle et son orientation. Nous avons ensuite fait pivoter et recadré l'image pour positionner la règle de manière cohérente sur tous les cadres. Cela nous a également permis de réduire la taille du cadre par dix.

Règle détectée (tracée sur le cadre moyen):

une représentation visuelle du processus de détection des règles

Zone recadrée et pivotée:

une photographie de la règle recadrée

Étape 3: Détermination de la séquence du poisson

La mise en œuvre de cette étape pour déterminer la séquence des poissons a pris la majorité de mon temps lors de cette compétition. La formation de nouveaux réseaux de neurones convolutifs semblait trop coûteuse, nous avons donc décidé d'utiliser des réseaux de neurones pré-entraînés.

Pour cela, nous avons choisi les réseaux de neurones suivants:

  • VGG16
  • VGG19
  • ResNet50
  • Xception
  • InceptionV3

Ces modèles de réseaux de neurones sont formés sur le Ensemble de données ImageNet .

Nous n'avons extrait que les couches convolutives des modèles et leur avons fait passer le jeu de données de compétition. À la sortie, j'avais un éventail assez compact de fonctionnalités.

comment rédiger une documentation technique pour un logiciel

Ensuite, nous avons formé les réseaux de neurones avec uniquement des couches denses entièrement connectées et avons prévu des résultats pour chaque modèle pré-entraîné. Après cela, nous avons fait la moyenne du résultat et les résultats se sont avérés assez médiocres.

Nous avons décidé de le remplacer par Mémoire longue durée (LSTM) réseaux de neurones pour une meilleure prédiction où les données d'entrée étaient une séquence de cinq images qui ont été transformées avec les modèles pré-entraînés.

Pour fusionner la sortie de tous les modèles, nous avons utilisé la moyenne géométrique.

Le pipeline de détection des poissons était:

  1. Générez des fonctionnalités avec des modèles pré-entraînés.
  2. Prédisez la probabilité d'apparition des poissons sur un réseau neuronal dense.
  3. Générez des fonctionnalités LSTM avec des modèles pré-entraînés.
  4. Prédire la probabilité d'apparition des poissons sur un réseau neuronal LSTM.
  5. Fusionner les modèles à l'aide de la moyenne géométrique.

Le résultat d'une vidéo ressemble à ceci:

un échantillon de résultat de détection de poisson affiché sur un graphique avec un index de cadre le long de l

Étape 4: Identifier les espèces du poisson

Après avoir passé une grande partie de la durée du concours à mettre en œuvre l'étape précédente, nous avons essayé de rattraper le temps perdu en travaillant avec des modèles de l'étape précédente pour identifier les espèces de poissons.

Notre approche pour cela était à peu près la suivante:

  1. Ajoutez des couches denses aux modèles convolutifs prétrainés VGG16, VGG19, ResNet50, Xception, InceptionV3 (les poids des couches convolutives ont été fixés).
  2. Former des modèles avec une petite augmentation d'image.
  3. Prédisez les espèces avec chaque modèle.
  4. Сonsolider les modèles en votant.

Étape 5: Détectez la longueur du poisson

Pour déterminer la longueur du poisson, nous avons utilisé des réseaux de neurones. L'un d'eux a été formé pour identifier les têtes de poisson et l'autre pour identifier les queues de poisson. Les longueurs des poissons ont été approximées comme la distance entre les deux points identifiés par les deux réseaux neuronaux.

photographie montrant la distance entre la tête et la queue d

Schéma complet

Voici à quoi ressemblait le schéma général des étapes:

organigramme illustrant le schéma complet

La conception générale était assez simple car les images vidéo étaient passées par les étapes décrites ci-dessus avant de combiner les résultats séparés.

Comprendre les bases

Qu'est-ce que l'analyse de silhouette?

L'analyse de silhouette est une technique qui permet de distinguer des groupes de points de données visuellement séparés les uns des autres.

Qu'est-ce qu'un modèle d'apprentissage automatique?

Un modèle d'apprentissage automatique est le produit d'un algorithme d'apprentissage automatique basé sur des données. Le modèle peut ensuite être utilisé pour produire des extrants pertinents pour des intrants similaires.

Comment travailler à distance et toujours être le meilleur

Mode De Vie

Comment travailler à distance et toujours être le meilleur
Les 12 pires erreurs commises par les développeurs WordPress avancés

Les 12 pires erreurs commises par les développeurs WordPress avancés

Back-End

Articles Populaires
Conception de page de destination: création de la page de destination ultime
Conception de page de destination: création de la page de destination ultime
Modèles de fiches de conditions - Clauses à surveiller lors de la négociation
Modèles de fiches de conditions - Clauses à surveiller lors de la négociation
Promesses JavaScript: un tutoriel avec des exemples
Promesses JavaScript: un tutoriel avec des exemples
Introduction à OpenGL: un didacticiel sur le rendu de texte 3D
Introduction à OpenGL: un didacticiel sur le rendu de texte 3D
C Corp contre S Corp, partenariat, entreprise individuelle et LLC: quelle est la meilleure entité commerciale?
C Corp contre S Corp, partenariat, entreprise individuelle et LLC: quelle est la meilleure entité commerciale?
 
Les marchés à millions de dollars sont-ils meilleurs que les marchés à milliards de dollars?
Les marchés à millions de dollars sont-ils meilleurs que les marchés à milliards de dollars?
Créer un curseur de page complète personnalisé avec CSS et JavaScript
Créer un curseur de page complète personnalisé avec CSS et JavaScript
La métaprogrammation Ruby est encore plus cool qu'il n'y paraît
La métaprogrammation Ruby est encore plus cool qu'il n'y paraît
Blockchain, IoT et l'avenir des transports: comprendre la devise du moteur
Blockchain, IoT et l'avenir des transports: comprendre la devise du moteur
Explorer les algorithmes d'apprentissage automatique supervisé
Explorer les algorithmes d'apprentissage automatique supervisé
Articles Populaires
  • meilleur serveur web pour raspberry pi
  • valeur nette d'elon musc 2010
  • systèmes de trading forex qui fonctionnent
  • comment déterminer l'élasticité-prix de la demande
  • à quoi ressemble c++
Catégories
  • Mode De Vie
  • Rise Of Remote
  • Processus Financiers
  • Gestion De Projet
  • © 2022 | Tous Les Droits Sont Réservés

    portaldacalheta.pt