-
Notifications
You must be signed in to change notification settings - Fork 0
/
notes.txt
548 lines (319 loc) · 13.6 KB
/
notes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
Domanda 3: Come si calcola K?
K = PCA delle intensità del pixel? quindi indipendente dalla light direction? si
Domanda 2: gaussiana implementata correttamente? si
Domanda 3: Devo fare una trasformazione o metto tutto nel getItem del dataset? mettere layer fittizio (foto)
Domanda 4: MAE loss = L1Loss? si
Domanda 5: split dataset serve? no
pca(matrix N x ) sklearn decomposition PCA
PCA(8)
reshape(h * w, 1000) -> fit_transform(width * height, n_extracted_features) -> reshape(h,w,8)
non serve accuracy
togliere alcuni dati e poi usarli come test alla fine.
visualizzare immagini risultato della pca
layer custom
neuralRTI
moltiplica * 2 PI (con 0.3 di std)
------------
In che formato deve essere la direzione della luce? -1 ... +1 ?
TODO:
fix light direction **
interpolazione in real time **
cambiare la finestra di direzione della luce, aggiungendo i punti di training che uso e ingrandendola **
loss < 255
-----------------
provare ad usare il dataset sintetico
synthRTI
realRTI
neuralRTI (Github)(articolo citato e consigliato )(autoencoder invece che PCA)
provo a cercare altri dataset
scarica dataset
faccio andare il mio codice con il nuovo dataset
dividi train e test
posso scartare la z delle direzioni della luce
funzioni per calcolare l'errore del test (SSIM (structural similarity, la trovo implementata in teoria), PSNR (signal to noise ratio, la posso fare a mano), L1 ..., guardare paper)
fn (modello, test, ground truth)-> {
output = modello(test)
return confronto(output, ground truth)
}
stai attento al valore dell'intensità dell'immagine (alcuni algoritmi assumono che i valori valnno fino ad 1 e non fino a 255)
v3.0:
proiettare anche le coordinate, oltre che per la luce (stessa formula con sin e cos)
prova con poche immagini all'inizio
provo a vedere come va con le immagini con cui faccio il training
grayscale
fare image regression aggiungendo la direzione della luce (guarda paper di google, che spiega come le proiezioni di forier migliorano i risultati)
TODO v2.0:
- Supportare nuovo dataset **
- Dividere train e validation **
- Togliere intorno nel dataset delle monete
- Aggiungere funzioni generiche per il calcolo dell'errore **
-------
v2.0:
Dovrebbe avere da 4 a 7 di loss **
Probabilmente il dataset non è corretto **
Mi invierà il dataset dei dati estratti dalle monete TODO
SSIM: utilizzare il kernel di default (11 o 7)
v3.0:
Usare 2 matrici gaussina diverse per x,y e u,v (con sigma diversi) **
Inizio usando lo stesso sigma. **
Normalizzo x,y in modo che i valori vadano da -1 ad 1 e non da 0 a 200 **
Si può provare ad aggiungere fc layer per migliorare i risultati
Usare dati sintetici per questo modello
TODO: Fix interpolation mode 5
v3.0 Results on Synth:
LOSS: L1
5 Linear, 4 Elu
NEURAL_SIGMA_XY: 0.3
NEURAL_SIGMA_UV: 0.3
NEURAL_H: 10
NEURAL_BATCH_SIZE: 64,
NEURAL_LEARNING_RATE: 0.0001,
NEURAL_N_EPOCHS: 40,
Max loss value: 20.36
Min loss value: 15.11
Final loss value: 15.11
SSIM: 0.43
PSNR: 19.67
L1: 21.29
------------------------------
...baseline
NEURAL_SIGMA_XY: 0.4
SSIM: 0.43
PSNR: 19.61
L1: 21.24
------------------------------
NEURAL_N_EPOCHS: 10
Implicit neural representation
alzare sigma di tanto (uv troppo basso)
provare sigma: 10
probabilmente quelle trainate bene, quelle nuove non tanto
non dare sequenza di pixel (u e v sempre casuali) (controllare dataloader, mescolare dataset ogni 10 iterazioni?)
sensibile al numero di immagini in training
provare a trainare con pochissime immagini (5)(1, dovrebbe venire perfetto per indovinare sigma di uv)
in futuro loss
troppo grana, troppo poco sfocata
devo scriverlo come se il vostro paper non esistesse? (abbiamo creato dei video, abbiamo ...)
perché tante cose sarebbero super simili
oppure posso dire che i video vengono da voi?
quanti dettagli riguardo l'implementazione?
lunghezza tesi? dipende
studio aggiuntivo su un paper recente
parte introduttiva (prendo spunto dall'intro del paper), trovo in letteratura articoli
learning based e non learning based, dome di luci, quelli con la pallina???
marker, camera, homography, calibration,
haruko marker, ...
~5 pagine introduzione
Implicit neural representation si può espandere benissimo (scholar)
CVPR ICCV ECCV GOCV IJCV
impact factor su google scholar (8+ molto buono)
tirocinio? carte da firmare? Bisogna firmare una carta alla fine del tirocinio
----------------------------------------------------------------
NEURAL_SIGMA_XY: 1.0
NEURAL_SIGMA_UV: 10.0
NEURAL_H: 10
NEURAL_BATCH_SIZE: 64,
NEURAL_LEARNING_RATE: 0.0001,
NEURAL_N_EPOCHS: 10,
Max loss value: 25.16
Min loss value: 15.57
Final loss value: 15.57
SSIM: 0.34
PSNR: 11.82
L1: 66.98
----------------------------------------------------------------
...prec
NEURAL_SIGMA_XY: 0.3
NEURAL_SIGMA_UV: 5.0
Max loss value: 24.81
Min loss value: 15.90
Final loss value: 15.90
SSIM: 0.36
PSNR: 12.83
L1: 59.18
----------------------------------------------------------------
...prec
NEURAL_SIGMA_UV: 15.0
Max loss value: 24.81
Min loss value: 15.90
Final loss value: 15.90
SSIM: 0.36
PSNR: 12.83
L1: 59.18
---------
"NEURAL_BATCH_SIZE": 64,
"NEURAL_LEARNING_RATE": 0.01,
"NEURAL_N_EPOCHS": 40,
"NEURAL_H": 10,
"NEURAL_SIGMA_XY": 1.2,
"NEURAL_SIGMA_UV": 12.0,
"NEURAL_INPUT_SIZE": (4 * 10),
Max loss value: 15.26
Min loss value: 13.16
Final loss value: 13.16
NeuralModel - SSIM: 0.35 (20 values)
NeuralModel - PSNR: 14.49 (20 values)
NeuralModel - L1: 44.60 (20 values)
---
Aumentare la dimensione del modello
La loro idea per continuare:
Loss divisa in 2 (Una perceptual loss e una l1 loss)
Perceptual loss -> un altra rete trainata per riconoscere se una foto è "realistica" o no
Gli mando una mail tra pochi giorni.
Gli dirò che proverò ad andare a Gennaio, ma che se ci mettiamo troppo tempo, ripieghiamo sulla tesi che bisogna solo fare il confronto (non posso perdere questa scadenza).
Rete che hanno usato:
128, 64, 32, 16, 16, 16 (Relu)
Tesi:
Va estesa la parte iniziale, citando molti lavori (che cos`è rti, acquisizione )
Cos'è l'implicit neural representation, volendo anche spiegare le neural networks.
All'inizio si cita, la parte dopo
aggiungere parte confronti?
----
Forse bisogna clippare i valori tra 0, 255 (o 0,1) per eliminare i buchi
VggLoss -> Valore basso se simili, valore alto se diversi
Si usa di solito per style transfer
Paper: https://arxiv.org/abs/1603.08155
Cercare su google uno snippet per fare la loss tra due immagini (non farla a mano)
2 immagini -> numero
Provare a generare un pò di immagini con la direzione della luce di training
e poi generarle un pò più lontane (sempre peggio) direzione a e b
(generare 10/20 immagini tra due direzioni della luce)
calcolare perceptual loss rispetto alla direzione della luce più vicina
più artefatti -> loss alta
due immagini vere -> loss bassa
Usare il modello trainato con almeno le due immagini che uso
- Leggere articolo
- Creare test per la perceptual loss:
- Trainare modello con immagini di due direzioni della luce
- Interpolare 10/20 immagini tra le due direzioni
- Calcolare perceptual loss tra la prima immagine e ogni altra immagine
- Verificare che la perceptual loss parta basse, si alzi finché ci allontaniamo dalla partenza, e poi ri diminuisce quando ci avviciniamo alla seconda
---
Togliere round da `get_intermediate_light_directions`
`get_intermediate_light_directions` dovrebbe usare l'interpolazione linerare in teoria
controllare segno delle immagini (immagine 10 è simile alla target)
Controllare la loss della target image 2
Dopo ogni epoca:
shuffle del dataset (self.data)
Anzi: getItem con shuffle?
Check: I primi elementi del dataset dovrebbero avere direzioni della luce diversi
Fare il training con il dataset intero
0.1 UV
Anche l'alpha di XY (~4)
Magari va ingrandita la rete
Provare a perturbare la luce
(fare il training con un luce = luce + gaussiana con sigma 0.005)
----
Le immagini sono 320x320, influisce qualcosa sul training?
No, perché diamo i pixel singoli, non l'immagine intera
- Qual'è il valore ottimale di SIGMA_XY (con valori quantitativi, non qualitativi)
- PSNR?
- Quali basi utilizzare. Non è detto che l'espansione Fourier-like sia la migliore per i nostri scopi. Per esempio, ho la sensazione che renda problematica la gestione dei bordi delle immagini
- Transformata coseno?
- Quanto è sensibile all'ordine con cui diamo i dati durante il training. Adesso ad esempio randomizziamo tutto, ma forse usando patch di pixels vicini il risultato potrebbe essere diverso
- Quanto influisce il fatto che forniamo in input sempre gli stessi valori (interi) di XY. E se dessimo anche coordinate sub-pixel?
venus
nvidia 4080
i9 24 core
ingrandire batch size
python -m pip ....
per usare pip dentro l'ambiente
spostare modello in gpu
nvidia-smi
gpu utilization deve essere alta (quasi 100%)
attenzione a non usare tutta la memoria della gpu
serve vpn
----
numeri quantitativi
provare con un altro dataset con più luci
perturbare le luci -> male
1)
provare a dare un insieme di pixel non intere (interpolando il valore nel ground truth)
per ridurre l'overfitting e per dare più punti dove la rete sbaglia di più
fare un sampling?
https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.interp2d.html
ad ogni epoca cambi la distrubuzione con il quale prendi i punti subpixel
(cambiare il codice di training)
2)
invece di usare le armoniche di fourier, usare la trasformata coseno (dct)
si può già scrivere
intanto fermiamoci qui
nuovo dataset con un sottoinsieme di immagini e calcolare la loss, sssmi, ... e confrontarlo con il ground truth
domanda di laure 1-11 dicembre
upload della tesi 5-19 febbraio
prima di natale esperimenti, poi tesi
8-10 gennaio iniziare seriamente a scriverla
direttamente sulla macchina
titolo: An implicit neural representation for RTI
abstract:
2-3 righe cos'é RTI, si basa sulla creazione di una funzione
in questa tesi si propone di usare implicit neural representation per approssimare questa funzione
nella tesi scrivere che è un estensione del paper PCA (che funzionava diversamente)
(echo "3" && echo "6" && echo "n" && echo "n" && echo "y") | python analysis.py
An Implicit Neural Representation for Reflectance Transformation Imaging (RTI)
Reflectance Transformation Imaging (RTI) is a widely used method for obtaining detailed per-pixel reflectance data by photographing an object under varying lighting conditions. The gathered information can then be utilized to re-light the subject interactively and reveal surface details that would be impossible to see with a single photo. In this thesis, we propose to use an Implicit Neural Representation to approximate the interpolation function that we use to obtain the reflectance data.
----------
tirocinio?
introduzione ~15 pagine
spiego che cosè rti, cosa serve, ...
related work:
citazione di articoli correlati (neural rti)
articoli che fanno relighting con altre tecniche?
discussione di tecniche di relighting, dome,
google scholar -> dal nostro articolo -> chi cita e cosa cita -> avanti così
non citare e basta, espandere e citare, mettere immagini
cerca di fare un discorso unico senza fare troppi salti, magari anche cronologicamente
state of the art
paper da citare? lavoro che devo fare io
descrittiva
- scrivere quello che ho fatto
e anche quello che abbiamo fatto nel progetto
riprendo l'articolo -> dico che è stato modificato (relighting, ... ) dataset differenti
parte sperimentale -> risultati (confrontare immagini e risultati numerici)
confronto con altri metodi
esperimenti variando sigma, o numero di immagini in input
ultimo dataset sinteitco ()
2 reti, PCA, RTI -> confronto con immagini di test,
togli 1,5,10,20% di luci dal train set e valuti il test set (tieni anche l'immagine con ssim, .. ed il modello!)
grafico -> n_luci x errore
1 grafici in totale con due curve (una per PCA ed una per NeuralRTI)
poi mostrare un bel pò di output (immagini)
definire qualche esperimento, intanto scrivo la parte introduttiva e descrittiva
----------------
sigma P (pixels)
sigma L (luce)
esagerare, da 0.1 a 20 (sempre 8 immagini)
controllare il mio output e il ground truth
in generale sarebbe meglio avere immagini da 0 ed 1
trasformarla in double e la divido per 255 -> fare metriche
una pagina con solo immagini
una con tabella e grafici
scrivere il numero di luci al posto della probabilitá
e scrivere che sigma ho usato
volendo si può mostrarne un paio con sigma alto e sigma basso
e riportare quante immagini ha il dataset
fare un interpolazione tra una luce e un altra (generare quelle intermedie)
come figure vanno bene queste
psnr dovrebbe essere intorno a 30
ssim 0...1
l1 va da 0..1
più immagini mostro meglio è (con ground truth e PCA), 3 immagini per dataset/direzione della luce
plot della direzione delle luci sarebbe figo per quello che rimuove luci dal dataset
neural networks va in releted works
suddividere i related works in tipologia di metodi che fanno rti
togliere citazioni sui titoli
non citare singolarmente le funzioni di opencv (toglierle)
minimo 50 references (veri)
rimuovere porzioni di codice che non sono fondamentali
non usare `delay` mbox (al post) t_s - t_m, where
matrici in maiuscolo
sistema la parte di related works ed introduzione (aggiungere roba)
la settimana prossima rimando la bozza (venerdì la guardiamo assieme)
l'ultima settimana si sistemiamo i risultati
capitolo 3 può andare circa così
TODO next week:
- [ ] Aggiungere molto contenuto in Introduzione e Related works
- [ ] Guardare note di Mara
- [ ] Sistemare SSIM PSNR L1
TODO last week:
- [ ] Sistemare esperimenti (aggiungere confronti, ...)
- [ ]