XPixelGroup / BasicSR

Open Source Image and Video Restoration Toolbox for Super-resolution, Denoise, Deblurring, etc. Currently, it includes EDSR, RCAN, SRResNet, SRGAN, ESRGAN, EDVR, BasicVSR, SwinIR, ECBSR, etc. Also support StyleGAN2, DFDNet.
https://basicsr.readthedocs.io/en/latest/
Apache License 2.0
6.68k stars 1.17k forks source link

some problem about reproducing your results #123

Open Feiyu-Zhang opened 5 years ago

Feiyu-Zhang commented 5 years ago

I use the pre-trained model RRDB_ESRGAN_x4.pth. When my #epoch reach ~5000, I view generated validation data(Set14). The result is as follow. baboon_bicLRx4_265000 baboon barbara_bicLRx4_265000 barbara

From epoch 1 to epoch 5000, PSNR always is ~5 as follow. 19-05-08 19:05:35.406 - INFO: <epoch: 99, iter: 5,000> psnr: 6.2112e+00 19-05-08 19:49:07.859 - INFO: <epoch:199, iter: 10,000> psnr: 5.0530e+00 19-05-08 20:32:37.573 - INFO: <epoch:299, iter: 15,000> psnr: 5.0124e+00 19-05-08 21:18:05.244 - INFO: <epoch:399, iter: 20,000> psnr: 4.7408e+00 19-05-08 22:05:09.836 - INFO: <epoch:499, iter: 25,000> psnr: 4.7600e+00 19-05-08 22:50:40.863 - INFO: <epoch:599, iter: 30,000> psnr: 4.9239e+00 19-05-08 23:36:27.306 - INFO: <epoch:699, iter: 35,000> psnr: 5.0046e+00 19-05-09 00:22:15.370 - INFO: <epoch:799, iter: 40,000> psnr: 5.2917e+00 19-05-09 01:07:45.590 - INFO: <epoch:899, iter: 45,000> psnr: 4.6685e+00 19-05-09 01:53:37.342 - INFO: <epoch:999, iter: 50,000> psnr: 4.9261e+00 19-05-09 02:39:02.434 - INFO: <epoch:1099, iter: 55,000> psnr: 5.0573e+00 19-05-09 03:24:58.855 - INFO: <epoch:1199, iter: 60,000> psnr: 4.9035e+00 19-05-09 04:10:19.832 - INFO: <epoch:1299, iter: 65,000> psnr: 5.0180e+00 19-05-09 04:54:04.960 - INFO: <epoch:1399, iter: 70,000> psnr: 4.9490e+00 19-05-09 05:39:43.085 - INFO: <epoch:1499, iter: 75,000> psnr: 5.0774e+00 19-05-09 06:23:38.317 - INFO: <epoch:1599, iter: 80,000> psnr: 5.0833e+00 19-05-09 07:09:26.996 - INFO: <epoch:1699, iter: 85,000> psnr: 4.7962e+00 19-05-09 07:54:07.815 - INFO: <epoch:1799, iter: 90,000> psnr: 4.9237e+00 19-05-09 08:39:44.546 - INFO: <epoch:1899, iter: 95,000> psnr: 4.8400e+00 19-05-09 09:23:34.242 - INFO: <epoch:1999, iter: 100,000> psnr: 4.9499e+00 19-05-09 10:10:12.897 - INFO: <epoch:2099, iter: 105,000> psnr: 5.1629e+00 19-05-09 10:58:45.951 - INFO: <epoch:2199, iter: 110,000> psnr: 5.2242e+00 19-05-09 11:46:20.899 - INFO: <epoch:2299, iter: 115,000> psnr: 5.2426e+00 19-05-09 12:35:58.570 - INFO: <epoch:2399, iter: 120,000> psnr: 5.2277e+00 19-05-09 13:24:21.516 - INFO: <epoch:2499, iter: 125,000> psnr: 4.9235e+00 19-05-09 14:08:53.873 - INFO: <epoch:2599, iter: 130,000> psnr: 6.2259e+00 19-05-09 14:54:28.612 - INFO: <epoch:2699, iter: 135,000> psnr: 5.4882e+00 19-05-09 15:38:39.004 - INFO: <epoch:2799, iter: 140,000> psnr: 4.8028e+00 19-05-09 16:23:13.327 - INFO: <epoch:2899, iter: 145,000> psnr: 4.8086e+00 19-05-09 17:10:03.492 - INFO: <epoch:2999, iter: 150,000> psnr: 4.7097e+00 19-05-09 17:57:27.998 - INFO: <epoch:3099, iter: 155,000> psnr: 4.8913e+00 19-05-09 18:42:59.513 - INFO: <epoch:3199, iter: 160,000> psnr: 4.7553e+00 19-05-09 19:31:03.326 - INFO: <epoch:3299, iter: 165,000> psnr: 4.8749e+00 19-05-09 20:18:22.245 - INFO: <epoch:3399, iter: 170,000> psnr: 5.1612e+00 19-05-09 21:06:11.146 - INFO: <epoch:3499, iter: 175,000> psnr: 4.6685e+00 19-05-09 21:53:42.637 - INFO: <epoch:3599, iter: 180,000> psnr: 4.7500e+00 19-05-09 22:40:32.650 - INFO: <epoch:3699, iter: 185,000> psnr: 4.7687e+00 19-05-09 23:26:12.187 - INFO: <epoch:3799, iter: 190,000> psnr: 4.8440e+00 19-05-10 00:13:29.872 - INFO: <epoch:3899, iter: 195,000> psnr: 4.9646e+00 19-05-10 01:00:36.196 - INFO: <epoch:3999, iter: 200,000> psnr: 5.1833e+00 19-05-10 01:47:40.721 - INFO: <epoch:4099, iter: 205,000> psnr: 4.9516e+00 19-05-10 02:34:43.220 - INFO: <epoch:4199, iter: 210,000> psnr: 5.0352e+00 19-05-10 03:21:31.067 - INFO: <epoch:4299, iter: 215,000> psnr: 4.9865e+00 19-05-10 04:05:41.617 - INFO: <epoch:4399, iter: 220,000> psnr: 4.6804e+00 19-05-10 04:52:24.635 - INFO: <epoch:4499, iter: 225,000> psnr: 4.9525e+00 19-05-10 05:38:48.420 - INFO: <epoch:4599, iter: 230,000> psnr: 4.9832e+00 19-05-10 06:25:33.566 - INFO: <epoch:4699, iter: 235,000> psnr: 5.2735e+00 19-05-10 07:09:53.263 - INFO: <epoch:4799, iter: 240,000> psnr: 4.8645e+00 19-05-10 07:56:47.936 - INFO: <epoch:4899, iter: 245,000> psnr: 4.9031e+00 19-05-10 08:43:46.142 - INFO: <epoch:4999, iter: 250,000> psnr: 5.0507e+00 19-05-10 09:30:08.394 - INFO: <epoch:5099, iter: 255,000> psnr: 4.9345e+00 19-05-10 10:17:11.694 - INFO: <epoch:5199, iter: 260,000> psnr: 4.8709e+00 19-05-10 11:02:00.584 - INFO: <epoch:5299, iter: 265,000> psnr: 5.3140e+00 19-05-10 11:49:01.726 - INFO: <epoch:5399, iter: 270,000> psnr: 5.5823e+00 Is the result correct at this time? If it is wrong. Is it related to my use of two graphics cards?

xinntao commented 5 years ago

There must be something wrong. You need to check your inputs and codes. Two GPUs will not results in the problem, I think.

Feiyu-Zhang commented 5 years ago

There must be something wrong. You need to check your inputs and codes. Two GPUs will not results in the problem, I think.

Thanks for your patient reply. I will check the input and code.

Feiyu-Zhang commented 5 years ago

There must be something wrong. You need to check your inputs and codes. Two GPUs will not results in the problem, I think.

I seem to have found the problem. My validate data is 16-bit/color RGB. It seems that data should be 8-bit/color RGB. I think there is a problem during generating LR validate data. I will check _scripts/generate_mod_LRbic.m

Feiyu-Zhang commented 5 years ago

There must be something wrong. You need to check your inputs and codes. Two GPUs will not results in the problem, I think.

In _scripts/generate_mod_LRbic.m line:50 img = im2double(img); the code in this line will make LR data be 16/bits. I think that is why my problem as described occurs. I will train again. Hopefully all is well.

Feiyu-Zhang commented 5 years ago

There must be something wrong. You need to check your inputs and codes. Two GPUs will not results in the problem, I think.

Hi, xintao. Could you tell me which version you use Matlab/octave image/opencv library?

xinntao commented 5 years ago

Malab: R2017b (9.3.0.713579) 64-bit (glnxa64) / R2016b (9.1.0.441655) 64-bit (glnxa64) (they produce the same bicubic results)

Opencv:

>>> import cv2
>>> cv2.__version__
'4.0.0'
Feiyu-Zhang commented 5 years ago

Thanks. Could you tell me which version OpenCV is in Matlab? Because I want to use scripts/generate_mod_LR_bic.m to generate low-resolution images. But I maybe generate images of other color space. So I want to know your OpenCV version in Matlab.

On Mon, May 13, 2019 at 12:06 AM Xintao notifications@github.com wrote:

Malab: R2017b (9.3.0.713579) 64-bit (glnxa64) / R2016b (9.1.0.441655) 64-bit (glnxa64) (they produce the same bicubic results)

Opencv:

import cv2 cv2.version '4.0.0'

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/xinntao/BasicSR/issues/123#issuecomment-491608158, or mute the thread https://github.com/notifications/unsubscribe-auth/AIEMRNHW3Q2YHGCBDCR4UNTPVA6BDANCNFSM4HL7YS7A .

xinntao commented 5 years ago

I don't think the bicubic function in Matlab will call the opencv library. If so, please let me know.

Feiyu-Zhang commented 5 years ago

I don't think the bicubic function in Matlab will call the opencv library. If so, please let me know.

I don't use OpenCV in Matlab. I load image-2.10.0 library in Matlab so that I can use imread,im2double,imresize... But I think my version isn't the same as yours. Could you tell me which image version in Matlab?

xinntao commented 5 years ago

How can I see the image version in my Matlab?

Feiyu-Zhang commented 5 years ago

How can I see the image version in my Matlab?

You are really kind to me. I think there are connections with my Octave(replacement of Matlab). It may generate images which are different color space or different bits per pixel. So I use Matlab to generate LR images eventually. As LR of validation dataset, the model seems to have generated the correct results. As follow, baboon_bicLRx4_65000 65000 iterations(1300 epochs) PSNR:17.47. Do you think I have started to train correctly? By the way, I used your pre-trained model(_RRDB_ESRGANx4.pth) and followed the given parameter(_trainESRGAN.json). Do I need to reduce learning rate etc...

xinntao commented 5 years ago

The learning rate scheme is done in the config file. Wait to see the results (like in 200k iter).

Feiyu-Zhang commented 5 years ago

The learning rate scheme is done in the config file. Wait to see the results (like in 200k iter).

baboon_265000 Above is baboon which is trained 265000 iterations. Do you think where is the problem?

xinntao commented 5 years ago

It seems strange.... 1) may check your data 2) do you use the default config file?

shiyangjing commented 5 years ago

There must be something wrong. You need to check your inputs and codes. Two GPUs will not results in the problem, I think.

In _scripts/generate_mod_LRbic.m line:50 img = im2double(img); the code in this line will make LR data be 16/bits. I think that is why my problem as described occurs. I will train again. Hopefully all is well.

How did you solve the problem, by modifying the function im = im2double(img)?

Feiyu-Zhang commented 5 years ago

There must be something wrong. You need to check your inputs and codes. Two GPUs will not results in the problem, I think.

In _scripts/generate_mod_LRbic.m line:50 img = im2double(img); the code in this line will make LR data be 16/bits. I think that is why my problem as described occurs. I will train again. Hopefully all is well.

How did you solve the problem, by modifying the function im = im2double(img)?

I run code in Matlab finally. It succeeded.