neural-network - keras multiclass classification
cafe con imagenes multi-etiqueta (3)
AFAIK, la versión actual de Caffe no admite los conjuntos de datos lmdb / leveldb para imágenes con múltiples capas. Sin embargo, puede (y probablemente debería) preparar sus entradas en formato HDF5. La capa de entrada HDF5 de Caffe es mucho más flexible y le permitirá tener múltiples etiquetas por entrada.
Esta respuesta proporciona una breve descripción de cómo crear una entrada HDF5 para caffe.
Otro problema que debe abordar es el hecho de que le interesa no solo la etiqueta múltiple por imagen, sino también el número variable de etiquetas por imagen. ¿Cómo define su pérdida por imagen, por etiqueta? Puede ser que tenga que escribir su propia capa de pérdida.
Hay algunas capas de pérdida que admiten "ignorar etiqueta": es decir, si se asigna una etiqueta de entrada específica a la imagen, no se calcula ninguna pérdida para la imagen respectiva. Ver, por ejemplo, AccuracyLayer
y SoftmaxWithLossLayer
.
Tengo un conjunto de datos de imágenes que tienen varias etiquetas; Hay 100 clases en el conjunto de datos, y cada imagen tiene 1 a 5 etiquetas asociadas con ellas.
Estoy siguiendo las instrucciones en la siguiente URL:
https://github.com/BVLC/caffe/issues/550
Dice que necesito generar un archivo de texto con las imágenes y sus etiquetas como en
/home/my_test_dir/picture-foo.jpg 0 /home/my_test_dir/picture-foo1.jpg 1
En mi caso, ya que tengo imágenes de etiquetas múltiples, ¿funciona simplemente agregar etiquetas como sigue?
/home/my_test_dir/picture-foo.jpg 0 2 5 /home/my_test_dir/picture-foo1.jpg 1 4
Tengo la sensación de que probablemente no será tan simple, y si tengo razón, ¿en qué paso y cómo debo integrar el etiquetado múltiple del conjunto de datos en el proceso de configuración de Caffe?
Creo que la respuesta de Shai ya no está actualizada. Caffe es compatible con multi-label / matrix ground truth para formatos HDF5 y LMDB. El fragmento de python en this comentario de github demuestra cómo construir una verdad de fondo LMDB de etiquetas múltiples (consulte la respuesta de Shai para el formato HDF5). A diferencia de la construcción de conjuntos de datos de imagen de etiqueta única, se construye un lmdb para las imágenes, mientras que se construye un segundo lmdb separado para los datos de verdad de fondo de etiquetas múltiples. El fragmento trata sobre la verdad espacial de varias etiquetas, útil para el etiquetado de imágenes en píxeles.
El orden en que se escriben los datos en el lmdb es crucial. El orden de la verdad fundamental debe coincidir con el orden de las imágenes.
Las capas de pérdida como SOFTMAX_LOSS, EUCLIDEAN_LOSS, SIGMOID_CROSS_ENTROPY_LOSS también admiten datos de etiquetas múltiples. Sin embargo, la capa de precisión todavía está limitada a los datos de etiqueta única. Es posible que desee seguir este problema de github para realizar un seguimiento de cuándo se agrega esta función a Caffe.
caffe soporta multilabel. Puede colocar las etiquetas en n-vectores calientes, por ejemplo, [0,1,1,0,0,1, ...]. Debe reformular las etiquetas a los tensores n * k * 1 * 1 y utilizar la entropía cruzada sigmoidea o euclidiana, no softmax (que fuerza la suma (salidas) = 1)