1
votes

Comment filtrer les classes du jeu de données COCO?

Je voudrais entraîner un modèle yolo avec le jeu de données COCO. Comme il y a plus de 80 classes, comment puis-je le filtrer? J'ai juste besoin de la personne de classe et de la voiture.


0 commentaires

3 Réponses :


3
votes

Pour une manière simple et facile, procédez comme suit:

  • Modifier (ou copier pour la sauvegarde) le fichier coco.names dans darknet\data\coco.names
  • Supprimer toutes les autres classes à l'exception des personnes et des voitures
  • Modifiez votre fichier cfg (par exemple yolov3.cfg ), changez les 3 classes de la ligne 610, 696, 783 de 80 en 2
  • Changer les 3 filtres du fichier cfg à la ligne 603, 689, 776 de 255 à (classes + 5) x3 = 21
  • Exécutez le ./darknet test du détecteur cfg / coco.data cfg / yolov3.cfg yolov3.weights data / person.jpg

Pour une manière plus avancée, vous pouvez utiliser ce référentiel pour créer des ensembles de données yolo basés sur des images voc, coco ou ouvertes. https://github.com/holger-prause/yolo_utils

Reportez-vous également à ceci: Comment puis-je télécharger une partie spécifique de Coco Dataset?


0 commentaires

0
votes

Vous pouvez utiliser l ' API PyCoco pour travailler avec l'ensemble de données COCO. Avec cette bibliothèque, filtrer les classes de l'ensemble de données est si simple!

# Define the classes (out of the 81) which you want to see. Others will not be shown.
filterClasses = ['person', 'dog']

# Fetch class IDs only corresponding to the filterClasses
catIds = coco.getCatIds(catNms=filterClasses) 
# Get all images containing the above Category IDs
imgIds = coco.getImgIds(catIds=catIds)
print("Number of images containing all the  classes:", len(imgIds))

# load and display a random image
img = coco.loadImgs(imgIds[np.random.randint(0,len(imgIds))])[0]
I = io.imread('{}/images/{}/{}'.format(dataDir,dataType,img['file_name']))/255.0

J'ai récemment écrit un article entier sur explorer et manipuler l'ensemble de données COCO . Jetez un œil.


0 commentaires

0
votes

La seule façon de filtrer les classes sans reconditionner le modèle sur le jeu de données Coco est de vérifier la sortie de détection pour éviter de dessiner une boîte pour les classes inutiles, mais le modèle continuera à détecter toutes les classes en arrière-plan.


0 commentaires