Caffe zwei Klasse Multi Label Klassifizierung mit hdf5

Ich habe die folgende Struktur in einer .txt-Datei:

/path/to/image xy /path/to/image xy 

Wobei x und y ganze Zahlen sind.

Was ich jetzt machen möchte, ist: Erstellen Sie eine hdf5-Datei, die in Caffe verwendet werden soll ( 'train.prototxt' )

Mein Python-Code sieht so aus:

 import h5py, os import caffe import numpy as np SIZE = 256 with open( 'train.txt', 'r' ) as T : lines = T.readlines() count_files = 0 split_after = 1000 count = -1 # If you do not have enough memory split data into # multiple batches and generate multiple separate h5 files X = np.zeros( (split_after, 3, SIZE, SIZE), dtype='f4' ) y1 = np.zeros( (split_after, 1), dtype='f4' ) y2 = np.zeros( (split_after, 1), dtype='f4' ) for i,l in enumerate(lines): count += 1 sp = l.split(' ') img = caffe.io.load_image( sp[0] ) img = caffe.io.resize( img, (3, SIZE, SIZE) ) X[count] = img y1[count] = float(sp[1]) y2[count] = float(sp[2]) if (count+1) == split_after: with h5py.File('train_' + str(count_files) + '.h5','w') as H: H.create_dataset( 'X', data=X ) # note the name X given to the dataset! H.create_dataset( 'y1', data=y1 ) H.create_dataset( 'y2', data=y2 ) X = np.zeros( (split_after, 3, SIZE, SIZE), dtype='f4' ) y1 = np.zeros( (split_after, 1), dtype='f4' ) y2 = np.zeros( (split_after, 1), dtype='f4' ) with open('train_h5_list.txt','a') as L: L.write( 'train_' + str(count_files) + '.h5') # list all h5 files you are going to use count_files += 1 count = 0 

In der Tat möchte ich die Winkel abschätzen. Das heißt, ich habe zwei Klassen eins für vertikale Winkel eins für horizontale Winkel. Die erste Klasse reicht von 0-10 Grad der zweite von 10-20 und so weiter (für horizontale und vertikale Winkel).

Wie würde das .prototxt aussehen? Hier sind meine letzten Schichten

 layer { name: "fc8" type: "InnerProduct" bottom: "fc7" top: "fc8" param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } inner_product_param { num_output: 36 weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } } layer { name: "loss" type: "SoftmaxWithLoss" bottom: "fc8" bottom: "y" top: "loss" } 

One Solution collect form web for “Caffe zwei Klasse Multi Label Klassifizierung mit hdf5”

Sie müssen auch die Eingabeschicht ändern: jetzt haben Sie drei top :

 layer { type: "HDF5Data" name: "data" top: "X" top: "y1" top: "y2" # ... params and phase } 

Nun, die top deines fc7 dient als "high level deskriptor" deiner Daten, von dem du y1 und y2 vorhersagen y2 . Also, nach Schicht fc7 du:

 layer { type: "InnerProduct" name: "class_y1" bottom: "fc7" top: "class_y1" #... params num_output: 36 } layer { type: "SoftmaxWithLoss" # to be replaced with "Softmax" in deploy name: "loss_y1" bottom: "class_y1" bottom: "y1" top: "loss_y1" # optionally, loss_weight } 

Und:

 layer { type: "InnerProduct" name: "class_y2" bottom: "fc7" top: "class_y2" #... params num_output: 36 } layer { type: "SoftmaxWithLoss" # to be replaced with "Softmax" in deploy name: "loss_y2" bottom: "class_y2" bottom: "y2" top: "loss_y2" # optionally, loss_weight } 
  • Tensorflow Slim Debugging während des Trainings
  • Wie fügt man Regelungen in TensorFlow hinzu?
  • Wie effektiv bewerben Gradienten-Clipping in Tensor-Flow?
  • Aktivierungsfunktionsfehler in einem 1D CNN in Keras
  • Was sieht die negative Log-Wahrscheinlichkeit der logistischen Regression in theano aus?
  • Den letzten Wert der LSTM-Sequenz in Tensorflow abrufen
  • Verwirrt über Tensorabmessungen und Chargengrößen in pytorch
  • Verstehen des LSTM-Modells mit Tensorflow für die Stimmungsanalyse
  • Wie man genau L1 Regularisierung der Tensorflow-Fehlerfunktion hinzufügt
  • Wie kann ich Datenschicht (HDF5) für Training und Test im gleichen Prototxt generieren?
  • Tensorflow Inception_Resnet_V2 Bild klassifizieren
  • Python ist die beste Programmiersprache der Welt.