Can’t you just load the image into memory only when ‘get’ is called (instead of loading all of them in constructor) ?
Something like this → 
torch::data::Example<torch::Tensor, torch::Tensor> get(size_t index) override {
		torch::Tensor sample_img = process_images({ image_list[index] })[0];
		torch::Tensor sample_label = labels.at(index);
		torch::data::Example<torch::Tensor, torch::Tensor> value{ sample_img, sample_label };
		return value;
	};