• 大小: 1MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-01
  • 语言: 其他
  • 标签: caffeSSDQT  

资源简介

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\layer.hpp

     文件       2343  2018-01-02 11:07  Caffe_SSD\source\include\caffe\layers\absval_layer.hpp

     文件       3352  2018-01-02 11:07  Caffe_SSD\source\include\caffe\layers\accuracy_layer.hpp

     文件       1309  2018-01-02 11:07  Caffe_SSD\source\include\caffe\layers\annotated_data_layer.hpp

     文件       2727  2018-01-02 11:07  Caffe_SSD\source\include\caffe\layers\argmax_layer.hpp

     文件       6692  2018-01-02 11:07  Caffe_SSD\source\include\caffe\layers\base_conv_layer.hpp

     文件       2948  2018-01-02 11:07  Caffe_SSD\source\include\caffe\layers\base_data_layer.hpp

     文件       3025  2018-01-02 11:07  Caffe_SSD\source\include\caffe\layers\batch_norm_layer.hpp

     文件       2825  2018-01-02 11:07  Caffe_SSD\source\include\caffe\layers\batch_reindex_layer.hpp

     文件       1875  2018-01-02 11:07  Caffe_SSD\source\include\caffe\layers\bias_layer.hpp

     文件       2307  2018-01-02 11:07  Caffe_SSD\source\include\caffe\layers\bnll_layer.hpp

     文件       3130  2018-01-02 11:07  Caffe_SSD\source\include\caffe\layers\concat_layer.hpp

     文件       4076  2018-01-02 11:07  Caffe_SSD\source\include\caffe\layers\contrastive_loss_layer.hpp

     文件       3930  2018-01-02 11:07  Caffe_SSD\source\include\caffe\layers\conv_layer.hpp

     文件       2802  2018-01-02 11:07  Caffe_SSD\source\include\caffe\layers\crop_layer.hpp

............此处省略390个文件信息

评论

共有 条评论

相关资源