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.
3 Réponses :
Pour une manière simple et facile, procédez comme suit:
coco.names
dans darknet\data\coco.names
yolov3.cfg
), changez les 3 classes de la ligne 610, 696, 783 de 80 en 2 ./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?
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.
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. p >