J'utilise la couche hdf5 pour la classification vidéo (C3D). Ceci est mon code pour générer un fichier hdf5Classification vidéo utilisant HDF5 dans CAFFE?
import h5py
import numpy as np
import skvideo.datasets
import skvideo.io
videodata = skvideo.io.vread('./v_ApplyEyeMakeup_g01_c01.avi')
videodata=videodata.transpose(3,0,1,2) # To chanelxdepthxhxw
videodata=videodata[None,:,:,:]
with h5py.File('./data.h5','w') as f:
f['data'] = videodata
f['label'] = 1
Maintenant, le data.h5
est enregistré dans le fichier video.list
. J'effectue la classification en fonction de la prototxt
layer {
name: "data"
type: "HDF5Data"
top: "data"
top: "label"
include {
phase: TRAIN
}
hdf5_data_param {
source: "./video.list"
batch_size: 1
shuffle: true
}
}
layer {
name: "conv1a"
type: "Convolution"
bottom: "data"
top: "conv1a"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 32
pad: 1
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
bias_filler {
type: "constant"
value: -0.1
}
axis: 1
}
}
layer {
name: "fc8"
type: "InnerProduct"
bottom: "conv1a"
top: "fc8"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
inner_product_param {
num_output: 101
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
name: "loss"
type: "SoftmaxWithLoss"
bottom: "fc8"
bottom: "label"
top: "loss"
}
Cependant, je suis l'erreur comme
I0918 22:29:37.163431 32197 hdf5.cpp:35] Datatype class: H5T_INTEGER
F0918 22:29:37.164500 32197 blob.hpp:122] Check failed: axis_index < num_axes() (1 vs. 1) axis 1 out of range for 1-D Blob with shape 6 (6)
Mise à jour: Quand je change le code comme f['label'] = 1
, j'ai aussi eu l'erreur F0918 23:04:39.884270 2138 hdf5.cpp:21] Check failed: ndims >= min_dim (0 vs. 1)
Comment dois-je fixer il? Je suppose que la partie génératrice hdf5 a une erreur dans le champ label. Merci à tous
Merci, Shai. Bien sûr, je vérifie l'étiquette comme 'label = 1' avant et j'ai l'erreur' Check failed: ndims> = min_dim (0 vs. 1) '. Laissez voir ma question de mise à jour – user8264
@ user8264 s'il vous plaît voir mon edit. – Shai
Vous avez raison. Cela a fonctionné maintenant. Merci beaucoup. Qu'est-ce qui se passe si j'ai 6 étiquettes. Par exemple, vidéo 1-> label 1, video2-> label 2 et ainsi de suite – user8264