From a034d2a7f38cdf6f0a97eae09cba6a87dfaeba3b Mon Sep 17 00:00:00 2001 From: Bert Peters Date: Sat, 7 Oct 2017 17:33:11 +0200 Subject: [PATCH] Add a model loader/simulator that actually loads caffe models. --- src/Makefile | 8 +++----- src/Options.hpp | 2 ++ src/Simulator.cpp | 18 ++++++++++++++++++ src/Simulator.hpp | 22 ++++++++++++++++++++++ src/main.cpp | 9 +++++++++ 5 files changed, 54 insertions(+), 5 deletions(-) create mode 100644 src/Simulator.cpp create mode 100644 src/Simulator.hpp diff --git a/src/Makefile b/src/Makefile index 0a119ff..a2ee7fa 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,15 +1,13 @@ .PHONY: all clean # Compilation settings -CXXFLAGS=-Wall -Wextra -pedantic -std=c++17 -g -O2 -LDLIBS= +CXXFLAGS=-Wall -Wextra -pedantic -std=c++17 -g -O2 -DCPU_ONLY +LDLIBS=-lcaffe -lboost_system -lglog # Project artifacts _EXE=fmri -_OBJECTS=\ - main.o \ - Options.o +_OBJECTS=$(patsubst %.cpp, %.o, $(wildcard *.cpp)) all: fmri diff --git a/src/Options.hpp b/src/Options.hpp index bbca8b4..f32a636 100644 --- a/src/Options.hpp +++ b/src/Options.hpp @@ -1,3 +1,5 @@ +#pragma once + #include #include diff --git a/src/Simulator.cpp b/src/Simulator.cpp new file mode 100644 index 0000000..e06ed45 --- /dev/null +++ b/src/Simulator.cpp @@ -0,0 +1,18 @@ +#include +#include +#include "Simulator.hpp" + +using namespace caffe; +using namespace std; +using namespace fmri; + +Simulator::Simulator(const string& model_file, const string& weights_file) : + net(model_file, TEST) +{ + net.CopyTrainedLayersFrom(weights_file); +} + +void Simulator::simulate(const string& image_file) +{ + cerr << "This is not implemented yet." << endl; +} diff --git a/src/Simulator.hpp b/src/Simulator.hpp new file mode 100644 index 0000000..7587d3e --- /dev/null +++ b/src/Simulator.hpp @@ -0,0 +1,22 @@ +#pragma once + +#include +#include + +#include + +namespace fmri { + using std::string; + + class Simulator { + public: + typedef float DType; + + Simulator(const string& model_file, const string& weights_file); + + void simulate(const string& input_file); + + private: + caffe::Net net; + }; +} diff --git a/src/main.cpp b/src/main.cpp index 3c44257..b829569 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,12 +1,21 @@ #include #include "Options.hpp" +#include "Simulator.hpp" using namespace std; using namespace fmri; int main(int argc, char * const argv[]) { + ::google::InitGoogleLogging(argv[0]); + Options options = Options::parse(argc, argv); + Simulator simulator(options.model(), options.weights()); + + for (const auto& image : options.inputs()) { + simulator.simulate(image); + } + return 0; }