Hey, I just pushed a new version to pip with float16 and some other changes yet to be documented. I’ll try to get out the documentation in a bit, but if you want to test it should be rawforge 0.2.2.
Also, sorry for the delay, life got busy! I had some job interviews that I way over indexed on since the job market has been so rough lol
Nice, is it working?
Thanks for the remarks! Would you be willing to share one of the files, particularly one with bad highlight reconstruction issues?
Does not work at all in PyTorch mode:
(venv2) [aep@dell-laptop venv2]$ ./bin/rawforge --cfa TreeNetDenoiseXTrans DSCN0152.NRW DSCN0152-denoised.dng
0%| | 0/432 [00:00<?, ?it/s]
Traceback (most recent call last):
File "/tmp/venv2/./bin/rawforge", line 6, in <module>
sys.exit(main())
~~~~^^
File "/tmp/venv2/lib/python3.14/site-packages/RawForge/main.py", line 209, in main
run_pipeline(
~~~~~~~~~~~~^
model_names=args.model,
^^^^^^^^^^^^^^^^^^^^^^^
...<16 lines>...
exiftools=args.disable_exiftools,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/tmp/venv2/lib/python3.14/site-packages/RawForge/main.py", line 120, in run_pipeline
output = process_img(models, image_RGB, conditioning_str, iso, disable_tqdm, tile_size, tile_overlap, batch_size, verbose, use_onnx, device,
lumi, chroma, clip_highlights, affine, progress_callback, rh)
File "/tmp/venv2/lib/python3.14/site-packages/RawForge/main.py", line 79, in process_img
_, output_img = worker.run(output_img, progress_callback=progress_callback)
~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/venv2/lib/python3.14/site-packages/RawForge/application/InferenceWorker.py", line 73, in run
self.backend.infer(batch, cond)
~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/tmp/venv2/lib/python3.14/site-packages/RawForge/application/TorchBackend.py", line 34, in infer
output = self.model(batch)
File "/tmp/venv2/lib/python3.14/site-packages/torch/nn/modules/module.py", line 1778, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/tmp/venv2/lib/python3.14/site-packages/torch/nn/modules/module.py", line 1789, in _call_impl
return forward_call(*args, **kwargs)
RuntimeError: forward() is missing value for argument 'cond'. Declaration: forward(__torch__.___torch_mangle_2225.InputNormalizer self, Tensor inp, Tensor cond) -> Tensor
ONNX still works, but not at exactly the same speed (03:12 → 03:24 on AMD Ryzen 7 5700U).
Also, you misinterpreted the suggested action in my performance-related comment. The code still enables autocast, with float16, for the CPU backend, while no autocast should have been used at all. float16 is as bad as bfloat16 on CPUs that do not support short floats.
Ah, my mistake, and I know what I broke there. I’ll fix that in a bit.
I think v2.3 should both use float32 for cpu and fix the config issue with the xtrans model.
Any idea when this will be baked into the gui version? commandline is fine but the gui was a bit easier to use
Or does it already use the new stuff when installed correctly?
Not yet, sorry! I worked on that for a bit, but realized I needed to refactor the rawforge a bit to make it work and haven’t gone back to the gui. I’ll update you in a bit on it.
I’ve got one question to rawforge.
It copies the original (e.g.) ‘abc.cr3’ to ‘abc.cr3_original’ is there anyway to prevent this? I don’t need these files and they just fill my hard drive ;).
If not, I’ll have to add some lines in my workflow program (but I thought other ones would also like to know).
I’ve been using DXO PureRaw for the past 4 years and I’m very impressed with the results I’m getting, especially TreeNetDenoiseHeavy. The DNG files work flawlessly with RapidRaw and I managed to denoise in batch directly from DigiKam, which I use to cull and manage my library. I also find the results on par with the new Capture One denoiser in a subjective way. Awesome work!
I’ll give a +1 to the request of including original metadata, especially creation time. ![]()
![]()
I’ll get back to you in a sec.
In the latest rawforge, if exiftool is installed in the environment, it will use it to copy over metadata to the new DNG!
If you run your command with “–verbose 2”, it should either print “Did not find exiftool” or “Metadata copied from x to y” to indicate if it used exiftools.
Ok, so this came about because of the exiftools integration. I will push a fix to it tomorrow, it’s very simple, I just didn’t set the flag to overwrite the image, but you can also disable using exiftools to copy metadata with the flag “–disable_exiftools”.
Thanks, but no another problem:
…denoised_2 is made mit RawRefinery, denoised with RawForge. I expected thay look the same.
Ah, that’s no good! Can you let me know what the camera model is and what model is being run?
I refactored some things, and while I tested the outputs, I’m guessing I broke something with the model configs.
It’s a Canon R6 Mark 3, and TreeNetDenoiseHeavy.
Thanks! I will include testing and fixing that in my push tomorrow. Sorry for the issues! I’ll be sure to improve my testing before pushing updates.
The issue is that r6m3 is probably not supported, libraw doesn’t yet fully support that camera so the black level is not correctly moved to the dng.
