Una guía para convert_imageset.cpp

Soy relativamente nuevo en machine learning / python / ubuntu.

Tengo un conjunto de imágenes en formato .jpg donde la mitad contiene una función que quiero que el caffe aprenda y la otra mitad no. Tengo problemas para encontrar la forma de convertirlos al formato lmdb requerido.

Tengo los archivos de entrada de texto necesarios.

Mi pregunta es si alguien puede proporcionar una guía paso a paso sobre cómo usar convert_imageset.cpp en la terminal de ubuntu.

Gracias

Una guía rápida de convert_imageset de Caffe

Construir

Lo primero que debes hacer es construir herramientas de caffe y caffe ( convert_imageset es una de estas herramientas).
Después de instalar caffe y make it, asegúrese de ejecutar también make tools .
Verifique que se haya creado un archivo binario convert_imageset en $CAFFE_ROOT/build/tools .

Prepare sus datos

Imágenes: ponga todas las imágenes en una carpeta (lo llamaré aquí /path/to/jpegs/ ).
Etiquetas: crea un archivo de texto (por ejemplo, /path/to/labels/train.txt ) con una línea por cada imagen de entrada. Por ejemplo:

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

En este ejemplo, la primera imagen está etiquetada como 1 mientras que las otras dos están etiquetadas como 0 .

Convierte el conjunto de datos

Ejecuta el binario en 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 

Línea de comando explicada:

  • GLOG_logtostderr indicador GLOG_logtostderr se establece en 1 antes de llamar a convert_imageset indica el mecanismo de registro para redirigir los mensajes de registro a stderr.
  • --resize_height y --resize_width tamaño de todas las imágenes de entrada al mismo tamaño 200x200 .
  • --shuffle cambia aleatoriamente el orden de las imágenes y no conserva el orden en el archivo /path/to/labels/train.txt .
  • A continuación se muestra la ruta a la carpeta de imágenes, el archivo de texto de las tags y el nombre del resultado. Tenga en cuenta que el nombre de la salida no debería existir antes de llamar a convert_imageset contrario recibirá un mensaje de error aterrador.

Otras banderas que pueden ser útiles:

  • --backend – le permite elegir entre un lmdb dataset o levelDB .
  • --gray – convierte todas las imágenes a escala de grises.
  • --encoded y --encoded_type – mantenga los datos de imagen codificados (jpg / png) comprimidos en la base de datos.
  • --help – muestra algo de ayuda, ver todos los indicadores relevantes en Flags from tools / convert_imageset.cpp

Puede ver $CAFFE_ROOT/examples/imagenet/convert_imagenet.sh para ver un ejemplo de cómo usar convert_imageset .