bugfix and made the C++ interface for creating leveldb
authorYangqing Jia <jiayq84@gmail.com>
Sun, 27 Oct 2013 17:11:23 +0000 (10:11 -0700)
committerYangqing Jia <jiayq84@gmail.com>
Sun, 27 Oct 2013 17:11:23 +0000 (10:11 -0700)
Makefile.icsi
examples/convert_imageset.cpp
examples/demo_mnist.cpp
examples/test_read_imagenet.cpp
src/caffe/layers/bnll_layer.cu
src/caffe/util/io.cpp

index 4c8b730..a612cb8 100644 (file)
@@ -44,7 +44,7 @@ MKL_LIB_DIR := $(MKL_DIR)/lib $(MKL_DIR)/lib/intel64
 INCLUDE_DIRS := ./src ./include /u/vis/software/include /usr/local/include $(CUDA_INCLUDE_DIR) $(MKL_INCLUDE_DIR)
 LIBRARY_DIRS := /usr/lib /u/vis/software/lib /usr/local/lib $(CUDA_LIB_DIR) $(MKL_LIB_DIR)
 LIBRARIES := cudart cublas protobuf glog mkl_rt curand \
-               leveldb snappy pthread
+               leveldb snappy pthread opencv_core opencv_highgui
 WARNINGS := -Wall
 
 COMMON_FLAGS := $(foreach includedir,$(INCLUDE_DIRS),-I$(includedir))
index f5ecd4a..c0d410a 100644 (file)
@@ -31,7 +31,7 @@ using std::stringstream;
 int main(int argc, char** argv) {
   ::google::InitGoogleLogging(argv[0]);
   std::ifstream infile(argv[2]);
-  vector<pair<string, int> > lines;
+  std::vector<std::pair<string, int> > lines;
   string filename;
   int label;
   while (infile >> filename >> label) {
index 11d3fc5..8459180 100644 (file)
@@ -53,7 +53,7 @@ int main(int argc, char** argv) {
   SolverParameter solver_param;
   // Solver Parameters are hard-coded in this case, but you can write a
   // SolverParameter protocol buffer to specify all these values.
-  solver_param.set_base_lr(0.01);
+  solver_param.set_base_lr(0.001);
   solver_param.set_display(100);
   solver_param.set_max_iter(5000);
   solver_param.set_lr_policy("inv");
index 7a59ecc..7b61990 100644 (file)
@@ -22,8 +22,7 @@ int main(int argc, char** argv) {
   leveldb::Iterator* it = db->NewIterator(read_options);
   for (it->SeekToFirst(); it->Valid(); it->Next()) {
     // just a dummy operation
-    it->value().ToString();
-    // LOG(ERROR) << it->key().ToString();
+    LOG(ERROR) << it->key().ToString();
     if (++count % 10000 == 0) {
       LOG(ERROR) << "Processed " << count << " files.";
     }
index fd261a3..2c06a63 100644 (file)
@@ -17,7 +17,9 @@ void BNLLLayer<Dtype>::Forward_cpu(const vector<Blob<Dtype>*>& bottom,
   Dtype* top_data = (*top)[0]->mutable_cpu_data();
   const int count = bottom[0]->count();
   for (int i = 0; i < count; ++i) {
-    top_data[i] = log(1. + exp(min(bottom_data[i], Dtype(kBNLL_THRESHOLD))));
+    top_data[i] = bottom_data[i] > 0 ?
+        bottom_data[i] + log(1. + exp(-bottom_data[i])) :
+        log(1. + exp(bottom_data[i]));
   }
 }
 
@@ -43,7 +45,9 @@ template <typename Dtype>
 __global__ void BNLLForward(const int n, const Dtype* in, Dtype* out) {
   int index = threadIdx.x + blockIdx.x * blockDim.x;
   if (index < n) {
-    out[index] = log(1. + exp(min(in[index], Dtype(kBNLL_THRESHOLD))));
+    out[index] = in[index] > 0 ?
+        in[index] + log(1. + exp(-in[index])) :
+        log(1. + exp(in[index]));
   }
 }
 
index 5e5510f..a3c520f 100644 (file)
@@ -67,7 +67,7 @@ void WriteProtoToBinaryFile(const Message& proto, const char* filename) {
 
 
 void ReadImageToDatum(const string& filename, const int label, Datum* datum) {
-  Mat cv_img;
+  cv::Mat cv_img;
   cv_img = cv::imread(filename, CV_LOAD_IMAGE_COLOR);
   CHECK(cv_img.data) << "Could not open or find the image.";
   datum->set_channels(3);
@@ -80,7 +80,7 @@ void ReadImageToDatum(const string& filename, const int label, Datum* datum) {
   for (int c = 0; c < 3; ++c) {
     for (int h = 0; h < cv_img.rows; ++h) {
       for (int w = 0; w < cv_img.cols; ++w) {
-        datum_string->push_back(static_cast<char>(cv_img.at<Vec3b>(h, w)[c]));
+        datum_string->push_back(static_cast<char>(cv_img.at<cv::Vec3b>(h, w)[c]));
       }
     }
   }