#ifndef __NNTRAINER_DSM_H__
#define __NNTRAINER_DSM_H__
-#include <iostream>
-#include <fstream>
-#include <vector>
+
+#include <string>
#include "feature_vector_manager.h"
#include "data_set_manager.h"
public:
NNTrainerDSM();
- ~NNTrainerDSM();
+ ~NNTrainerDSM() = default;
- void LoadDataSet(const std::string file_name);
+ void LoadDataSet(const std::string file_name) override;
};
#endif
\ No newline at end of file
#define __NNTRAINER_FVM_H__
#include <string.h>
-#include <iostream>
-#include <fstream>
-#include <istream>
-#include <algorithm>
#include <vector>
-#include <map>
#include "feature_vector_manager.h"
#include "file_util.h"
class NNTrainerFVM : public FeatureVectorManager {
public:
NNTrainerFVM(const std::string feature_vector_file = "feature_vector_file.dat");
- ~NNTrainerFVM();
+ ~NNTrainerFVM() = default;
- void WriteHeader(size_t feature_size, size_t one_hot_table_size, unsigned int data_set_cnt);
- void ReadHeader(FeaVecHeader& header);
- void WriteFeatureVec(std::vector<float>& feature_vec, const int max_label, const int label_index);
+ void WriteHeader(size_t feature_size, size_t one_hot_table_size, unsigned int data_set_cnt) override;
+ void ReadHeader(FeaVecHeader& header) override;
+ void WriteFeatureVec(std::vector<float>& feature_vec, const int max_label, const int label_index) override;
};
#endif
\ No newline at end of file
#include <dlog.h>
#include <mv_private.h>
+#include <algorithm>
#include "machine_learning_exception.h"
#include "nntrainer_dsm.h"
LOGD("data set count = %u", fvh.data_set_cnt);
}
-NNTrainerDSM::NNTrainerDSM() : DataSetManager()
-{
-
-}
-
-NNTrainerDSM::~NNTrainerDSM()
+NNTrainerDSM::NNTrainerDSM()
+ : DataSetManager()
{
}
void NNTrainerDSM::LoadDataSet(const string file_name)
{
- std::ifstream openFile(file_name);
+ std::ifstream inFile(file_name);
- if (!openFile.is_open())
+ if (!inFile.is_open())
throw InvalidOperation("fail to open a file.");
// Feature vector file header is written at the end of the data file
// So read feature vector header from the end of the file.
- openFile.seekg(static_cast<int>(sizeof(FeaVecHeader)) * -1, ios::end);
+ inFile.seekg(static_cast<int>(sizeof(FeaVecHeader)) * -1, ios::end);
FeaVecHeader fvh;
- openFile.read((char *)&fvh, sizeof(FeaVecHeader));
- if (openFile.gcount() != sizeof(FeaVecHeader)) {
- openFile.close();
+ inFile.read((char *)&fvh, sizeof(FeaVecHeader));
+ if (inFile.gcount() != sizeof(FeaVecHeader))
throw InvalidOperation("Invalid feature vector file.");
- }
- openFile.seekg(0, ios::beg);
+ inFile.seekg(0, ios::beg);
PrintHeader(fvh);
- if (feature_vector_signature != fvh.signature) {
- openFile.close();
+ if (FeatureVectorManager::feature_vector_signature != fvh.signature)
throw InvalidOperation("Wrong feature vector header.");
- }
- size_t line_size_in_bytes = fvh.feature_size * 4 + fvh.one_hot_table_size * 4;
+ size_t line_size_in_bytes = fvh.feature_size * sizeof(float) +
+ fvh.one_hot_table_size * sizeof(float);
_feature_vector_size = fvh.feature_size;
_label_size = fvh.one_hot_table_size;
vector<float> line_data(fvh.feature_size + fvh.one_hot_table_size);
for (size_t idx = 0; idx < fvh.data_set_cnt; ++idx) {
- openFile.read((char *)line_data.data(), line_size_in_bytes);
+ inFile.read((char *)line_data.data(), line_size_in_bytes);
vector<float> data;
copy_n(line_data.begin(), _feature_vector_size, back_inserter(data));
_labels.push_back(label);
_label_index.push_back(label_idx);
}
-
- openFile.close();
}
\ No newline at end of file
* limitations under the License.
*/
+#include <fstream>
+
#include "machine_learning_exception.h"
#include "nntrainer_fvm.h"
using namespace std;
using namespace Mediavision::MachineLearning::Exception;
-NNTrainerFVM::NNTrainerFVM(const string feature_vector_file) : FeatureVectorManager(feature_vector_file)
-{
-
-}
-
-NNTrainerFVM::~NNTrainerFVM()
+NNTrainerFVM::NNTrainerFVM(const string feature_vector_file)
+ : FeatureVectorManager(feature_vector_file)
{
}
void NNTrainerFVM::WriteHeader(size_t feature_size, size_t one_hot_table_size, unsigned int data_set_cnt)
{
- ofstream writeFile;
+ ofstream outFile {
+ _feature_vector_file,
+ ios::out | ios::binary | ios::app
+ };
- writeFile.open(_feature_vector_file.c_str(), ios::out | ios::binary | ios::app);
- if (!writeFile.is_open())
+ if (!outFile.is_open())
throw InvalidOperation("fail to open a file");
- FeaVecHeader header = { feature_vector_signature, feature_size, one_hot_table_size, data_set_cnt };
-
- writeFile.write((char *)&header, sizeof(FeaVecHeader));
+ FeaVecHeader fvHeader {
+ FeatureVectorManager::feature_vector_signature,
+ feature_size,
+ one_hot_table_size,
+ data_set_cnt
+ };
- writeFile.close();
+ outFile.write((char *)&fvHeader, sizeof(FeaVecHeader));
}
void NNTrainerFVM::ReadHeader(FeaVecHeader& header)
{
- ifstream openFile(_feature_vector_file.c_str(), ios::in | ios::binary);
+ ifstream inFile {
+ _feature_vector_file,
+ ios::in | ios::binary
+ };
- if (!openFile.is_open())
+ if (!inFile.is_open())
throw InvalidOperation("fail to open a file.");
- openFile.seekg(static_cast<int>(sizeof(FeaVecHeader) * -1), ios::end);
+ inFile.seekg(static_cast<int>(sizeof(FeaVecHeader) * -1), ios::end);
- openFile.read((char *)&header, sizeof(FeaVecHeader));
- if (openFile.gcount() != sizeof(FeaVecHeader)) {
- openFile.close();
+ inFile.read((char *)&header, sizeof(FeaVecHeader));
+ if (inFile.gcount() != sizeof(FeaVecHeader))
throw InvalidOperation("Invalid feature vector file.");
- }
- openFile.close();
-
- if (header.signature != feature_vector_signature)
+ if (header.signature != FeatureVectorManager::feature_vector_signature)
throw InvalidParameter("wrong feature vector file header.");
}
void NNTrainerFVM::WriteFeatureVec(vector<float>& feature_vec, const int max_label, const int label_index)
{
- ofstream writeFile;
-
- writeFile.open(_feature_vector_file.c_str(), ios::out | ios::binary | ios::app);
+ ofstream outFile {
+ _feature_vector_file,
+ ios::out | ios::binary | ios::app
+ };
- if (!writeFile.is_open())
+ if (!outFile.is_open())
throw InvalidOperation("fail to open a file.");
- size_t img_size = feature_vec.size() * 4;
- vector<char> pBuffer(img_size);
-
- memcpy(pBuffer.data(), feature_vec.data(), img_size);
- writeFile.write(pBuffer.data(), img_size);
+ vector<char> byteBuffer(feature_vec.size() * sizeof(float));
+ memcpy(byteBuffer.data(), feature_vec.data(), byteBuffer.size());
+ outFile.write(byteBuffer.data(), byteBuffer.size());
for (int idx = 0; idx < max_label; ++idx) {
- float one_hot_table = 0.0f;
-
- if (label_index == idx)
- one_hot_table = 1.0f;
-
- writeFile.write((char *)&one_hot_table, sizeof(float));
+ float oneHotTable = (label_index == idx) ? 1.0f : 0.0f;
+ outFile.write((char *)&oneHotTable, sizeof(float));
}
-
- writeFile.close();
}
#ifndef __FEATURE_VECTOR_MANAGER_H__
#define __FEATURE_VECTOR_MANAGER_H__
-#include <string.h>
-#include <iostream>
-#include <fstream>
-#include <istream>
-#include <algorithm>
+#include <string>
#include <vector>
-#include <map>
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include "file_util.h"
-static const unsigned int feature_vector_signature = 0xFEA09841;
-
typedef struct {
unsigned int signature;
size_t feature_size;
public:
FeatureVectorManager(const std::string feature_vector_file = "feature_vector_file.dat");
- virtual ~FeatureVectorManager();
+ virtual ~FeatureVectorManager() = default;
const std::string& GetFileName();
+
static void GetVecFromImg(const std::string image_file, std::vector<float>& vec, int width, int height);
static void GetVecFromRGB(unsigned char *in_data, std::vector<float>& vec, int width, int height,
int re_width, int re_height);
static void GetVecFromXRGB(unsigned char *in_data, std::vector<float>& vec,
int in_width, int in_height, int re_width, int re_height);
- virtual void WriteHeader(size_t feature_size, size_t one_hot_table_size, unsigned int data_set_cnt);
- virtual void ReadHeader(FeaVecHeader& header);
- virtual void WriteFeatureVec(std::vector<float>& feature_vec, const int max_label, const int label_index);
+ virtual void WriteHeader(size_t feature_size, size_t one_hot_table_size, unsigned int data_set_cnt) = 0;
+ virtual void ReadHeader(FeaVecHeader& header) = 0;
+ virtual void WriteFeatureVec(std::vector<float>& feature_vec, const int max_label, const int label_index) = 0;
+
+ static constexpr unsigned int feature_vector_signature = 0xFEA09841;
};
#endif
\ No newline at end of file
using namespace std;
using namespace Mediavision::MachineLearning::Exception;
-FeatureVectorManager::FeatureVectorManager(const string feature_vector_file) : _feature_vector_file(feature_vector_file)
+FeatureVectorManager::FeatureVectorManager(const string feature_vector_file)
+ : _feature_vector_file(feature_vector_file)
{
-
}
-FeatureVectorManager::~FeatureVectorManager()
+const string& FeatureVectorManager::GetFileName()
{
-
-}
-
-const string& FeatureVectorManager::GetFileName() {
return _feature_vector_file;
}
dst /= 127.5f;
vec.assign((float *)dst.data, (float *)dst.data + dst.total() * dst.channels());
-}
-
-void FeatureVectorManager::WriteHeader(size_t feature_size, size_t one_hot_table_size, unsigned int data_set_cnt)
-{
- WriteHeader(feature_size, one_hot_table_size, data_set_cnt);
-}
-
-void FeatureVectorManager::ReadHeader(FeaVecHeader& header)
-{
- ReadHeader(header);
-}
-
-void FeatureVectorManager::WriteFeatureVec(vector<float>& feature_vec, const int max_label, const int label_index)
-{
- WriteFeatureVec(feature_vec, max_label, label_index);
}
\ No newline at end of file
Name: capi-media-vision
Summary: Media Vision library for Tizen Native API
-Version: 0.19.3
+Version: 0.19.4
Release: 0
Group: Multimedia/Framework
License: Apache-2.0 and BSD-3-Clause