#ifndef CAFFE_IMAGE_DATA_LAYER_HPP_ #define CAFFE_IMAGE_DATA_LAYER_HPP_ #include #include #include #include "caffe/blob.hpp" #include "caffe/data_transformer.hpp" #include "caffe/internal_thread.hpp" #include "caffe/layer.hpp" #include "caffe/layers/base_data_layer.hpp" #include "caffe/proto/caffe.pb.h" namespace caffe { /** * @brief Provides data to the Net from image files. * * TODO(dox): thorough documentation for Forward and proto params. */ template class ImageDataLayer : public BasePrefetchingDataLayer { public: explicit ImageDataLayer(const LayerParameter& param) : BasePrefetchingDataLayer(param) {} virtual ~ImageDataLayer(); virtual void DataLayerSetUp(const vector*>& bottom, const vector*>& top); virtual inline const char* type() const { return "ImageData"; } virtual inline int ExactNumBottomBlobs() const { return 0; } virtual inline int ExactNumTopBlobs() const { return 2; } protected: shared_ptr prefetch_rng_; virtual void ShuffleImages(); virtual void load_batch(Batch* batch); vector > lines_; int lines_id_; }; } // namespace caffe #endif // CAFFE_IMAGE_DATA_LAYER_HPP_