summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Shelhamer <shelhamer@imaginarynumber.net>2015-02-06 21:37:54 -0800
committerEvan Shelhamer <shelhamer@imaginarynumber.net>2015-02-06 21:55:35 -0800
commita2fbea3c5ae1b2e9f1fec77c8450c10c33d5b29b (patch)
treeb63cdfc847e15dc0500d628e9cb55a7b53a02f4d
parentabe0fa2602ca1c185eff0580f4f317d970421631 (diff)
downloadcaffeonacl-a2fbea3c5ae1b2e9f1fec77c8450c10c33d5b29b.tar.gz
caffeonacl-a2fbea3c5ae1b2e9f1fec77c8450c10c33d5b29b.tar.bz2
caffeonacl-a2fbea3c5ae1b2e9f1fec77c8450c10c33d5b29b.zip
groom #1416
- keep current `DataTransformer` check so that datums can be transformed into a blob incrementally - standardize check messages - include opencv where needed, drop unneeded OS X guards TODO these tests need to be de-duped
-rw-r--r--include/caffe/data_transformer.hpp4
-rw-r--r--src/caffe/data_transformer.cpp6
-rw-r--r--src/caffe/layers/memory_data_layer.cpp19
-rw-r--r--src/caffe/test/test_memory_data_layer.cpp2
4 files changed, 14 insertions, 17 deletions
diff --git a/include/caffe/data_transformer.hpp b/include/caffe/data_transformer.hpp
index 95062d45..60696c96 100644
--- a/include/caffe/data_transformer.hpp
+++ b/include/caffe/data_transformer.hpp
@@ -60,10 +60,8 @@ class DataTransformer {
* This is destination blob. It can be part of top blob's data if
* set_cpu_data() is used. See memory_layer.cpp for an example.
*/
-#ifndef OSX
void Transform(const vector<cv::Mat> & mat_vector,
Blob<Dtype>* transformed_blob);
-#endif
/**
* @brief Applies the transformation defined in the data layer's
* transform_param block to a cv::Mat
@@ -92,7 +90,7 @@ class DataTransformer {
protected:
/**
* @brief Generates a random integer from Uniform({0, 1, ..., n-1}).
- *
+ *
* @param n
* The upperbound (exclusive) value of the random number.
* @return
diff --git a/src/caffe/data_transformer.cpp b/src/caffe/data_transformer.cpp
index 3e11085e..c0ad72ee 100644
--- a/src/caffe/data_transformer.cpp
+++ b/src/caffe/data_transformer.cpp
@@ -163,8 +163,8 @@ void DataTransformer<Dtype>::Transform(const vector<Datum> & datum_vector,
const int width = transformed_blob->width();
CHECK_GT(datum_num, 0) << "There is no datum to add";
- CHECK_EQ(datum_num, num) <<
- "The size of datum_vector must be equals to transformed_blob->num()";
+ CHECK_LE(datum_num, num) <<
+ "The size of datum_vector must be no greater than transformed_blob->num()";
Blob<Dtype> uni_blob(1, channels, height, width);
for (int item_id = 0; item_id < datum_num; ++item_id) {
int offset = transformed_blob->offset(item_id);
@@ -173,7 +173,6 @@ void DataTransformer<Dtype>::Transform(const vector<Datum> & datum_vector,
}
}
-#ifndef OSX
template<typename Dtype>
void DataTransformer<Dtype>::Transform(const vector<cv::Mat> & mat_vector,
Blob<Dtype>* transformed_blob) {
@@ -193,7 +192,6 @@ void DataTransformer<Dtype>::Transform(const vector<cv::Mat> & mat_vector,
Transform(mat_vector[item_id], &uni_blob);
}
}
-#endif
template<typename Dtype>
void DataTransformer<Dtype>::Transform(const cv::Mat& cv_img,
diff --git a/src/caffe/layers/memory_data_layer.cpp b/src/caffe/layers/memory_data_layer.cpp
index 1669db39..7cb5eafa 100644
--- a/src/caffe/layers/memory_data_layer.cpp
+++ b/src/caffe/layers/memory_data_layer.cpp
@@ -1,3 +1,5 @@
+#include <opencv2/core/core.hpp>
+
#include <vector>
#include "caffe/data_layers.hpp"
@@ -30,12 +32,11 @@ void MemoryDataLayer<Dtype>::DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
template <typename Dtype>
void MemoryDataLayer<Dtype>::AddDatumVector(const vector<Datum>& datum_vector) {
CHECK(!has_new_data_) <<
- "Can't add Datum when earlier ones haven't been consumed"
- << " by the upper layers";
+ "Can't add data until current data has been consumed.";
size_t num = datum_vector.size();
- CHECK_GT(num, 0) << "There is no datum to add";
+ CHECK_GT(num, 0) << "There is no datum to add.";
CHECK_EQ(num % batch_size_, 0) <<
- "The number of added datum must be multiple of the batch size";
+ "The added data must be a multiple of the batch size.";
added_data_.Reshape(num, channels_, height_, width_);
added_label_.Reshape(num, 1, 1, 1);
// Apply data transformations (mirror, scale, crop...)
@@ -56,11 +57,10 @@ void MemoryDataLayer<Dtype>::AddMatVector(const vector<cv::Mat>& mat_vector,
const vector<int>& labels) {
size_t num = mat_vector.size();
CHECK(!has_new_data_) <<
- "Can't add Mat when earlier ones haven't been consumed"
- << " by the upper layers";
- CHECK_EQ(num % batch_size_, 0) <<
- "The number of added datum must be multiple of the batch size";
+ "Can't add mat until current data has been consumed.";
CHECK_GT(num, 0) << "There is no mat to add";
+ CHECK_EQ(num % batch_size_, 0) <<
+ "The added data must be a multiple of the batch size.";
added_data_.Reshape(num, channels_, height_, width_);
added_label_.Reshape(num, 1, 1, 1);
// Apply data transformations (mirror, scale, crop...)
@@ -90,8 +90,7 @@ void MemoryDataLayer<Dtype>::Reset(Dtype* data, Dtype* labels, int n) {
template <typename Dtype>
void MemoryDataLayer<Dtype>::set_batch_size(int new_size) {
CHECK(!has_new_data_) <<
- "Can't change batch_size before all data haven't been consumed"
- << " by the upper layers";
+ "Can't change batch_size until current data has been consumed.";
batch_size_ = new_size;
added_data_.Reshape(batch_size_, channels_, height_, width_);
added_label_.Reshape(batch_size_, 1, 1, 1);
diff --git a/src/caffe/test/test_memory_data_layer.cpp b/src/caffe/test/test_memory_data_layer.cpp
index 6a7bf045..a79033f5 100644
--- a/src/caffe/test/test_memory_data_layer.cpp
+++ b/src/caffe/test/test_memory_data_layer.cpp
@@ -1,3 +1,5 @@
+#include <opencv2/core/core.hpp>
+
#include <string>
#include <vector>