web-dev-qa-db-fra.com

Un guide pour convert_imageset.cpp

Je suis relativement nouveau dans l'apprentissage automatique/python/ubuntu.

J'ai un ensemble d'images au format .jpg où la moitié contient une fonctionnalité que je veux que caffe apprenne et l'autre non. J'ai du mal à trouver un moyen de les convertir au format lmdb requis.

J'ai les fichiers d'entrée de texte nécessaires.

Ma question est: est-ce que quelqu'un peut fournir un guide étape par étape sur la façon d'utiliser convert_imageset.cpp dans le terminal ubuntu?

Merci

33
pwhc

Un guide rapide de Caffe's convert_imageset

Construire

La première chose que vous devez faire est de construire caffe et les outils de caffe (convert_imageset est l'un de ces outils).
Après avoir installé caffe et makeing, assurez-vous que vous avez exécuté make tools ainsi que.
Vérifiez qu'un fichier binaire convert_imageset est créé dans $CAFFE_ROOT/build/tools.

Préparez vos données

Images: mettre toutes les images dans un dossier (je l'appellerai ici /path/to/jpegs/).
Étiquettes: créer un fichier texte (par exemple, /path/to/labels/train.txt) avec une ligne par image d'entrée. Par exemple:

img_0000.jpeg 1
img_0001.jpeg 0
img_0002.jpeg 0

Dans cet exemple, la première image est intitulée 1 tandis que les deux autres sont étiquetés 0.

Convertir l'ensemble de données

Exécutez le binaire dans Shell

~$ GLOG_logtostderr=1 $CAFFE_ROOT/build/tools/convert_imageset \
    --resize_height=200 --resize_width=200 --shuffle  \
    /path/to/jpegs/ \
    /path/to/labels/train.txt \
    /path/to/lmdb/train_lmdb

Explication de la ligne de commande:

  • GLOG_logtostderr l'indicateur est défini sur 1 avant appelant convert_imageset indique le mécanisme de journalisation pour rediriger les messages du journal vers stderr.
  • --resize_height et --resize_width redimensionner toutes les images d'entrée à la même taille 200x200.
  • --shuffle modifie au hasard l'ordre des images et ne conserve pas l'ordre dans le /path/to/labels/train.txt fichier.
  • Voici le chemin d'accès au dossier d'images, le fichier texte des étiquettes et le nom de la sortie. Notez que le nom de sortie ne doit pas exister avant d'appeler convert_imageset sinon vous obtiendrez un message d'erreur effrayant.

Autres indicateurs qui pourraient être utiles:

  • --backend - vous permet de choisir entre un ensemble de données lmdb ou levelDB.
  • --gray - convertit toutes les images en niveaux de gris.
  • --encoded et --encoded_type - conserve les données d'image sous forme compressée codée (jpg/png) dans la base de données.
  • --help - affiche de l'aide, voir tous les indicateurs pertinents sous Indicateurs de tools/convert_imageset.cpp

Vous pouvez vérifier $CAFFE_ROOT/examples/imagenet/convert_imagenet.sh pour un exemple d'utilisation de convert_imageset.

62
Shai