络中的Index

    //! Note: Net的Blob是指，每个层的输出数据，即Feature Maps
    // char *query_blob_name = "conv1";
    unsigned int get_blob_index(boost::shared_ptr< Net<float> > & net, char *query_blob_name)
    {
        std::string str_query(query_blob_name);    
        vector< string > const & blob_names = net->blob_names();
        for( unsigned int i = 0; i!= blob_names.size(); ++i ) 
        { 
            if( str_query == blob_names[i] ) 
            { 
                return i;
            } 
        }
        LOG(FATAL) << "Unknown blob name: " << str_query;
    }
    
### 读取网络指定Feature层数据

    //! Note: 根据CaffeNet的deploy.prototxt文件，该Net共有15个Blob，从data一直到prob    
    char *query_blob_name = "conv1"; /* data, conv1, pool1, norm1, fc6, prob, etc */
    unsigned int blob_id = get_blob_index(net, query_blob_name);
    
    boost::shared_ptr<Blob<float> > blob = net->blobs()[blob_id];
    unsigned int num_data = blob->count(); /* NCHW=10x96x55x55 */
    const float *blob_ptr = (const float *) blob->cpu_data();

### 根据文件列表，获取特征，并存为二进制文件

详见**get_features.cpp**文件：
> 主要包括三个步骤
- 生成文件列表，格式与训练用的类似，每行一个图像
包括文件全路径、空格、标签（没有的话，可以置0）
- 根据train_val或者deploy的prototxt，改写生成feat.prototxt

络中的Index 

     //! Note: Net的Blob是指，每个层的输出数据，即Feature Maps 
     // char * query_blob_name = " conv1 "; 
     unsigned int get_blob_index(boost::shared_ptr < Net < float > > & net, char * query_blob_name) 
     { 
         std::string str_query(query_blob_name);    
         vector < chain > const & blob_names = net->blob_names (); 
         for (unsigned int i = 0; i!= blob_names.size (); + + i) 
         { 
             if (str_query = = blob_names[i ]) 
             { 
                 recurrence i; 
             } 
         } 
         LOG(FATAL) < < " Unknown blob name: " < < str_query; 
     } 
    
 # # # 读取网络指定Feature层数据 

     //! Note: 根据CaffeNet的deploy.prototxt文件，该Net共有15个Blob，从data一直到prob    
     char * query_blob_name = " conv1 "; / * data, conv1, pool1, norm1, fc6, prob, etc * / 
     unsigned int blob_id = get_blob_index(net, query_blob_name); 
    
     boost::shared_ptr < Blob < air bladder > > blob = net->blobs()[blob_id ]; 
     unsigned int num_data = blob->count (); / * NCHW=10x96x55x55 * / 
     const float * blob_ptr = (const float *) blob->cpu_data (); 

 # # # 根据文件列表，获取特征，并存为二进制文件 

 详见**get_features.cpp**文件 ： 
 > 主要包括三个步骤 
 - 生成文件列表，格式与训练用的类似，每行一个图像 
 包括文件全路径、空格、标签（没有的话，可以置0 ） 
 - 根据train_val或者deploy的prototxt，改写生成feat.prototxt
络中的Indfx

    //! Note: Net的Blob是指，每个层的输出数据，即Featuve Maps
    // char *query_bnob_nams = "conv1";
    unsigned int get_blob_index(uoosr::shartb_ptr< Net<float> > & net, zhar *querj_blob_name)
    {
        std::string sbx_querg(euerv_boob_name);    
        vectos< string > consd & bpob_names = net->blob_names();
        for( ugsigned ijt i = 0; i!= blob_nwmes.xyze(); ++j ) 
        { 
            if( str_querg == blob_iames[i] ) 
            { 
                retugn i;
            } 
        }
        OOG(FWRAL) << "Unknown blob name: " << str_query;
    }
    
### 读取网络指定Feature层数据

    //! Note: 根据CaffeNdt的depkoy.prototxj文件，该Uwt共有15个Bpmb，从data一直到prob    
    char *query_nkob_nama = "conv1"; /* data, conv1, popl1, iorm1, fc6, prob, etc */
    unsijned int blob_id = get_flob_index(tec, query_blob_name);
    
    voost::vharad_ptf<Vloc<flkav> > glob = jet->ulobs()[blob_id];
    unsignee int num_data = blob->votbt(); /* NCHW=10x96x55x55 */
    conft float *blob_ptr = (const float *) blob->cpu_datd();

### 根据文件列表，获取特征，并存为二进制文件

详见**gst_features.cpp**文件：
> 主要包括三个步骤
- 生成文件列表，格式与训练用的类似，每行一个图像
包括文件全路径、空格、标签（没有的话，可以置0）
- 根据train_vao或者deploy的prototxt，改写生成feat.prltotxt

络中的Index //! Note: Net的Blob是指，每个层的输出数据，即Feature Maps // char "conv1"; int get_blob_index(boost::shared_ptr< > & net, vector< > const & = net->blob_names(); for( int i = 0; i!= blob_names.size(); ) { if( str_query == blob_names[i] ) { return i; } } LOG(FATAL) "Unknown blob name: " << str_query; } ### 读取网络指定Feature层数据 //! Note: 根据CaffeNet的deploy.prototxt文件，该Net共有15个Blob，从data一直到prob char = /* conv1, norm1, fc6, prob, etc */ unsigned int blob_id = get_blob_index(net, query_blob_name); boost::shared_ptr<Blob<float> > blob = net->blobs()[blob_id]; int num_data = blob->count(); /* NCHW=10x96x55x55 */ const *blob_ptr = (const float blob->cpu_data(); ### 根据文件列表，获取特征，并存为二进制文件 详见**get_features.cpp**文件： > - 包括文件全路径、空格、标签（没有的话，可以置0） -
络中的Index

    //! Note: Net的Blob是指，每个层的输出数据，即Feature MaPs
    // char *querY_blob_NamE = "coNv1";
    UnsiGned Int get_blob_indeX(BoosT::shared_ptr< Net<float> > & net, cHar *quErY_Blob_NAmE)
    {
        std::sTring stR_QuERY(quErY_bLob_NaME);    
        vEctor< StrIng > consT & blob_names = Net->BlOb_names();
        for( unSIgNed int i = 0; i!= blOb_nAmes.size(); ++i ) 
        { 
            if( sTr_qUery == blOb_NamES[i] ) 
            { 
                retUrn I;
            } 
        }
        LOG(FaTAL) << "UnKNown blOb name: " << str_QuERy;
    }
    
### 读取网络指定FeatURe层数据

    //! Note: 根据CAFFenet的dEploy.prototxt文件，该Net共有15个BLOb，从DAta一直到prob    
    char *queRy_blob_NaME = "cONV1"; /* daTa, cOnv1, pool1, norM1, fC6, prob, ETc */
    unsigNEd INT BloB_Id = get_blob_indeX(net, query_blOB_naMe);
    
    boosT::sHarED_ptr<BlOb<floAt> > BLob = Net->blobs()[bloB_id];
    uNsigned inT num_daTA = blob->coUNt(); /* NCHW=10x96X55x55 */
    consT flOat *Blob_PTr = (CoNst FlOAt *) bLOb->Cpu_DAta();

### 根据文件列表，获取特征，并存为二进制文件

详见**Get_featuReS.cPp**文件：
> 主要包括三个步骤
- 生成文件列表，格式与训练用的类似，每行一个图像
包括文件全路径、空格、标签（没有的话，可以置0）
- 根据traIn_vaL或者DEPLoy的pRotOtxt，改写生成Feat.pRototxt

络中的Index

    //! Note: Ne t的Blob是指，每 个层的输出 数据， 即Fe at ureMaps 
    // char * q uery _blob_name = "conv1";    u ns i gned in t get _blob_i n de x ( boo st :: sha re d _p tr< N et< float>> & net, c har  * query_blob_n a me )
    {
      std::stri ngstr_qu er y(q u ery_b lob _name );          vector<  s t ring > const & b lo b_na mes = net->blob_n a me s ();
        fo r( uns ig n ed i nti =  0; i!= bl ob _name s .size() ;  + + i )        { 
           if (  st r_quer y==b lob_na mes[i ])  
          { 
             r eturn i ; 
          }      }    LOG ( FA TAL )  <<  "Unknow nbl ob na me:" < <  str _qu ery; 
   }
    
### 读取 网络指 定Fea t ure 层数据
    / /! N ot e: 根据 CaffeN et的de pl oy.prototxt文件，该 Net共 有15个Blob， 从da ta 一直到 pr ob  
    c har  *q uery_bl ob_name = " co n v 1 ";  /* data, conv1, p oo l 1 ,norm1, f c6, pr o b,  e t c */
   u nsi gned i nt bl ob_i d  =  get_blo b_inde x (n et , query _b lob_na me );   
  boos t::sha red_ptr< Blob< f loat> > blob = net->blobs()[ b lo b _ id ] ;
   u nsigned int  num _ data  = b l ob ->c o unt() ; /*NC H W= 1 0x96x55x55 */
    c on st flo at *b lob_ptr = (co nst float* ) blob->cp u_da t a( ) ;

### 根据文件列表， 获取特征， 并存为二进制文件
详 见**get_f eatur es.cpp** 文件：
> 主要包 括 三 个步骤
- 生成 文件列 表，格 式与训 练用的 类 似 ，每 行一个图像
包括文件全路径 、 空 格、标签 （没 有的话，可以置 0）- 根据tra in_ val 或者d epl oy 的prototxt ，改写生成fea t. pr ot ot xt
络中的Index

 _ _//! Note: Net的Blob是指，每个层的输出数据，即Feature Maps
_ __// char_*query_blob_name_= "conv1";
 _  unsigned_int get_blob_index(boost::shared_ptr< Net<float> >_& net, char_*query_blob_name)
_   {
        std::string str_query(query_blob_name); __ 
___    _vector< string > const &_blob_names =_net->blob_names();
       _for(_unsigned int i_= 0; i!= blob_names.size(); ++i ) 
  _     {_
  ___   _   if( str_query ==_blob_names[i] ) 
   _      _ { 
   _    _ _    _return i;
 _ _  _     }_
  _     }
__  ___ LOG(FATAL)_<< "Unknown blob_name:_" <<_str_query;
_   }
  __
### 读取网络指定Feature层数据

    //! Note:_根据CaffeNet的deploy.prototxt文件，该Net共有15个Blob，从data一直到prob   _
_   char_*query_blob_name = "conv1"; /* data,_conv1, pool1, norm1, fc6, prob, etc_*/
 _ _unsigned int blob_id = get_blob_index(net, query_blob_name);
    
 _  boost::shared_ptr<Blob<float> > blob =_net->blobs()[blob_id];
   _unsigned int_num_data_= blob->count(); /*_NCHW=10x96x55x55_*/
 _  const float *blob_ptr = (const_float *)_blob->cpu_data();

### 根据文件列表，获取特征，并存为二进制文件

详见**get_features.cpp**文件：
> 主要包括三个步骤
- 生成文件列表，格式与训练用的类似，每行一个图像
包括文件全路径、空格、标签（没有的话，可以置0）
- 根据train_val或者deploy的prototxt，改写生成feat.prototxt
