開發平台(Platform): Ubuntu 14.04 QT Creator C++
問題:deep learning 用訓練好的caffemodel分類
參考網站:http://www.cnblogs.com/waring/p/4471183.html
補充說明:
想請問目前我用caffe的程式有將caffemodel訓練出來,然後目前希望可以利用訓練
好的model來做影像的分類,然後我有找到底下的程式代碼來做,但是在閱讀的部分有
困難,想請問是否有人可以給我一些方向,想拜託各位高手,這部分有困擾了一段時間
如果問題闡述不好,再麻煩各位跟我說,謝謝大家。
底下是我想用來做影像分類的程式碼,上述有參考的網站
程式碼(Code):
void Classifier<Dtype>::predict(vector<Mat> &images, vector<int> *labels)
{
int original_length = images.size();
if(original_length == 0)
return;
int valid_length = original_length / batch_size_ * batch_size_;
if(original_length != valid_length)
{
valid_length += batch_size_;
for(int i = original_length; i < valid_length; i++)
{
images.push_back(images[0].clone());
}
}
vector<int> valid_labels, predicted_labels;
valid_labels.resize(valid_length, 0);
m_layer_->AddMatVector(images, valid_labels);
vector<Blob<Dtype>* > bottom_vec;
for(int i = 0; i < valid_length / batch_size_; i++)
{
const vector<Blob<Dtype>*>& result = net_->Forward(bottom_vec);
const Dtype * result_vec = result[1]->cpu_data();
for(int j = 0; j < result[1]->count(); j++)
{
predicted_labels.push_back(result_vec[j]);
}
}
if(original_length != valid_length)
{
images.erase(images.begin()+original_length, images.end());
}
labels->resize(original_length, 0);
std::copy(predicted_labels.begin(), predicted_labels.begin() +
original_length, labels->begin());
}