Skip to content

Commit 6c3e1b2

Browse files
authored
Improve plotting for demo notebook and add config for ICASSP demo.
Update demos files
2 parents e783741 + c4f2276 commit 6c3e1b2

File tree

18 files changed

+517
-95
lines changed

18 files changed

+517
-95
lines changed

.github/workflows/python_no_pycsou.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ jobs:
4242
run: |
4343
pip install flake8
4444
# stop the build if there are Python syntax errors or undefined names
45-
flake8 . --count --select=B,C,E,F,W,T4,B9 --show-source --statistics --max-complexity=18 --max-line-length=100 --ignore=E203,E266,E501,W503,F403,F401,C901 --exclude=profile,scripts,docs
45+
flake8 . --count --select=B,C,E,F,W,T4,B9 --show-source --statistics --max-complexity=18 --max-line-length=100 --ignore=E203,E266,E501,W503,F403,F401,C901,PLW0602 --exclude=profile,scripts,docs
4646
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
4747
# flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
4848
- name: Format with black

.github/workflows/python_pycsou.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ jobs:
4242
run: |
4343
pip install flake8
4444
# stop the build if there are Python syntax errors or undefined names
45-
flake8 . --count --select=B,C,E,F,W,T4,B9 --show-source --statistics --max-complexity=18 --max-line-length=100 --ignore=E203,E266,E501,W503,F403,F401,C901 --exclude=profile,scripts,docs
45+
flake8 . --count --select=B,C,E,F,W,T4,B9 --show-source --statistics --max-complexity=18 --max-line-length=100 --ignore=E203,E266,E501,W503,F403,F401,C901,PLW0602 --exclude=profile,scripts,docs
4646
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
4747
# flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
4848
- name: Format with black

configs/benchmark/diffusercam.yaml

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,25 +20,29 @@ huggingface:
2020
single_channel_psf: True
2121

2222
algorithms: [
23-
# "ADMM",
23+
"ADMM",
24+
"ADMM_PnP",
25+
"FISTA",
26+
"FISTA_PnP",
2427

2528
## -- reconstructions trained on DiffuserCam measured
26-
"hf:diffusercam:mirflickr:U5+Unet8M",
29+
# "hf:diffusercam:mirflickr:U5+Unet8M",
2730
# "hf:diffusercam:mirflickr:Unet8M+U5",
2831
# "hf:diffusercam:mirflickr:TrainInv+Unet8M",
2932
# "hf:diffusercam:mirflickr:MMCN4M+Unet4M",
3033
# "hf:diffusercam:mirflickr:MWDN8M",
31-
"hf:diffusercam:mirflickr:Unet4M+U5+Unet4M",
34+
# "hf:diffusercam:mirflickr:Unet4M+U5+Unet4M",
3235
# "hf:diffusercam:mirflickr:Unet4M+TrainInv+Unet4M",
3336
# "hf:diffusercam:mirflickr:Unet2M+MMCN+Unet2M",
3437
# "hf:diffusercam:mirflickr:Unet2M+MWDN6M",
3538
# "hf:diffusercam:mirflickr:Unet4M+U10+Unet4M",
36-
"hf:diffusercam:mirflickr:Unet4M+U5+Unet4M_psfNN",
39+
# "hf:diffusercam:mirflickr:Unet4M+U5+Unet4M_psfNN",
3740

3841
# ## comparing UNetRes and Transformer, ADAMW optimizer
3942
# "hf:diffusercam:mirflickr:Transformer4M+U5+Transformer4M",
4043
# "hf:diffusercam:mirflickr:Transformer4M+U5+Transformer4M_psfNN",
4144
# "hf:diffusercam:mirflickr:U5+Transformer8M",
45+
# "hf:diffusercam:mirflickr:U5+Unet8M_adamw",
4246
# "hf:diffusercam:mirflickr:Unet4M+U5+Unet4M_adamw",
4347
# "hf:diffusercam:mirflickr:Unet4M+U5+Unet4M_psfNN_adamw",
4448

@@ -83,6 +87,8 @@ algorithms: [
8387
# "hf:digicam:mirflickr_multi_25k:Unet4M+U5+Unet4M_wave",
8488
]
8589

86-
save_idx: [0, 1, 3, 4, 8, 45, 58, 63]
87-
n_iter_range: [100] # for ADMM
90+
save_idx: [0, 1, 3, 4, 8]
91+
n_iter_range: [10] # for ADMM
92+
# save_idx: [0, 1, 3, 4, 8, 45, 58, 63]
93+
# n_iter_range: [100] # for ADMM
8894

configs/benchmark/diffusercam_fullres.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ algorithms: [
2323
# "ADMM",
2424

2525
# ## comparing LeADMM5 and SVDeconvNet, ADAMW optimizer
26+
"hf:diffusercam:mirflickr:U5+Unet12M_fullres",
2627
"hf:diffusercam:mirflickr:Unet6M+U5+Unet6M_fullres",
2728
"hf:diffusercam:mirflickr:Unet6M+U5+Unet6M_psfNN_fullres",
2829
"hf:diffusercam:mirflickr:SVDecon+UNet8M",

configs/benchmark/digicam.yaml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,21 @@ huggingface:
2323

2424
algorithms: [
2525
# "ADMM",
26+
"ADMM",
27+
"ADMM_PnP",
2628

2729
# # -- reconstructions trained on measured data
28-
"hf:digicam:mirflickr_single_25k:U5+Unet8M_wave",
30+
# "hf:digicam:mirflickr_single_25k:U5+Unet8M_wave",
2931
# "hf:digicam:mirflickr_single_25k:Unet8M+U5_wave",
3032
# "hf:digicam:mirflickr_single_25k:TrainInv+Unet8M_wave",
3133
# "hf:digicam:mirflickr_single_25k:MMCN4M+Unet4M_wave",
3234
# "hf:digicam:mirflickr_single_25k:MWDN8M_wave",
3335
# "hf:digicam:mirflickr_single_25k:Unet4M+TrainInv+Unet4M_wave",
34-
"hf:digicam:mirflickr_single_25k:Unet4M+U5+Unet4M_wave",
36+
# "hf:digicam:mirflickr_single_25k:Unet4M+U5+Unet4M_wave",
3537
# "hf:digicam:mirflickr_single_25k:Unet2M+MMCN+Unet2M_wave",
3638
# "hf:digicam:mirflickr_single_25k:Unet2M+MWDN6M_wave",
3739
# "hf:digicam:mirflickr_single_25k:Unet4M+U10+Unet4M_wave",
38-
"hf:digicam:mirflickr_single_25k:Unet4M+U5+Unet4M_wave_psfNN",
40+
# "hf:digicam:mirflickr_single_25k:Unet4M+U5+Unet4M_wave_psfNN",
3941
# "hf:digicam:mirflickr_single_25k:Unet4M+U5+Unet4M_wave_flips",
4042
# "hf:digicam:mirflickr_single_25k:Unet4M+U5+Unet4M_wave_flips_rotate10",
4143
# "hf:digicam:mirflickr_single_25k:Unet8M_wave_v2",
@@ -53,8 +55,10 @@ algorithms: [
5355
# "hf:diffusercam:mirflickr:Unet4M+U5+Unet4M_psfNN",
5456
]
5557

56-
save_idx: [1, 2, 4, 5, 9, 24, 33, 61]
57-
n_iter_range: [100] # for ADMM
58+
# save_idx: [1, 2, 4, 5, 9, 24, 33, 61]
59+
# n_iter_range: [100] # for ADMM
60+
save_idx: [1, 2, 4, 5, 9]
61+
n_iter_range: [10] # for ADMM
5862

5963
# simulating PSF
6064
simulation:

configs/demo_icassp2025.yaml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
defaults:
2+
- demo
3+
- _self_
4+
5+
6+
gamma: 2.2 # for plotting PSF
7+
8+
display:
9+
image_res: [900,-1] # negative value to set according to other dimension
10+
vshift: -26
11+
12+
capture:
13+
legacy: True
14+
bayer: True
15+
rgb: True
16+
down: 4
17+
awb_gains: [1.8, 1.1]
18+
19+
recon:
20+
gamma: null
21+
downsample: 4
22+
dtype: float32
23+
use_torch: True
24+
torch_device: cuda:0
25+
algo: fista
26+
27+
fista:
28+
n_iter: 300
29+
30+
admm:
31+
n_iter: 10
32+
33+
postproc:
34+
# crop in percent to extract region of interest
35+
# set to null to skip
36+
crop_hor: [0.29, 0.67]
37+
crop_vert: [0.22, 0.78]

configs/recon/diffusercam.yaml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# python scripts/recon/diffusercam.py
2+
defaults:
3+
- defaults
4+
- _self_
5+
6+
cache_dir: null
7+
idx: 0
8+
9+
# - Learned reconstructions: see "lensless/recon/model_dict.py"
10+
# --- UNetRes vs Restormer
11+
# model: U5+Unet8M_adamw
12+
# model: Unet4M+U5+Unet4M_adamw
13+
# model: Unet4M+U5+Unet4M_psfNN_adamw
14+
# model: U5+Transformer8M
15+
# model: Transformer4M+U5+Transformer4M
16+
# model: Transformer4M+U5+Transformer4M_psfNN
17+
# # --- SVDeconv vs LeADMM5
18+
# model: U5+Unet12M_fullres
19+
# model: Unet6M+U5+Unet6M_fullres
20+
# model: Unet6M+U5+Unet6M_psfNN_fullres
21+
# model: SVDecon+UNet8M
22+
model: Unet4M+SVDecon+Unet4M
23+
24+
# # -- for ADMM with fixed parameters
25+
# model: admm
26+
# n_iter: 100
27+
28+
device: cuda:0
29+
n_trials: 100 # to get average inference time
30+
save: True

configs/recon/digicam.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# python scripts/recon/digicam_mirflickr.py
1+
# python scripts/recon/digicam.py
22
defaults:
33
- defaults
44
- _self_
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
defaults:
2+
- telegram_demo
3+
- _self_
4+
5+
# for Telegram
6+
token: null
7+
setup_fp: icassp_setup.jpeg
8+
9+
# usernames and IP address
10+
rpi_username: null
11+
rpi_hostname: null
12+
13+
config_name: demo_icassp2025
14+
psf:
15+
fp: psf_voronoi_apr2025/voronoi_rgb.png
16+
downsample: 4
17+
18+
default_algo: fista
19+
20+
files:
21+
mnist:
22+
fp: data/original/mnist_3.png
23+
exposure: 0.05
24+
brightness: 100
25+
thumb:
26+
fp: data/original/thumbs_up.png
27+
exposure: 0.02
28+
brightness: 80
29+
face:
30+
fp: data/original/face.jpg
31+
exposure: 0.03
32+
brightness: 80
33+
tree:
34+
fp: data/original/tree.png
35+
exposure: 0.08
36+
brightness: 100
37+
38+
overlay:
39+
alpha: 60
40+
41+
img1:
42+
fp: data/original/epfl_white.png
43+
scaling: 0.23
44+
position: [5,15]
45+
46+
img2:
47+
fp: data/original/icassp.png
48+
scaling: 0.2
49+
position: [305,10]
50+
51+
img3: null

lensless/recon/model_dict.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,15 @@
9090
"Unet4M+U5+Unet4M_ft_tapecam": "bezzam/diffusercam-mirflickr-unet4M-unrolled-admm5-unet4M-ft-tapecam",
9191
"Unet4M+U5+Unet4M_ft_tapecam_post": "bezzam/diffusercam-mirflickr-unet4M-unrolled-admm5-unet4M-ft-tapecam-post",
9292
"Unet4M+U5+Unet4M_ft_tapecam_pre": "bezzam/diffusercam-mirflickr-unet4M-unrolled-admm5-unet4M-ft-tapecam-pre",
93-
# comparing with transformers, with ADAMW optimizer (rest with ADAM)
93+
# comparing with transformers, with ADAMW optimizer (below with ADAMW optimizer)
94+
"U5+Unet8M_adamw": "bezzam/diffusercam-mirflickr-unrolled-admm5-unet8M-adamw",
9495
"Unet4M+U5+Unet4M_adamw": "bezzam/diffusercam-mirflickr-unet4M-unrolled-admm5-unet4M-adamw",
9596
"Unet4M+U5+Unet4M_psfNN_adamw": "bezzam/diffusercam-mirflickr-unet4M-unrolled-admm5-unet4M-psfNN-adamw",
9697
"U5+Transformer8M": "bezzam/diffusercam-mirflickr-unrolled-admm5-transformer8M",
9798
"Transformer4M+U5+Transformer4M": "bezzam/diffusercam-mirflickr-transformer4M-unrolled-admm5-transformer4M",
9899
"Transformer4M+U5+Transformer4M_psfNN": "bezzam/difusercam-mirflickr-transformer4M-unrolled-admm5-transformer4M-psfNN",
99100
# (~11.6M param) comparing with SVDeconvNet, with ADAMW optimizer (full resolution images)
101+
"U5+Unet12M_fullres": "bezzam/diffusercam-mirflickr-unrolled-admm5-unet12M-fullres",
100102
"Unet6M+U5+Unet6M_fullres": "bezzam/diffusercam-mirflickr-unet4M-unrolled-admm5-unet4M-fullres",
101103
"Unet6M+U5+Unet6M_psfNN_fullres": "bezzam/diffusercam-mirflickr-unet4M-unrolled-admm5-unet4M-psfNN-fullres",
102104
"SVDecon+UNet8M": "bezzam/diffusercam-mirflickr-svdecon-unet4M",

0 commit comments

Comments
 (0)