資源簡介
caffe實現triplet loss,博客說明:http://blog.csdn.net/gu_gu_/article/details/56282299
代碼片段和文件信息
#ifdef?USE_OPENCV
#include?
#endif??//?USE_OPENCV
#include?
#include?
#include?“caffe/data_transformer.hpp“
#include?“caffe/util/io.hpp“
#include?“caffe/util/math_functions.hpp“
#include?“caffe/util/rng.hpp“
namespace?caffe?{
template
DataTransformer::DataTransformer(const?TransformationParameter&?param
????Phase?phase)
????:?param_(param)?phase_(phase)?{
??//?check?if?we?want?to?use?mean_file
??if?(param_.has_mean_file())?{
????CHECK_EQ(param_.mean_value_size()?0)?<<
??????“Cannot?specify?mean_file?and?mean_value?at?the?same?time“;
????const?string&?mean_file?=?param.mean_file();
????if?(Caffe::root_solver())?{
??????LOG(INFO)?<“Loading?mean?file?from:?“?<????}
????BlobProto?blob_proto;
????ReadProtoFromBinaryFileOrDie(mean_file.c_str()?&blob_proto);
????data_mean_.FromProto(blob_proto);
??}
??//?check?if?we?want?to?use?mean_value
??if?(param_.mean_value_size()?>?0)?{
????CHECK(param_.has_mean_file()?==?false)?<<
??????“Cannot?specify?mean_file?and?mean_value?at?the?same?time“;
????for?(int?c?=?0;?c???????mean_values_.push_back(param_.mean_value(c));
????}
??}
}
template
void?DataTransformer::Transform(const?Datum&?datum
???????????????????????????????????????Dtype*?transformed_data)?{
??const?string&?data?=?datum.data();
??const?int?datum_channels?=?datum.channels();
??const?int?datum_height?=?datum.height();
??const?int?datum_width?=?datum.width();
??const?int?crop_size?=?param_.crop_size();
??const?Dtype?scale?=?param_.scale();
??const?bool?do_mirror?=?param_.mirror()?&&?Rand(2);
??const?bool?has_mean_file?=?param_.has_mean_file();
??const?bool?has_uint8?=?data.size()?>?0;
??const?bool?has_mean_values?=?mean_values_.size()?>?0;
??CHECK_GT(datum_channels?0);
??CHECK_GE(datum_height?crop_size);
??CHECK_GE(datum_width?crop_size);
??Dtype*?mean?=?NULL;
??if?(has_mean_file)?{
????CHECK_EQ(datum_channels?data_mean_.channels());
????CHECK_EQ(datum_height?data_mean_.height());
????CHECK_EQ(datum_width?data_mean_.width());
????mean?=?data_mean_.mutable_cpu_data();
??}
??if?(has_mean_values)?{
????CHECK(mean_values_.size()?==?1?||?mean_values_.size()?==?datum_channels)?<<
?????“Specify?either?1?mean_value?or?as?many?as?channels:?“?<????if?(datum_channels?>?1?&&?mean_values_.size()?==?1)?{
??????//?Replicate?the?mean_value?for?simplicity
??????for?(int?c?=?1;?c?????????mean_values_.push_back(mean_values_[0]);
??????}
????}
??}
??int?height?=?datum_height;
??int?width?=?datum_width;
??int?h_off?=?0;
??int?w_off?=?0;
??if?(crop_size)?{
????height?=?crop_size;
????width?=?crop_size;
????//?We?only?do?random?crop?when?we?do?training.
????if?(phase_?==?TRAIN)?{
??????h_off?=?Rand(datum_height?-?crop_size?+?1);
??????w_off?=?Rand(datum_width?-?crop_size?+?1);
????}?else?{
??????h_off?=?(datum_height?-?crop_size)?/?2;
??????w_off?=?(datum_width?-?crop_size)?/?2;
??
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????57946??2017-02-17?19:43??triplet_loss\caffe.proto
?????文件???????19121??2017-02-17?20:18??triplet_loss\data_transformer.cpp
?????文件????????5055??2017-02-19?21:07??triplet_loss\my_triplet_loss_la
?????文件????????1345??2017-01-12?15:59??triplet_loss\my_triplet_loss_la
?????文件????????1895??2017-01-12?15:23??triplet_loss\my_triplet_select_la
?????文件????????1033??2016-11-09?17:01??triplet_loss\my_triplet_select_la
?????文件????????2604??2017-02-21?13:27??triplet_loss\train_bodynet.prototxt
?????目錄???????????0??2017-02-21?14:28??triplet_loss\
- 上一篇:數據結構張琨版課后習題答案
- 下一篇:RotationWatcher;apk
評論
共有 條評論