Files
Jungfraujoch/resonet/resonet_test.cpp
T

43 lines
1.7 KiB
C++

// Copyright (2019-2024) Paul Scherrer Institute
#include <iostream>
#include "NeuralNetResPredictor.h"
#include "../writer/HDF5Objects.h"
int main(int argc, char **argv) {
DiffractionExperiment experiment(DetectorGeometry(8, 2, 8, 36));
experiment.DetectorDistance_mm(75).PhotonEnergy_keV(12.4).BeamY_pxl(1136).BeamX_pxl(1090);
experiment.NeuralNetModelPath(argv[1]);
if (argc == 0)
exit(EXIT_FAILURE);
NeuralNetResPredictor predictor(experiment);
HDF5ReadOnlyFile data("../../tests/test_data/compression_benchmark.h5");
HDF5DataSet dataset(data, "/entry/data/data");
HDF5DataSpace file_space(dataset);
std::vector<int16_t> image_conv (file_space.GetDimensions()[1] * file_space.GetDimensions()[2]);
std::vector<hsize_t> start = {4,0,0};
std::vector<hsize_t> file_size = {1, file_space.GetDimensions()[1], file_space.GetDimensions()[2]};
dataset.ReadVector(image_conv, start, file_size);
std::cout << "Max pooling " << predictor.GetMaxPoolFactor() << std::endl;
float x = 0;
size_t niterations = 25;
auto start_time = std::chrono::system_clock::now();
for (int i = 0; i < niterations; i++)
x += predictor.Inference(image_conv.data());
auto end_time = std::chrono::system_clock::now();
auto elapsed = std::chrono::duration_cast<std::chrono::microseconds>(end_time - start_time);
int64_t frequency_Hz = (niterations * 1e6) / (double) (elapsed.count());
std::cout << ((double) elapsed.count()) / (1e3 * niterations) << " ms" << std::endl;
std::cout << frequency_Hz << " Hz" << std::endl;
std::cout << "Resolution " << predictor.Inference(image_conv.data()) << std::endl;
}