资源简介
SSD源码阅读的时候,我对SSD源码创建了QT工程,这样方便阅读,提高阅读效率
代码片段和文件信息
#include “Classifier.h“
Classifier::Classifier(const string& deploy_file
const string& caffe_model_file
const string& label_file
const string& mean_file) {
#ifdef CPU_ONLY
Caffe::set_mode(Caffe::CPU);
#else
Caffe::set_mode(Caffe::GPU);
#endif
/* Load the network. */
// 此时已经给网络中所有的Blob分配好了内存空间
net_.reset(new Net(deploy_file TEST)); // 加载网络参数,deploy.prototxt
net_->CopyTrainedlayersFrom(caffe_model_file); // 加载权值参数,snapshot_iter_38680.caffemodel
CHECK_EQ(net_->num_inputs() 1) << “Network should have exactly one input.“;
CHECK_EQ(net_->num_outputs() 1) << “Network should have exactly one output.“;
// 第0个Blob就是数据层(输入层)
Blob* input_layer = net_->input_blobs()[0];
num_channels_ = input_layer->channels();
CHECK(num_channels_ == 3 || num_channels_ == 1)
<< “Input layer should have 1 or 3 channels.“;
input_geometry_ = cv::Size(input_layer->width() input_layer->height());
/* Load the binaryproto mean file. */
if(mean_file.empty()||mean_file.size()==0)
{
mean_ = cv::Mat(input_geometry_ CV_MAKETYPE(CV_32FC1num_channels_) Scalar(000));
}
else
{
SetMean(mean_file);
}
/* Load labels. */
std::ifstream labels(label_file.c_str());
CHECK(labels) << “Unable to open labels file “ << label_file;
string line;
while (std::getline(labels line))
labels_.push_back(string(line));
// 第一个输出Blob对于分类,就是最后输出的类别数
Blob* output_layer = net_->output_blobs()[0];
// channels就表示类别数
CHECK_EQ(labels_.size() output_layer->channels())
<< “Number of labels is different from the output layer dimension.“;
}
static bool PairCompare(const std::pair& lhs
const std::pair& rhs) {
return lhs.first > rhs.first;
}
/* Return the indices of the top N values of vector v. */
static std::vector Argmax(const std::vector& v int N) {
std::vector > pairs;
for (size_t i = 0; i < v.size(); ++i)
pairs.push_back(std::make_pair(v[i] static_cast(i)));
// 对第一个到第三个参数当中的前N个大(或者小)的数进行排序(后面的就不管了),N的个数由第二个参数与第一个参数的差决定。
std::partial_sort(pairs.begin() pairs.begin() + N pairs.end() PairCompare);
std::vector result;
for (int i = 0; i < N; ++i)
result.push_back(pairs[i].second);
return result;
}
/* 步骤:
* 1. Mat经过预处理(灰度化,缩放为网络数据层大小,转换为float 减去均值)输入数据层Blob(即转化为数据层Blob)
* 2. 网络前向转播,获取输出Blob
*
*/
/* Return the top N predictions. */
std::vector Classifier::Classify(const cv::Mat& img int N)
{
std::vector output = Predict(img);
N = std::min(labels_.size() N);
std::vector maxN = Argmax(output N);
std::vector predictions;
for (int i = 0; i < N; ++i) {
int idx = maxN[i];
predictions.push_back(std::make_pair(labels_[idx] output[idx]));
}
r
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 18012 2018-04-26 23:09 Caffe_SSD\Caffe_SSD.pro
文件 18707 2018-03-10 18:49 Caffe_SSD\Caffe_SSD.pro.user
文件 18693 2018-03-03 17:10 Caffe_SSD\Caffe_SSD.pro.user.42a87c0
文件 23780 2018-03-02 21:32 Caffe_SSD\Caffe_SSD.pro.user.6fd70a7
文件 8229 2017-06-26 14:21 Caffe_SSD\Classifier.cpp
文件 1094 2018-03-02 22:50 Caffe_SSD\Classifier.h
文件 7610 2018-04-26 23:11 Caffe_SSD\convert_annoset.cpp
文件 4552 2018-04-26 23:11 Caffe_SSD\main.cpp
文件 9378 2018-01-02 11:07 Caffe_SSD\source\include\caffe\blob.hpp
文件 634 2018-01-02 11:07 Caffe_SSD\source\include\caffe\caffe.hpp
文件 6179 2018-01-02 11:07 Caffe_SSD\source\include\caffe\common.hpp
文件 2161 2018-01-02 11:07 Caffe_SSD\source\include\caffe\data_reader.hpp
文件 9001 2018-01-02 11:07 Caffe_SSD\source\include\caffe\data_transformer.hpp
文件 10935 2018-01-02 11:07 Caffe_SSD\source\include\caffe\filler.hpp
文件 1382 2018-01-02 11:07 Caffe_SSD\source\include\caffe\internal_thread.hpp
文件 18495 2018-01-02 11:07 Caffe_SSD\source\include\caffe\la
文件 2343 2018-01-02 11:07 Caffe_SSD\source\include\caffe\la
文件 3352 2018-01-02 11:07 Caffe_SSD\source\include\caffe\la
文件 1309 2018-01-02 11:07 Caffe_SSD\source\include\caffe\la
文件 2727 2018-01-02 11:07 Caffe_SSD\source\include\caffe\la
文件 6692 2018-01-02 11:07 Caffe_SSD\source\include\caffe\la
文件 2948 2018-01-02 11:07 Caffe_SSD\source\include\caffe\la
文件 3025 2018-01-02 11:07 Caffe_SSD\source\include\caffe\la
文件 2825 2018-01-02 11:07 Caffe_SSD\source\include\caffe\la
文件 1875 2018-01-02 11:07 Caffe_SSD\source\include\caffe\la
文件 2307 2018-01-02 11:07 Caffe_SSD\source\include\caffe\la
文件 3130 2018-01-02 11:07 Caffe_SSD\source\include\caffe\la
文件 4076 2018-01-02 11:07 Caffe_SSD\source\include\caffe\la
文件 3930 2018-01-02 11:07 Caffe_SSD\source\include\caffe\la
文件 2802 2018-01-02 11:07 Caffe_SSD\source\include\caffe\la
............此处省略390个文件信息
- 上一篇:ispLEVER2.0
- 下一篇:LBP+SVM实验数据
评论
共有 条评论