47 ImageType image = Traits::factory(size_x, size_y);
49 int largest_size =
std::max(size_x, size_y);
53 auto shape = model->getOutputShape();
54 if (largest_size < shape[2]) {
55 selected_model = model;
60 if (selected_model ==
nullptr) {
61 logger.
warn() <<
"No large enough ONNX model could be found, skipping...";
65 auto input_shape = selected_model->getInputShape();
66 auto output_shape = selected_model->getOutputShape();
67 int render_size = output_shape[2];
69 if (selected_model->getOutputType() != ONNX_TENSOR_ELEMENT_DATA_TYPE_FLOAT) {
78 input_data_arrays[it.first] =
std::vector<float>( {
static_cast<float>(it.second->getValue()) } );
86 for (
int y=0; y<(int)size_y; ++y) {
87 int dy = y - size_y / 2;
88 for (
int x=0; x<(int)size_x; ++x) {
89 int dx = x - size_x / 2;
94 input_data_arrays[
"x"][x + y * render_size] = x2;
95 input_data_arrays[
"y"][x + y * render_size] = y2;
99 selected_model->runMultiInput<float,
float>(input_data_arrays, output_data);
101 for (
int y = 0; y < (int) size_y; ++y) {
102 for (
int x = 0; x < (int) size_x; ++x) {
103 Traits::at(image, x, y) = output_data[x + y * render_size];