a simple binary neural network for SISR(base on EDSR official code)
if you want to try different binary function, you need to :
- add new script to model/binarize and modify model/init.py to choose your binary function.
- edit run.sh(view this script for more detail), choose one function you want to run.
- run
sh run.sh
an example binary function:
bianrize/WApproxASTE.py
:
forward:
backward,use approxsign (bireal-net's method)
forward:
backward,STE
add an Tanh() function before binact. It helps to transfer a nonlinear gradient after STE.
Method | Bit | Set5 | Set14 | B100 | Urban100 |
---|---|---|---|---|---|
W/A | PSNR/SSIM | PSNR/SSIM | PSNR/SSIM | PSNR/SSIM | |
srresnetx2 | 32/32 | 37.889/0.958 | 33.4/0.915 | 32.077/0.896 | 31.602/0.922 |
Oursx2 | 1/1 | 36.345/0.934 | 32.221/0.876 | 31.364/0.877 | 29.407/0.883 |
Oursx2(DBSR) | 1/1 | 37.502 | 33.085 | 31.82 | 30.881 |
FPx4 | 32/32 | 32.066/0.890 | 28.497/0.778 | 27.516/0.731 | 25.858/0.778 |
Oursx4 | 1/1 | 31.232/0.848 | 28.047/0.729 | 27.215/0.699 | 25.075/ 0.727 |
Oursx4(DBSR) | 1/1 | 31.666 | 28.282 | 27.333 | 25.419 |
compare to Efficient Super Resolution Using Binarized Neural Network(Ma et.al.)
Method | Bit | Set5 | Set14 | Urban100 |
---|---|---|---|---|
W/A | PSNR | PSNR | PSNR | |
Ma et.al. x2 | 1/1 | 35.66 | 31.56 | 28.76 |
Oursx2 | 1/1 | 36.345 | 32.221 | 29.407 |
Ma et.al. x4 | 1/1 | 30.34 | 27.16 | 24.48 |
Oursx4 | 1/1 | 31.232 | 28.047 | 25.075 |
Method | Bit | Set5 | Set14 | B100 | Urban100 |
---|---|---|---|---|---|
W/A | PSNR/SSIM | PSNR/SSIM | PSNR/SSIM | PSNR/SSIM | |
edsrx2 | 32/32 | 37.931/0.958 | 33.459/0.915 | 32.102/0.896 | 31.709/0.923 |
Oursx2 | 1/1 | 37.425/0.941 | 32.942/0.887 | 31.717/0.883 | 30.425/0.899 |
use pretrain
Method | Bit | Set5 | Set14 | B100 | Urban100 |
---|---|---|---|---|---|
W/A | PSNR/SSIM | PSNR/SSIM | PSNR/SSIM | PSNR/SSIM | |
edsrx2 | 32/32 | 37.931/0.958 | 33.459/0.915 | 32.102/0.896 | 31.709/0.923 |
Oursx2 | 1/1 | 37.425/0.941 | 32.971/0.887 | 31.735/0.883 | 30.507/ 0.900 |