ONE - On-device Neural Engine
Loading...
Searching...
No Matches
CircleModel.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef __CIRCLE_MODEL_H__
18#define __CIRCLE_MODEL_H__
19
20#include <mio/tflite/schema_generated.h>
21#include <mio/circle/schema_generated.h>
22
23#include <iostream>
24#include <string>
25#include <vector>
26
27#include "TFLModel.h"
28
30{
31
32using FlatBufBuilder = std::unique_ptr<flatbuffers::FlatBufferBuilder>;
33
39
45
51
53{
54 using TFL = int32_t;
55 using CIR = int32_t;
56};
57
58using BufferData = std::vector<uint8_t>;
59using MapBufferData = std::map<int32_t, BufferData>;
60
61template <typename T> class Offset
62{
63private:
67
68public:
69 Offset(void) = delete;
70 Offset(FlatBufBuilder &fb) : _fb{fb} {};
71
72public:
73 void set_signature_defs(const SignatureDefs *offset) { _tfl_signature_def_offsets = offset; }
74 void set_buffer_data_map(MapBufferData *map) { _buffer_data_map = map; }
75 void set_file_raw(const std::vector<char> *raw) { _file_raw = raw; }
76
77public:
78 void build(const TFLFlatBufVec *tflite_flatbuffer_vec);
79
80public:
81 CIRFlatBufVecOffset offset(void) const { return _circle_flatbuffer_vec_offset; }
82
83private:
84 FlatBufBuilder &_fb;
85 CIRFlatBufVecOffset _circle_flatbuffer_vec_offset;
86 // TODO revise this when Circle supports SignatureDef
87 const SignatureDefs *_tfl_signature_def_offsets = nullptr;
88 // for extended buffer for size > 2G
89 const std::vector<char> *_file_raw = nullptr;
90 MapBufferData *_buffer_data_map = nullptr;
91};
92
94{
95private:
97
98public:
99 CircleModel(void) = delete;
100 CircleModel(FlatBufBuilder &fb, const std::vector<char> &fr);
101
102public:
103 void load_offsets(const tflite::Model *tfl_model);
104 void model_build(void) const;
105 void finalize(void);
106 const char *base(void) const;
107 size_t size(void) const;
108
109private:
110 uint32_t _version;
111 Description _description;
112 FlatBufBuilder &_fb;
113 const std::vector<char> &_file_raw;
114 std::unique_ptr<Offset<OperatorCodeLink>> _operator_codes_offset;
115 std::unique_ptr<Offset<SubGraphLink>> _subGraphs_offset;
116 std::unique_ptr<Offset<BufferLink>> _buffers_offset;
117 std::unique_ptr<Offset<MetaDataBufferLink>> _metadata_buffer_offset;
118
119 MapBufferData _buffer_data_map;
120 std::string _fb_data_with_ext;
121};
122
123} // namespace tflite2circle
124
125#endif // __CIRCLE_MODEL_H__
void model_build(void) const
size_t size(void) const
const char * base(void) const
void load_offsets(const tflite::Model *tfl_model)
void set_signature_defs(const SignatureDefs *offset)
Definition CircleModel.h:73
CIRFlatBufVecOffset offset(void) const
Definition CircleModel.h:81
Offset(FlatBufBuilder &fb)
Definition CircleModel.h:70
void build(const TFLFlatBufVec *tflite_flatbuffer_vec)
void set_buffer_data_map(MapBufferData *map)
Definition CircleModel.h:74
void set_file_raw(const std::vector< char > *raw)
Definition CircleModel.h:75
std::map< int32_t, BufferData > MapBufferData
Definition CircleModel.h:59
std::unique_ptr< flatbuffers::FlatBufferBuilder > FlatBufBuilder
Definition CircleModel.h:32
std::vector< uint8_t > BufferData
Definition CircleModel.h:58