@@ -290,21 +290,24 @@ void build_graph(it_lab_ai::Tensor& input, it_lab_ai::Tensor& output,
290290 const std::string& json_file = json_path;
291291
292292 it_lab_ai::json model_data = it_lab_ai::read_json (json_file);
293+ std::string input_layer_name = " images" ;
294+ for (const auto & layer_data : model_data) {
295+ std::string layer_type = layer_data[" type" ];
296+ if (layer_type == " InputLayer" ) {
297+ if (layer_data.contains (" name" )) {
298+ input_layer_name = layer_data[" name" ];
299+ }
300+ break ;
301+ }
302+ }
293303
294304 if (comments) std::cout << " Loaded model data from JSON." << std::endl;
295305
296306 auto input_layer = std::make_shared<it_lab_ai::InputLayer>(it_lab_ai::kNchw ,
297307 it_lab_ai::kNchw );
298308 input_layer->setName (it_lab_ai::kInput );
299309 layers.push_back (input_layer);
300- if (json_path == MODEL_PATH_RESNET_ONNX ||
301- json_path == MODEL_PATH_DENSENET_ONNX ) {
302- name_to_layer[" x" ] = input_layer;
303- } else if (json_path == MODEL_PATH_GOOGLENET_ONNX ) {
304- name_to_layer[" image_tensor" ] = input_layer;
305- } else {
306- name_to_layer[" images" ] = input_layer;
307- }
310+ name_to_layer[input_layer_name] = input_layer;
308311 int current_id = 0 ;
309312 input_layer->setID (current_id++);
310313 for (const auto & layer_data : model_data) {
@@ -1060,25 +1063,6 @@ void build_graph(it_lab_ai::Tensor& input, it_lab_ai::Tensor& output,
10601063 name_to_layer[target_name]);
10611064 if (concat_layer) {
10621065 concat_layer->setInputOrder (concat_orders[target_name]);
1063- /* if (comments) {
1064- std::cout
1065- << "=== ALL INPUTS CONNECTED TO CONCAT: " << target_name
1066- << " ===" << std::endl;
1067- std::cout << "Expected inputs: ";
1068- for (const auto& inp : concat_connections[target_name]) {
1069- std::cout << inp << " ";
1070- }
1071- std::cout << std::endl;
1072-
1073- std::cout << "Actual order: ";
1074- for (size_t i = 0; i < concat_orders[target_name].size();
1075- ++i) {
1076- std::cout << concat_orders[target_name][i];
1077- if (i < concat_orders[target_name].size() - 1)
1078- std::cout << ", ";
1079- }
1080- std::cout << std::endl;
1081- }*/
10821066 }
10831067 }
10841068 }
@@ -1136,26 +1120,16 @@ std::unordered_map<int, std::string> load_class_names(
11361120 const std::string& filename) {
11371121 std::unordered_map<int , std::string> class_names;
11381122 std::ifstream file (filename);
1139- std::string line;
1140-
11411123 if (!file.is_open ()) {
11421124 throw std::runtime_error (" Cannot open class names file: " + filename);
11431125 }
1126+ json json_data = json::parse (file);
11441127
1145- while (std::getline (file, line)) {
1146- line = std::regex_replace (line, std::regex (" ^\\ s+|\\ s+$" ), " " );
1147- if (line.empty ()) continue ;
1148-
1149- std::regex pattern (" (\\ d+):\\ s*'([^']+)'" );
1150- std::smatch matches;
1151-
1152- if (std::regex_search (line, matches, pattern)) {
1153- int class_id = std::stoi (matches[1 ]);
1154- std::string class_name = matches[2 ];
1155- class_names[class_id] = class_name;
1156- }
1128+ for (auto & [key, value] : json_data.items ()) {
1129+ int class_id = std::stoi (key);
1130+ std::string class_name = value.get <std::string>();
1131+ class_names[class_id] = class_name;
11571132 }
1158-
11591133 return class_names;
11601134}
11611135
0 commit comments