开发平台(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());
}