Add deep learning resolution estimation model from Stanford
This commit is contained in:
53
tests/NeuralNetResPredictorTest.cpp
Normal file
53
tests/NeuralNetResPredictorTest.cpp
Normal file
@@ -0,0 +1,53 @@
|
||||
// Copyright (2019-2024) Paul Scherrer Institute
|
||||
|
||||
#include <catch2/catch.hpp>
|
||||
|
||||
#include "../writer/HDF5Objects.h"
|
||||
#include "../resonet/NeuralNetResPredictor.h"
|
||||
|
||||
TEST_CASE("NeuralNetResPredictor_Prepare", "[LinearAlgebra][Coord]") {
|
||||
DiffractionExperiment experiment(DetectorGeometry(8, 2, 8, 36));
|
||||
experiment.DetectorDistance_mm(75).PhotonEnergy_keV(12.4).BeamX_pxl(1000).BeamY_pxl(1000);
|
||||
experiment.NeuralNetModelPath("../../resonet/traced_resnet_model.pt");
|
||||
|
||||
std::vector<int16_t> v(experiment.GetPixelsNum(),0);
|
||||
v[1000 * experiment.GetXPixelsNum() + 1000] = 100;
|
||||
v[1000 * experiment.GetXPixelsNum() + 1001] = 20;
|
||||
v[1001 * experiment.GetXPixelsNum() + 1000] = 30;
|
||||
v[1001 * experiment.GetXPixelsNum() + 1001] = INT16_MIN;
|
||||
|
||||
v[1050 * experiment.GetXPixelsNum() + 1050] = 52;
|
||||
v[2000 * experiment.GetXPixelsNum() + 1500] = 160;
|
||||
NeuralNetResPredictor predictor(experiment);
|
||||
|
||||
REQUIRE(predictor.GetMaxPoolFactor() == 2);
|
||||
|
||||
predictor.Prepare(v.data());
|
||||
auto nn_input = predictor.GetModelInput();
|
||||
REQUIRE(nn_input[0] == 10);
|
||||
REQUIRE(nn_input[25 * 512 + 25] == 7);
|
||||
REQUIRE(nn_input[500 * 512 + 250] == 12);
|
||||
}
|
||||
|
||||
TEST_CASE("NeuralNetResPredictor_Inference", "[LinearAlgebra][Coord]") {
|
||||
DiffractionExperiment experiment(DetectorGeometry(8, 2, 8, 36));
|
||||
experiment.DetectorDistance_mm(75).PhotonEnergy_keV(12.4).BeamY_pxl(1136).BeamX_pxl(1090);
|
||||
experiment.NeuralNetModelPath("../../resonet/traced_resnet_model.pt");
|
||||
|
||||
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);
|
||||
|
||||
auto res = predictor.Inference(image_conv.data());
|
||||
std::cout << res << std::endl;
|
||||
REQUIRE(res < 1.5);
|
||||
REQUIRE(res > 1.4);
|
||||
}
|
||||
Reference in New Issue
Block a user