Skip to content

Issue with the color quality of the generated images #12

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
iG8R opened this issue Jul 27, 2024 · 34 comments
Open

Issue with the color quality of the generated images #12

iG8R opened this issue Jul 27, 2024 · 34 comments

Comments

@iG8R
Copy link

iG8R commented Jul 27, 2024

Right away I want to thank you for this wonderful software that allows to colorize manga on the fly.
I've known about the source app for a while now - https://github.com/qweasdd/manga-colorization-v2/, and I'm familiar with its
limitation where processing images wider than 576px results in incorrect coloring.

Is it possible to colorize the image at a size most suitable for the program, i.e. x=576px, and only after this, scale it to a larger size?

Let me explain with an example.

https://mangadex.org/chapter/d72a3eb8-2b20-4c39-a46f-d282eb05e64f/3

Original image (1125 x 1600 Pixels)

How does the image look after processing if the program processed it at dimensions of x = 576px, as originally intended (576 x 820 Pixels)?

This is what the image looks like when processed at sizes exceeding 576px in width (960 x 1367 pixels).

@BinitDOX
Copy link
Owner

Thanks for bringing this up, I did not even notice it before!

I've now added scaling options:

  • closest_fit (Same as before, color loss but least quality loss)
  • basic (Med quality loss, text may become unreadable if extremely small)
  • antialias (Med quality loss)
  • super_resolution (Extremely slow, don't use yet, will fix soon)

Usage: python app-stream.py --resize_method=basic

@iG8R
Copy link
Author

iG8R commented Jul 27, 2024

@BinitDOX
Thank you very much!
Here is the solution for upscaling images using the RealESRGAN_x4plus_anime_6B model after colorization: https://github.com/xiaogdgenuine/Manga-Colorization-FJ
Perhaps the RealESRGAN_x2plus model could be used for this purpose also.

@iG8R
Copy link
Author

iG8R commented Jul 27, 2024

Due to the presence of CUDA, this fork works extremely fast.

@iG8R
Copy link
Author

iG8R commented Jul 27, 2024

@BinitDOX
Unfortunately, the new fix doesn't work. The following error arises:

(venv) f:\Manga-Colorization-FJ\Manga-Colorization-FJ-main>app-stream.py --resize_method=basic
F:\Manga-Colorization-FJ\Manga-Colorization-FJ-main\colorizator.py:27: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.
  self.colorizer.generator.load_state_dict(torch.load(generator_path, map_location = device))
F:\Manga-Colorization-FJ\Manga-Colorization-FJ-main\denoising\denoiser.py:42: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.
  state_dict = torch.load(weights_path, map_location=torch.device('cpu'))
 * Serving Flask app 'app-stream'
 * Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on all addresses (0.0.0.0)
 * Running on https://127.0.0.1:5000
 * Running on https://192.168.0.3:5000
Press CTRL+C to quit
127.0.0.1 - - [27/Jul/2024 23:49:50] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [27/Jul/2024 23:49:52] "GET /favicon.ico HTTP/1.1" 404 -
127.0.0.1 - - [27/Jul/2024 23:50:05] "OPTIONS /colorize-image-data HTTP/1.1" 200 -
Image Height: None, Image Width: 992
Requested 09a37cb0-c8d0-4d32-9b3c-3f5a9965f8f2 size 992
F:\Manga-Colorization-FJ\Manga-Colorization-FJ-main\denoising\functions.py:40: UserWarning: The torch.cuda.*DtypeTensor constructors are no longer recommended. It's best to use methods such as torch.tensor(data, dtype=*, device='cuda') to create tensors. (Triggered internally at C:\actions-runner\_work\pytorch\pytorch\builder\windows\pytorch\torch\csrc\tensor\python_tensor.cpp:80.)
  downsampledfeatures = torch.cuda.FloatTensor(N, Cout, Hout, Wout).fill_(0)
Colorized size 576 in 1.3581924438476562 seconds.
[2024-07-27 23:50:06,768] ERROR in app: Exception on /colorize-image-data [POST]
Traceback (most recent call last):
  File "f:\Manga-Colorization-FJ\Manga-Colorization-FJ-main\venv\Lib\site-packages\flask\app.py", line 1473, in wsgi_app
    response = self.full_dispatch_request()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "f:\Manga-Colorization-FJ\Manga-Colorization-FJ-main\venv\Lib\site-packages\flask\app.py", line 882, in full_dispatch_request
    rv = self.handle_user_exception(e)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "f:\Manga-Colorization-FJ\Manga-Colorization-FJ-main\venv\Lib\site-packages\flask_cors\extension.py", line 178, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
                                                ^^^^^^^^^^^^^^^^^^
  File "f:\Manga-Colorization-FJ\Manga-Colorization-FJ-main\venv\Lib\site-packages\flask\app.py", line 880, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "f:\Manga-Colorization-FJ\Manga-Colorization-FJ-main\venv\Lib\site-packages\flask\app.py", line 865, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "F:\Manga-Colorization-FJ\Manga-Colorization-FJ-main\app-stream.py", line 64, in colorize_image_data
    color_image_data64 = colorize_image(image, colorizer, colored_img_size, denoiser, denoiser_sigma, (img_width, img_height))
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "F:\Manga-Colorization-FJ\Manga-Colorization-FJ-main\app-stream.py", line 118, in colorize_image
    colorized_img = upscale_basic(colorized_img, original_size)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "F:\Manga-Colorization-FJ\Manga-Colorization-FJ-main\app-stream.py", line 157, in upscale_basic
    upscaled_image = cv2.resize(image, target_size, interpolation=cv2.INTER_CUBIC)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
cv2.error: OpenCV(4.10.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\resize.cpp:4155: error: (-215:Assertion failed) inv_scale_x > 0 in function 'cv::resize'

127.0.0.1 - - [27/Jul/2024 23:50:06] "POST /colorize-image-data HTTP/1.1" 500 -

@BinitDOX
Copy link
Owner

Created a new backend, with the ESRGAN super resolution and unexpectedly time taken to colorize at 576px and upscale using super resolution is much less than just coloring at larger size. The quality is better than the original. Thank you for referencing that model!

Re-clone the repository, download and place the generator weights in the networks folder of Backend-New. Then simply run: python app-stream.py (The upscale_method is now set to 'super_resolution' by default)

That error is because I updated the extension (frontend) files, you can fix it by re-loading the extension package into the browser.


image
download

@BinitDOX
Copy link
Owner

This repository desperately needs reorganization and redocumentation.

@iG8R
Copy link
Author

iG8R commented Jul 28, 2024

Thank you very much for your efforts!
But something went wrong, and there is no reaction from the side of the server when I open a manga page, e.g. the one mentioned above.
Although, when I test whether the addon in Firefox works well in the conjunction with the server, I get that everything is fine, as you can see from the log lines 127.0.0.1 - - [28/Jul/2024 14:28:30] "GET / HTTP/1.1" 200 -.
Here is the addon:
managa-colorizer-anysite-0.3.0.xpi.txt

PS. BTW, why are there so many warnings in the log?

(venv) f:\Manga-Colorization-FJ\Manga-Colorization-FJ-main>app-stream.py
F:\Manga-Colorization-FJ\Manga-Colorization-FJ-main\colorizator.py:22: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.
  state_dict = torch.load(config.colorizer_path, map_location=self.device)
F:\Manga-Colorization-FJ\Manga-Colorization-FJ-main\denoising\denoiser.py:42: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.
  state_dict = torch.load(weights_path, map_location=torch.device('cpu'))
F:\Manga-Colorization-FJ\Manga-Colorization-FJ-main\upscalator.py:19: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.
  model = torch.load(config.upscaler_path, map_location=self.device)
f:\Manga-Colorization-FJ\Manga-Colorization-FJ-main\venv\Lib\site-packages\torch\serialization.py:1189: SourceChangeWarning: source code of class 'torch.nn.modules.conv.Conv2d' has changed. you can retrieve the original source code by accessing the object's source attribute or set `torch.nn.Module.dump_patches = True` and use the patch tool to revert the changes.
  warnings.warn(msg, SourceChangeWarning)
f:\Manga-Colorization-FJ\Manga-Colorization-FJ-main\venv\Lib\site-packages\torch\serialization.py:1189: SourceChangeWarning: source code of class 'torch.nn.modules.container.Sequential' has changed. you can retrieve the original source code by accessing the object's source attribute or set `torch.nn.Module.dump_patches = True` and use the patch tool to revert the changes.
  warnings.warn(msg, SourceChangeWarning)
f:\Manga-Colorization-FJ\Manga-Colorization-FJ-main\venv\Lib\site-packages\torch\serialization.py:1189: SourceChangeWarning: source code of class 'torch.nn.modules.activation.LeakyReLU' has changed. you can retrieve the original source code by accessing the object's source attribute or set `torch.nn.Module.dump_patches = True` and use the patch tool to revert the changes.
  warnings.warn(msg, SourceChangeWarning)
 * Serving Flask app 'app-stream'
 * Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on all addresses (0.0.0.0)
 * Running on https://127.0.0.1:5000
 * Running on https://192.168.0.3:5000
Press CTRL+C to quit
127.0.0.1 - - [28/Jul/2024 14:25:33] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [28/Jul/2024 14:26:55] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [28/Jul/2024 14:28:30] "GET / HTTP/1.1" 200 -

@BinitDOX
Copy link
Owner

Oh my bad, I forgot a comma in the Firefox-AnySite extension script. Please update (git pull) and reload the package.

You can ignore those warnings. The first few security warnings occur if we load the entire model (model network code + weights), can be fixed by loading the network first (state_dict), then loading the weights. The source code warnings occur if we essetially load old model with new (updated torch) code, can be fixed by resaving your own copy of the model, then you can always load this saved model.

@iG8R
Copy link
Author

iG8R commented Jul 28, 2024

Still the issue continues to exist :(
The same thing happens in Firefox and Chrome.
It seems that the addon does not work at all while the site is loading.
I even reinstalled Manga-Colorizer from scratch, but with the same result.

MangaColorizer-server-connection-issue-Video_2024-07-28_17-23-03.webm
Log from the Firefox console
17:23:18.615 Navigated to https://mangadex.org/chapter/d72a3eb8-2b20-4c39-a46f-d282eb05e64f/3
17:23:19.332 GET
https://mangadex.org/chapter/d72a3eb8-2b20-4c39-a46f-d282eb05e64f/3
[HTTP/1.1 200  0ms]

17:23:20.148 GET
https://mangadex.org/_nuxt/entry.C8jKr6pg.css
[HTTP/3 200  60ms]

17:23:20.198 GET
https://mangadex.org/_nuxt/mchunk-pg-auth-user-connections.J5HyYnhO.css
[HTTP/3 200  30ms]

17:23:20.223 GET
https://mangadex.org/_nuxt/mchunk-pg-group-_id_.bhaa59IK.css
[HTTP/3 200  30ms]

17:23:20.239 GET
https://mangadex.org/_nuxt/mchunk-pg-author-_id_.BUuKnuNh.css
[HTTP/3 200  42ms]

17:23:20.254 GET
https://mangadex.org/_nuxt/mchunk-pg-author-edit.Dp0Riguq.css
[HTTP/3 200  29ms]

17:23:20.267 GET
https://mangadex.org/_nuxt/mchunk-pg-chapter-_id_.CuO1qHx8.css
[HTTP/3 200  28ms]

17:23:20.282 GET
https://mangadex.org/_nuxt/mchunk-pg-title-_id_.BSe1tbJT.css
[HTTP/3 200  30ms]

17:23:20.283 GET
https://mangadex.org/_nuxt/mchunk-pg-misc.C1QbgJIw.css
[HTTP/3 200  57ms]

17:23:20.284 GET
https://mangadex.org/_nuxt/mchunk-pg-group-edit.CBMk_3p5.css
[HTTP/3 200  29ms]

17:23:20.286 GET
https://mangadex.org/_nuxt/mchunk-pg-list-edit.CihXXb7M.css
[HTTP/3 200  29ms]

17:23:20.287 GET
https://mangadex.org/_nuxt/entry.CC1PS2fU.js
[HTTP/3 200  97ms]

17:23:20.288 GET
https://mangadex.org/_nuxt/mchunk-pg-auth-user-connections.B5U557Wx.js
[HTTP/3 200  129ms]

17:23:20.289 GET
https://mangadex.org/_nuxt/mchunk-pg-group-_id_.CJzGsSZm.js
[HTTP/3 200  51ms]

17:23:20.300 GET
https://mangadex.org/_nuxt/mchunk-pg-author-_id_.Ch3W1q94.js
[HTTP/3 200  118ms]

17:23:20.306 GET
https://mangadex.org/_nuxt/mchunk-pg-author-edit.CfbAtvdj.js
[HTTP/3 200  72ms]

17:23:20.315 GET
https://mangadex.org/_nuxt/mchunk-pg-chapter-_id_.BKRr-8Aj.js
[HTTP/3 200  102ms]

17:23:20.331 GET
https://mangadex.org/_nuxt/mchunk-pg-title-_id_.DQu9kxqn.js
[HTTP/3 200  59ms]

17:23:20.332 GET
https://mangadex.org/_nuxt/mchunk-pg-misc.Cmbn2pEF.js
[HTTP/3 200  86ms]

17:23:20.348 GET
https://mangadex.org/_nuxt/mchunk-pg-group-edit.D_98yyV4.js
[HTTP/3 200  50ms]

17:23:20.349 GET
https://mangadex.org/_nuxt/mchunk-pg-list-edit.2WHQCKtb.js
[HTTP/3 200  51ms]

17:23:20.354 Error in parsing value for ‘-webkit-text-size-adjust’.  Declaration dropped. entry.C8jKr6pg.css:1:210
17:23:20.355 Error in parsing value for ‘grid-template-columns’.  Declaration dropped. entry.C8jKr6pg.css:1:15855
17:23:20.355 Unknown property ‘-moz-column-gap’.  Declaration dropped. entry.C8jKr6pg.css:1:17001
17:23:20.355 Unknown property ‘-moz-column-gap’.  Declaration dropped. entry.C8jKr6pg.css:1:17051
17:23:20.355 Unknown property ‘-moz-column-gap’.  Declaration dropped. entry.C8jKr6pg.css:1:17099
17:23:20.355 Unknown property ‘-moz-column-gap’.  Declaration dropped. entry.C8jKr6pg.css:1:17145
17:23:20.357 Unknown property ‘-moz-column-gap’.  Declaration dropped. entry.C8jKr6pg.css:1:38356
17:23:20.357 Ruleset ignored due to bad selector. entry.C8jKr6pg.css:1:50268
17:23:20.420 Unknown property ‘-moz-column-gap’.  Declaration dropped. mchunk-pg-chapter-_id_.CuO1qHx8.css:1:4920
17:23:20.422 Unknown property ‘-moz-column-gap’.  Declaration dropped. mchunk-pg-chapter-_id_.CuO1qHx8.css:1:35876
17:23:20.422 Unknown pseudo-class or pseudo-element ‘not’.  Ruleset ignored due to bad selector. mchunk-pg-chapter-_id_.CuO1qHx8.css:1:39223
17:23:20.426 Error in parsing value for ‘vertical-align’.  Declaration dropped. mchunk-pg-author-_id_.BUuKnuNh.css:1:8608
17:23:20.437 Unknown property ‘-moz-column-gap’.  Declaration dropped. mchunk-pg-misc.C1QbgJIw.css:1:27530
17:23:20.438 Unknown property ‘-moz-column-gap’.  Declaration dropped. mchunk-pg-misc.C1QbgJIw.css:1:35887
17:23:20.614 [UserPreferences] Theme change from 'undefined' to 'system'. mchunk-pg-author-_id_.Ch3W1q94.js:7:4259
17:23:20.614 [UserPreferences] Theme 'system' applied. mchunk-pg-author-_id_.Ch3W1q94.js:7:4259
17:23:20.821 Unknown descriptor ‘font-named-instance’ in @font-face rule.  Skipped to next declaration. 3:1:122
17:23:20.825 Error in parsing value for ‘-webkit-text-size-adjust’.  Declaration dropped. 3:231:29
17:23:20.826 Unknown property ‘-moz-column-gap’.  Declaration dropped. 3:1829:19
17:23:20.826 Unknown property ‘-moz-column-gap’.  Declaration dropped. 3:1833:19
17:23:21.520 Medium parser loaded app.js:2:9
17:23:21.741 GET
https://mangadex.org/fonts/poppins/poppins-v19-400.woff2
[HTTP/3 200  29ms]

17:23:22.033 GET
https://mangadex.org/_nuxt/workbox-window.prod.es5.D5gOYdM7.js
[HTTP/3 200  31ms]

17:23:22.072 GET
https://www.google.com/recaptcha/api.js?render=explicit
[HTTP/3 200  57ms]

17:23:22.110 XHRGET
https://mangadex.org/_nuxt/builds/meta/aefd995d-6e59-42d2-89b7-6580b5e8e0a9.json
[HTTP/1.1 200  0ms]

17:23:22.124 Source map error: NetworkError when attempting to fetch resource.
Resource URL: moz-extension://1b462958-c425-44f0-aca4-602fc99c7ef7/browser-polyfill.min.js
Source Map URL: browser-polyfill.min.js.map
17:23:22.646 XHROPTIONS
https://api.mangadex.org/auth/refresh
[HTTP/3 204  78ms]

17:23:22.648 GET
https://www.gstatic.com/recaptcha/releases/Xv-KF0LlBu_a0FJ9I5YSlX5m/recaptcha__en.js
[HTTP/3 200  102ms]

17:23:22.900 XHRGET
https://api.mangadex.org/feature-flags
[HTTP/3 200  29ms]

17:23:22.958 XHRPOST
https://api.mangadex.org/auth/refresh
[HTTP/3 202  185ms]

17:23:23.161 [FeatureFlags] Initialized feature flags (1019ms) 
Object { defaultsApplication: Proxy, overridesLocal: Proxy, defaultsServer: Proxy }
mchunk-pg-chapter-_id_.BKRr-8Aj.js:1:1910
17:23:23.232 GET
https://www.google.com/recaptcha/api2/anchor?ar=1&k=6LflOrIaAAAAACcpRSiKQlt_X6bq-QcVjHTG1diJ&co=aHR0cHM6Ly9tYW5nYWRleC5vcmc6NDQz&hl=en&v=Xv-KF0LlBu_a0FJ9I5YSlX5m&size=invisible&cb=69d9kha069pt
[HTTP/3 200  63ms]

17:23:23.233 GET
https://mangadex.org/_nuxt/default.CVpzN_K2.js
[HTTP/3 200  28ms]

17:23:23.257 GET
https://mangadex.org/_nuxt/default.CKq7lz9R.css
[HTTP/3 200  29ms]

17:23:23.564 [Announcements] Fetching announcements... mchunk-pg-chapter-_id_.BKRr-8Aj.js:1:5088
17:23:23.565 [GenericDebug] Config at time of start: 
Object { readStyle: 0, headerStyle: 0, _viewStyle: 0, _limitWidth: true, _limitHeight: true, _scrollLock: {…}, _longStripMargin: 4, maxWidth: -1, maxHeight: -1, limitMaxWidth: false, … }
entry.CC1PS2fU.js:2:26962
17:23:23.571 Error in parsing value for ‘fill’.  Declaration dropped. 3:1:1
17:23:23.577 Content-Security-Policy warnings 4
17:23:23.608 [Announcements] Fetched announcements (1ms) mchunk-pg-chapter-_id_.BKRr-8Aj.js:1:5088
17:23:23.642 Partitioned cookie or storage access was provided to “https://www.google.com/recaptcha/api2/anchor?ar=1&k=6LflOrIaAAAAACcpRSiKQlt_X6bq-QcVjHTG1diJ&co=aHR0cHM6Ly9tYW5nYWRleC5vcmc6NDQz&hl=en&v=Xv-KF0LlBu_a0FJ9I5YSlX5m&size=invisible&cb=69d9kha069pt” because it is loaded in the third-party context and dynamic state partitioning is enabled.
17:23:24.400 GET
https://mangadex.org/img/brand/mangadex-logo.svg
[HTTP/3 200  62ms]

17:23:24.402 GET
https://mangadex.org/img/brand/mangadex-wordmark.svg
[HTTP/3 200  29ms]

17:23:24.409 GET
https://mangadex.org/img/miku.jpg
[HTTP/3 200  111ms]

17:23:24.667 GET
https://www.gstatic.com/recaptcha/releases/Xv-KF0LlBu_a0FJ9I5YSlX5m/styles__ltr.css
[HTTP/3 200  64ms]

17:23:24.668 GET
https://www.gstatic.com/recaptcha/releases/Xv-KF0LlBu_a0FJ9I5YSlX5m/recaptcha__en.js
[HTTP/3 200  137ms]

17:23:24.860 Unknown property ‘-moz-border-radius’.  Declaration dropped. styles__ltr.css:1:383
17:23:24.862 Unknown property ‘-moz-border-radius’.  Declaration dropped. styles__ltr.css:1:20396
17:23:24.862 Unknown property ‘-moz-border-radius’.  Declaration dropped. styles__ltr.css:1:20717
17:23:24.862 Keyframe rule ignored due to bad selector. styles__ltr.css:1:21259
17:23:24.862 Keyframe rule ignored due to bad selector. styles__ltr.css:1:21286
17:23:24.862 Keyframe rule ignored due to bad selector. styles__ltr.css:1:21376
17:23:24.862 Keyframe rule ignored due to bad selector. styles__ltr.css:1:21405
17:23:24.862 Keyframe rule ignored due to bad selector. styles__ltr.css:1:21499
17:23:24.862 Keyframe rule ignored due to bad selector. styles__ltr.css:1:21528
17:23:24.862 Keyframe rule ignored due to bad selector. styles__ltr.css:1:21622
17:23:24.862 Keyframe rule ignored due to bad selector. styles__ltr.css:1:21651
17:23:24.862 Keyframe rule ignored due to bad selector. styles__ltr.css:1:21745
17:23:24.862 Keyframe rule ignored due to bad selector. styles__ltr.css:1:21774
17:23:24.862 Keyframe rule ignored due to bad selector. styles__ltr.css:1:21868
17:23:24.862 Keyframe rule ignored due to bad selector. styles__ltr.css:1:21898
17:23:24.862 Unknown property ‘-moz-border-radius’.  Declaration dropped. styles__ltr.css:1:22407
17:23:24.862 Keyframe rule ignored due to bad selector. styles__ltr.css:1:22658
17:23:24.862 Keyframe rule ignored due to bad selector. styles__ltr.css:1:22686
17:23:24.862 Keyframe rule ignored due to bad selector. styles__ltr.css:1:22787
17:23:24.862 Keyframe rule ignored due to bad selector. styles__ltr.css:1:22816
17:23:24.862 Unknown property ‘-moz-box-shadow’.  Declaration dropped. styles__ltr.css:1:25771
17:23:24.862 Unknown property ‘-moz-border-radius’.  Declaration dropped. styles__ltr.css:1:27041
17:23:24.862 Unknown property ‘-moz-box-shadow’.  Declaration dropped. styles__ltr.css:1:27126
17:23:24.862 Unknown property ‘-moz-box-shadow’.  Declaration dropped. styles__ltr.css:1:27256
17:23:24.862 Expected ‘none’, URL, or filter function but found ‘progid’.  Error in parsing value for ‘filter’.  Declaration dropped. styles__ltr.css:1:29103
17:23:24.863 Unknown property ‘-moz-border-radius’.  Declaration dropped. styles__ltr.css:1:37651
17:23:24.863 Unknown property ‘-moz-box-shadow’.  Declaration dropped. styles__ltr.css:1:38057
17:23:24.863 Unknown property ‘-moz-border-radius’.  Declaration dropped. styles__ltr.css:1:41844
17:23:24.863 Unknown property ‘-moz-box-shadow’.  Declaration dropped. styles__ltr.css:1:41882
17:23:24.863 Expected ‘none’, URL, or filter function but found ‘alpha(’.  Error in parsing value for ‘filter’.  Declaration dropped. styles__ltr.css:1:49145
17:23:24.863 Unknown property ‘-moz-transform’.  Declaration dropped. styles__ltr.css:1:49867
17:23:24.863 Unknown property ‘-moz-transform’.  Declaration dropped. styles__ltr.css:1:50015
17:23:24.863 Unknown property ‘-moz-backface-visibility’.  Declaration dropped. styles__ltr.css:1:51258
17:23:25.041 Ignoring unsupported entryTypes: longtask. recaptcha__en.js:321:502
17:23:25.083 GET
https://mangadex.org/img/flags/gb.svg
[HTTP/3 200  42ms]

17:23:25.088 GET
https://mangadex.org/img/flags/sq.svg
[HTTP/3 200  43ms]

17:23:25.090 GET
https://mangadex.org/img/flags/sa.svg
[HTTP/3 200  43ms]

17:23:25.297 Uncaught TypeError: can't redefine non-configurable property "rwt"
    <anonymous> https://www.google.com/recaptcha/api2/anchor?ar=1&k=6LflOrIaAAAAACcpRSiKQlt_X6bq-QcVjHTG1diJ&co=aHR0cHM6Ly9tYW5nYWRleC5vcmc6NDQz&hl=en&v=Xv-KF0LlBu_a0FJ9I5YSlX5m&size=invisible&cb=69d9kha069pt:1
anchor:1:8
17:23:25.657 GET
https://mangadex.org/fonts/poppins/poppins-v19-700.woff2
[HTTP/3 200  33ms]

17:23:25.658 GET
https://mangadex.org/fonts/poppins/poppins-v19-500.woff2
[HTTP/3 200  32ms]

17:23:26.056 SecurityError: Permission denied to access property "document" on cross-origin object content-script.js:28
17:23:26.198 GET
https://mangadex.org/img/flags/az.svg
[HTTP/3 200  45ms]

17:23:26.199 GET
https://mangadex.org/img/flags/bd.svg
[HTTP/3 200  44ms]

17:23:26.201 GET
https://mangadex.org/img/flags/mm.svg
[HTTP/3 200  33ms]

17:23:26.201 GET
https://mangadex.org/img/flags/bg.svg
[HTTP/3 200  43ms]

17:23:26.202 GET
https://mangadex.org/img/flags/ad.svg
[HTTP/3 200  42ms]

17:23:26.204 GET
https://mangadex.org/img/flags/cn.svg
[HTTP/3 200  33ms]

17:23:26.205 GET
https://mangadex.org/img/flags/hk.svg
[HTTP/3 200  32ms]

17:23:26.213 GET
https://mangadex.org/img/flags/hr.svg
[HTTP/3 200  31ms]

17:23:26.214 GET
https://mangadex.org/img/flags/cz.svg
[HTTP/3 200  43ms]

17:23:26.216 GET
https://mangadex.org/img/flags/dk.svg
[HTTP/3 200  31ms]

17:23:26.217 GET
https://mangadex.org/img/flags/nl.svg
[HTTP/3 200  43ms]

17:23:26.218 GET
https://mangadex.org/img/flags/et.svg
[HTTP/3 200  54ms]

17:23:26.218 GET
https://mangadex.org/img/flags/eo.svg
[HTTP/3 200  32ms]

17:23:26.221 GET
https://mangadex.org/img/flags/ph.svg
[HTTP/3 200  31ms]

17:23:26.224 GET
https://mangadex.org/img/flags/fi.svg
[HTTP/3 200  30ms]

17:23:26.225 GET
https://mangadex.org/img/flags/fr.svg
[HTTP/3 200  35ms]

17:23:26.226 GET
https://mangadex.org/img/flags/ka.svg
[HTTP/3 200  61ms]

17:23:26.230 GET
https://mangadex.org/img/flags/de.svg
[HTTP/3 200  34ms]

17:23:26.231 GET
https://mangadex.org/img/flags/gr.svg
[HTTP/3 200  34ms]

17:23:26.232 GET
https://mangadex.org/img/flags/il.svg
[HTTP/3 200  33ms]

17:23:26.233 GET
https://mangadex.org/img/flags/in.svg
[HTTP/3 200  50ms]

17:23:26.234 GET
https://mangadex.org/img/flags/hu.svg
[HTTP/3 200  50ms]

17:23:26.235 GET
https://mangadex.org/img/flags/id.svg
[HTTP/3 200  60ms]

17:23:26.240 GET
https://mangadex.org/img/flags/it.svg
[HTTP/3 200  50ms]

17:23:26.241 GET
https://mangadex.org/img/flags/jp.svg
[HTTP/3 200  57ms]

17:23:26.245 GET
https://mangadex.org/img/flags/kz.svg
[HTTP/3 200  59ms]

17:23:26.246 GET
https://mangadex.org/img/flags/kr.svg
[HTTP/3 200  58ms]

17:23:26.247 GET
https://mangadex.org/img/flags/ri.svg
[HTTP/3 200  48ms]

17:23:26.248 GET
https://mangadex.org/img/flags/lt.svg
[HTTP/3 200  47ms]

17:23:26.259 GET
https://mangadex.org/img/flags/my.svg
[HTTP/3 200  48ms]

17:23:26.260 GET
https://mangadex.org/img/flags/mn.svg
[HTTP/3 200  47ms]

17:23:26.263 GET
https://mangadex.org/img/flags/np.svg
[HTTP/3 200  57ms]

17:23:26.265 GET
https://mangadex.org/img/flags/no.svg
[HTTP/3 200  56ms]

17:23:26.266 GET
https://mangadex.org/img/flags/ir.svg
[HTTP/3 200  56ms]

17:23:26.267 GET
https://mangadex.org/img/flags/pl.svg
[HTTP/3 200  45ms]

17:23:26.273 GET
https://mangadex.org/img/flags/pt.svg
[HTTP/3 200  55ms]

17:23:26.276 GET
https://mangadex.org/img/flags/br.svg
[HTTP/3 200  55ms]

17:23:26.281 GET
https://mangadex.org/img/flags/ro.svg
[HTTP/3 200  44ms]

17:23:26.282 GET
https://mangadex.org/img/flags/ru.svg
[HTTP/3 200  55ms]

17:23:26.283 GET
https://mangadex.org/img/flags/rs.svg
[HTTP/3 200  59ms]

17:23:26.287 GET
https://mangadex.org/img/flags/sk.svg
[HTTP/3 200  58ms]

17:23:26.289 GET
https://mangadex.org/img/flags/si.svg
[HTTP/3 200  58ms]

17:23:26.291 GET
https://mangadex.org/img/flags/es.svg
[HTTP/3 200  58ms]

17:23:26.292 GET
https://mangadex.org/img/flags/mx.svg
[HTTP/3 200  58ms]

17:23:26.293 GET
https://mangadex.org/img/flags/se.svg
[HTTP/3 200  51ms]

17:23:26.296 GET
https://mangadex.org/img/flags/tam.svg
[HTTP/3 200  51ms]

17:23:26.298 GET
https://mangadex.org/img/flags/tel.svg
[HTTP/3 200  62ms]

17:23:26.301 GET
https://mangadex.org/img/flags/th.svg
[HTTP/3 200  73ms]

17:23:26.309 GET
https://mangadex.org/img/flags/tr.svg
[HTTP/3 200  76ms]

17:23:26.313 GET
https://mangadex.org/img/flags/ua.svg
[HTTP/3 200  75ms]

17:23:26.317 GET
https://mangadex.org/img/flags/vn.svg
[HTTP/3 200  76ms]

17:23:26.334 GET
https://www.google.com/js/bg/0dKosa6Lh2NxpFh0svIz4L-wz65qkRTTn4jOj6ZWQ1s.js
[HTTP/3 200  17ms]

17:23:26.335 GET
https://fonts.gstatic.com/s/roboto/v18/KFOmCnqEu92Fr1Mu4mxK.woff2
[HTTP/3 200  54ms]

17:23:26.338 GET
https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmEU9fBBc4.woff2
[HTTP/3 200  50ms]

17:23:26.383 XHRGET
https://api.mangadex.org/chapter/d72a3eb8-2b20-4c39-a46f-d282eb05e64f?includes[]=scanlation_group&includes[]=manga&includes[]=user
[HTTP/3 200  407ms]

17:23:26.383 XHRGET
https://api.mangadex.org/at-home/server/d72a3eb8-2b20-4c39-a46f-d282eb05e64f?forcePort443=false
[HTTP/3 200  611ms]

17:23:26.808 GET
https://www.gstatic.com/recaptcha/api2/logo_48.png
[HTTP/3 200  21ms]

17:23:27.075 Source map error: map is undefined
Resource URL: moz-extension://1b462958-c425-44f0-aca4-602fc99c7ef7/browser-polyfill.min.js
Source Map URL: browser-polyfill.min.js.map
17:23:27.092 [Reader Store] Marking C:d72a3eb8-2b20-4c39-a46f-d282eb05e64f read mchunk-pg-chapter-_id_.BKRr-8Aj.js:1:30430
17:23:27.098 GET
https://www.google.com/recaptcha/api2/webworker.js?hl=en&v=Xv-KF0LlBu_a0FJ9I5YSlX5m
[HTTP/3 200  39ms]

17:23:27.109 [Reader Store] Fetching aggregate for d72a3eb8-2b20-4c39-a46f-d282eb05e64f . Groups: 
Array [ "c7ae529a-8392-4154-ac18-576178ef0df3" ]
mchunk-pg-chapter-_id_.BKRr-8Aj.js:1:30430
17:23:27.110 [Reader Cache] Aggregate cache miss, fetching:  
Array [ "c7ae529a-8392-4154-ac18-576178ef0df3" ]
mchunk-pg-chapter-_id_.BKRr-8Aj.js:1:25316
17:23:27.132 Expected color but found ‘success’.  Error in parsing value for ‘color’.  Declaration dropped. 3:1:1
17:23:27.141 GET
https://mangadex.org/pwa/icons/icon-180.png
[HTTP/3 200  42ms]

17:23:27.142 GET
https://mangadex.org/favicon.svg
[HTTP/3 200  42ms]

17:23:27.161 [Reader Page Manager] Server loaded with  239999 ms left mchunk-pg-chapter-_id_.BKRr-8Aj.js:1:18508
17:23:27.190 [Reader Store] Jumping to page G:2 mchunk-pg-chapter-_id_.BKRr-8Aj.js:1:30430
17:23:27.713 Source map error: map is undefined
Resource URL: moz-extension://1b462958-c425-44f0-aca4-602fc99c7ef7/browser-polyfill.min.js
Source Map URL: browser-polyfill.min.js.map
17:23:28.318 Error in parsing value for ‘-webkit-text-size-adjust’.  Declaration dropped. 3:559:29
17:23:28.318 Error in parsing value for ‘-moz-text-size-adjust’.  Declaration dropped. 3:560:26
17:23:28.318 Unknown property ‘text-size-adjust’.  Declaration dropped. 3:561:20
17:23:28.319 Unknown pseudo-class or pseudo-element ‘-ms-expand’.  Ruleset ignored due to bad selector. 3:1249:2
17:23:28.320 Unknown pseudo-class or pseudo-element ‘-ms-expand’.  Ruleset ignored due to bad selector. 3:1452:8
17:23:28.320 Unknown pseudo-class or pseudo-element ‘-ms-check’.  Ruleset ignored due to bad selector. 3:1508:19
17:23:28.321 Unknown pseudo-class or pseudo-element ‘-ms-browse’.  Ruleset ignored due to bad selector. 3:1742:15
17:23:28.321 Unknown pseudo-class or pseudo-element ‘-ms-browse’.  Ruleset ignored due to bad selector. 3:1769:15
17:23:28.321 Unknown property ‘-moz-transition’.  Declaration dropped. 3:1796:19
17:23:28.321 Unknown pseudo-class or pseudo-element ‘-ms-track’.  Ruleset ignored due to bad selector. 3:1800:16
17:23:28.321 Unknown property ‘-moz-transition’.  Declaration dropped. 3:1831:19
17:23:28.321 Unknown pseudo-class or pseudo-element ‘-ms-thumb’.  Ruleset ignored due to bad selector. 3:1835:16
17:23:28.321 Unknown pseudo-class or pseudo-element ‘-ms-thumb’.  Ruleset ignored due to bad selector. 3:1862:23
17:23:28.322 Keyframe rule ignored due to bad selector. 3:2281:29
17:23:28.513 GET
https://www.gstatic.com/recaptcha/releases/Xv-KF0LlBu_a0FJ9I5YSlX5m/recaptcha__en.js
[HTTP/3 200  39ms]

17:23:28.514 XHRGET
https://api.mangadex.org/statistics/chapter?chapter[]=d72a3eb8-2b20-4c39-a46f-d282eb05e64f
[HTTP/3 200  28ms]

17:23:28.515 XHRGET
https://api.mangadex.org/manga/0b171f64-89a5-4c37-b5f9-75cca57e8787/aggregate?translatedLanguage[]=ru&groups[]=c7ae529a-8392-4154-ac18-576178ef0df3
[HTTP/3 200  41ms]

17:23:28.743 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C3-28c354fac09596ca958ab3216963310f9fc8969f671ac100899411bee3066b50.jpg
[HTTP/3 200  171ms]

17:23:28.746 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C1-120b5f36e666d79ee2cf74c271a3b257204af19bf01c977daf593cc391835443.jpg
[HTTP/3 200  179ms]

17:23:28.748 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C4-cf56a5a1029c4eb094b67e18507464da4c82a3ab2d489f8a49966c1df423d0c2.jpg
[HTTP/3 200  218ms]

17:23:28.748 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C2-7e0ce67413ff9a33a7eefcd6999c25b22ec25e673d43cfa6ddc06ea84c8354bc.jpg
[HTTP/3 200  200ms]

17:23:28.749 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C6-f18c63080ef03f1024b746e1f672bf5a0530e979b035e2f70bb95bb259fdb1c7.jpg
[HTTP/3 200  219ms]

17:23:28.749 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C5-46a41328cde21f8966e6ad74de3280d3a4027cde2c4d328b9ac9c053b74e5681.jpg
[HTTP/3 200  219ms]

17:23:28.750 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C7-04cc75ee498817aa201753018e81f34aa78b3d8b7ddf7e706ecd59756e64b0a6.jpg
[HTTP/3 200  230ms]

17:23:29.955 Source map error: map is undefined
Resource URL: moz-extension://1b462958-c425-44f0-aca4-602fc99c7ef7/browser-polyfill.min.js
Source Map URL: browser-polyfill.min.js.map
17:23:30.512 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C8-0685282c3cd3be4fa8dd9e22fc6ffe65278b322028bc7746668d7c1f6cfd72ac.jpg
[HTTP/3 200  123ms]

17:23:30.513 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C9-89df82f4568bb6f6ce22cd7cac7cbd49907e0b76bdf22d7741eb82eee422a413.jpg
[HTTP/3 200  42ms]

17:23:30.517 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C10-9a7e1ecdd802a74a92db4a55e57a057b0b955c8fab839469e8271bcdbe2e3123.jpg
[HTTP/3 200  47ms]

17:23:30.519 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C11-846acef422176577128f5c973f0e3de7d78c900fdac8c6e527a0351122596c9e.jpg
[HTTP/3 200  102ms]

17:23:30.520 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C12-a13b8ccbe1a6b625cf01600c9c6df776681bdf71ba10aae8aaddbdf227c4dfd7.jpg
[HTTP/3 200  125ms]

17:23:30.523 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C13-2ca8bb9a4045e9bf46c0e294db2a89ad591e2b88680fc950d042fc16d139e2df.jpg
[HTTP/3 200  125ms]

17:23:31.792 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C14-2444875a0c066a00c59ee55d9768ac7d2267bd27210b227f0b219e558be411bc.jpg
[HTTP/3 200  36ms]

17:23:32.072 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C15-3446fb5a6e0205ce4a18efc74067d6deff7086e4b9ed8c5b0fafee971a5613a0.jpg
[HTTP/3 200  40ms]

17:23:32.079 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C16-7c56df618b5ab31b9a17a53c7744c78a0a63717e0871729228fdc49139e05c27.jpg
[HTTP/3 200  44ms]

17:23:32.087 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C17-0c5f05eab9fe42dd1af378d62a7e891deb88019758abf857a2281813f59ad39b.jpg
[HTTP/3 200  49ms]

17:23:32.092 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C18-9899f1295c313c6224e392a4719e9e69108132edbc7079026730e93fb32f3ed1.jpg
[HTTP/3 200  60ms]

17:23:32.483 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C19-7e8c5c677f5ffdb64e75c76a74ac6480db951ff47912be26db358e73958c0e5e.jpg
[HTTP/3 200  43ms]

17:23:32.761 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C20-8bb353e359226e67380bc768931fba1ef1337971c53669411570059320897c48.jpg
[HTTP/3 200  31ms]

17:23:32.782 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C21-e15ab223bd1f5184c2fd547f91d8ef167c45b8236c9994a5bf7720a340704d80.jpg
[HTTP/3 200  37ms]

17:23:32.783 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C23-cec0b3a48c9218ae2206732b676b8831c08d6a70ef20a3a58eb29c4b1ea7b9c2.jpg
[HTTP/3 200  58ms]

17:23:32.783 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C22-be9ba6b7bc09788cfc05df3df7696e27156a62599bb48eac275034e0e517abba.jpg
[HTTP/3 200  54ms]

17:23:32.784 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C24-b89472c8caa9e3a27c79896b00b75c4cd188aa5d3143ad00911130ce06f41d34.jpg
[HTTP/3 200  59ms]

17:23:32.914 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C25-b6060c884c20fa6c338f98766cb037242e108630fd08915a6740b088616aeeae.jpg
[HTTP/3 200  27ms]

17:23:33.082 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C26-d33862afadb79b4da43c6fe6690fe7329d731dc3c87e3e30fe8a7eb28af3826d.jpg
[HTTP/3 200  37ms]

17:23:33.083 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C27-31c71789f7f70da6ca9262a55ac14a2fd91f4d75061723373c892dca16ae1464.jpg
[HTTP/3 200  94ms]

17:23:33.084 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C28-2cfa6a041793f9a28fb305912b45332432f1bb4cfb39925bf7de1d1029f42941.jpg
[HTTP/3 200  65ms]

17:23:33.085 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C29-dc446ce48b874bc89416df5b485b2a8b8191758e5bad60d41fd0383537028904.jpg
[HTTP/3 200  90ms]

17:23:33.086 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C31-03bd38a188c71bf099c03283dd3dca45c93aa8553274d9c987ac2eb70ee9b507.jpg
[HTTP/3 200  97ms]

17:23:33.086 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C30-6bfd5f871bfa240fe14ceab7936c88afbf71fd4e91ebee50d8a467723df76515.jpg
[HTTP/3 200  90ms]

17:23:33.236 XHRGET
https://cmdxd98sb0x3yprd.mangadex.network/data/a6b37349c7775bdfb0d94cf6afc60405/C32-3b44020152faf1bf8e478447fb2200e32289afc02515b0f10c11931b4caaa331.jpg
[HTTP/3 200  37ms]

@iG8R
Copy link
Author

iG8R commented Jul 28, 2024

In Chrome:

image

@iG8R
Copy link
Author

iG8R commented Jul 28, 2024

Sorry, my bad, it turns out that I had to click the "Colorize!" button to start colorization on the site, although on earlier versions I had colorization automatically started right after loading the page with manga.

@iG8R
Copy link
Author

iG8R commented Jul 28, 2024

I noticed that 2 files (upscaled.png and colored.png) appear in the root directory while the colorizer is running.
Is it possible to create a cache and at the same time a kind of catalog of the mangas that were already colored, saving the images themselves in a structured way? This way, the unnecessary repeated work by the colorizer can be avoided in the future when visiting these same pages and at the same time store them locally so that users can view them through third-party readers.
Also, it would be great to store finished colore images in the WEBP format, while preserving free disk space.

@iG8R
Copy link
Author

iG8R commented Jul 28, 2024

And one more thing, can it be possible to make a "Show Original" button in addition to the "Colorize!" button?
Since colorization does not always go well with some types of text.

https://senkuro.com/manga/re-monster/chapters/119429828913939988/pages/4

image

@BinitDOX
Copy link
Owner

  • Yes, you do need to press the colorize button once, it also saves the extension settings.
  • Caching was being done in first version of the project, it also did store mangas and chapters in an organized way since it only worked with a single site. Caching is also possible for the updated project by storing images in a folder with URL mapping, but organization will be hard.
  • For a 'show original' feature you would need to save the original image at the server as well. I have again updated the project, and made the colorization optional. I've yet to fix several things, but if you want to use it early: Link to new branch

@iG8R
Copy link
Author

iG8R commented Jul 28, 2024

Thanks a lot again!

  1. Initially, when I first found your project, I read about needing to click the "Colorize!" button in the instructions. However, everything worked for me without clicking it initially, so I completely forgot about it. When I hit a dead end and realized the issue was only with the addon, I looked at the code and saw that colorization actually starts when a user click that button...
  2. It would be great to have such functionality. As for the organization being complex, well, wouldn't copying the structure of the site itself, as the Colorizer sees it, be suitable?
  3. Thank you very much! I'll try it.

@BinitDOX
Copy link
Owner

The colorizer simply queries the img tags and replaces the grey images with colored. A simple way to make folder structure is to make it exactly like the URL: https://senkuro.com/manga/re-monster/chapters/119429828913939988/pages/4, so
senkuro->manga->re-monster->chapters->119429828913939988->pages->4
But if the URL is like: https://mangadex.org/chapter/d72a3eb8-2b20-4c39-a46f-d282eb05e64f/3, there is no manga title.
Another way is to give the option of setting the title and chapter in the extension manually. I'll look into this tomorrow.

@iG8R
Copy link
Author

iG8R commented Jul 28, 2024

Thank you for the explanation.
BTW, why do the colors change so weird when the image size differs from 576?
As can be seen from the very first project of the original author, there is no such binding to size anywhere in the code at all.
https://github.com/qweasdd/manga-colorization

@iG8R
Copy link
Author

iG8R commented Jul 28, 2024

But if the URL is like: https://mangadex.org/chapter/d72a3eb8-2b20-4c39-a46f-d282eb05e64f/3, there is no manga title.
Another way is to give the option of setting the title and chapter in the extension manually. I'll look into this tomorrow.

Besides manually setting the title and chapter, perhaps it's worth considering automatically generating them based on the browser tab's title?

@BinitDOX
Copy link
Owner

Colors are weird, probably because the model was trained by resizing the images down to 576. Then multiple Conv2D encoder blocks encodes the image down to something like 4 or 2. Then some processing (pattern learn / coloring etc) happens at this latent encoded space, then the image is decoded again by TransposeConv2D decoders back to 576. If you give the model an image size greater than 576 and if it dynamically doesnt add more Conv2D encoders, the encoded latent image stops at a higher dimention. For example if 576 goes down to 4. Then 1152 will go down only to 8. Processing at a larger size will not only take much more time but also return bad results. This could be the reason for bad colors.

I have previously experimented with GANs before (~3y ago), if you want to do it too:

  1. https://www.kaggle.com/code/yeeandres/patchgan/notebook
  2. https://www.kaggle.com/code/yeeandres/eitm-gan/notebook
  3. https://www.kaggle.com/code/yeeandres/stylegan2/notebook
  4. https://www.kaggle.com/code/yeeandres/progan/notebook
    I had also trained an anime colorizer before, but I probably lost it. Coding and training a model like this is not that hard if you already have a detailed research paper.

For example in this code:
If I pass a 256x256x3 to it, every 'down' block downsizes the image by 2 but also increases the channels.
So at down7, image may be 2x2x512, then at the end of final_up, image may be back to 256x256x3.
If you pass a larger image, model will accept but the bottleneck will be larger and inefficient.

class Generator(nn.Module):
    def __init__(self, in_channels=35, features=64):
        super(Generator, self).__init__()

        self.down1 = UNetEncoder(in_channels, features, normalize=False)
        self.down2 = UNetEncoder(features, features*2)
        self.down3 = UNetEncoder(features*2, features*4)
        self.down4 = UNetEncoder(features*4, features*8)
        self.down5 = UNetEncoder(features*8, features*8, dropout=True)
        self.down6 = UNetEncoder(features*8, features*8, dropout=True)
        self.down7 = UNetEncoder(features*8, features*8, dropout=True)
        
        self.bottleneck = UNetEncoder(features*8, features*8, normalize=False, dropout=True)

        self.up1 = UNetDecoder(features*8, features*8, dropout=True)
        self.up2 = UNetDecoder(features*8*2, features*8, dropout=True)
        self.up3 = UNetDecoder(features*8*2, features*8, dropout=True)
        self.up4 = UNetDecoder(features*8*2, features*8)
        self.up5 = UNetDecoder(features*8*2, features*4)
        self.up6 = UNetDecoder(features*4*2, features*2)
        self.up7 = UNetDecoder(features*2*2, features)

        self.final_up = nn.Sequential(nn.ConvTranspose2d(features*2, 3, 4, 2, 1), nn.Tanh())

I'll consider the automatic structure generation.

@iG8R
Copy link
Author

iG8R commented Jul 29, 2024

Oh, thank you so much for such a detailed explanation! I really appreciate it!

@iG8R
Copy link
Author

iG8R commented Jul 29, 2024

I conducted the following experiment.
I resized the image to a width of 1152 pixels, divided it into 4 parts so that the width of the separated images was 576 pixels, and then tried to process them...

Original images:

III
III

Processed images:

III
III

Eh, the color distortion is still there with even worse results.

@BinitDOX
Copy link
Owner

Will check this soon.

@BinitDOX
Copy link
Owner

This tiling is another method which could've been used instead of just upscaling., Find closest width divisible by 32, then divide the image into tiles of 576 width, then colorize, then reassemble. But since the colorizer was trained with a dataset distribution containing full images where it probably learnt about context (grass, trees, buildings, relations, etc), if you give it tiled images (different distribution), it fails. That's probably why the other fork, even though it has the code to use tiling, doesn't use it for colorizer but only for super resolution.

But the tiles you provided are rich with context and should've worked.

downloadtile

@iG8R
Copy link
Author

iG8R commented Jul 29, 2024

These eye-popping colors are just terrible, it's better as it was originally, and if the text is poorly visible, then look at the black-and-white original.
Or maybe there are some parameters that could be passed to the model to correct the color palette, for example, I saw that in the source code of the v1 project there is a parameter sigma, not denoise sigma, but in the v2 project it disappeared somewhere.

@BinitDOX
Copy link
Owner

I'm unable to find the sigma, can you please link it?
You can also play with the denoiser sigma, since it changes the image a bit, you can get different outputs.

The caching configuration will have to be set for each site, although it's quite easy, it has to be hardcoded once manually. I've added it for these sites, you can update and test.


    const siteConfigurations = {
        'mangadex.org': {
            titleSelector: 'a[data-v-5d3b2210]',
            chapterSelector: 'div#chapter-selector span[data-v-d2fabe5b]',
            getTitle: (document) => document.querySelector(siteConfigurations['mangadex.org'].titleSelector)?.innerText,
            getChapter: (document) => document.querySelector(siteConfigurations['mangadex.org'].chapterSelector)?.innerText,
        },
        'senkuro.com': {
            titleSelector: 'p.nav-reader-caption__desktop',
            chapterSelector: 'p.nav-reader-caption__mobile',
            getTitle: (document) => document.querySelector(siteConfigurations['senkuro.com'].titleSelector)?.innerText,
            getChapter: (document) => document.querySelector(siteConfigurations['senkuro.com'].chapterSelector)?.innerText,
        },
        'chapmanganelo.com': {
            titleSelector: 'div.panel-breadcrumb a[title]',
            chapterSelector: 'div.panel-breadcrumb a[title]',
            getTitle: (document) => document.querySelectorAll(siteConfigurations['chapmanganelo.com'].titleSelector)?.[1]?.innerText,
            getChapter: (document) => document.querySelectorAll(siteConfigurations['chapmanganelo.com'].chapterSelector)?.[2]?.innerText,
        },
        'fanfox.net' : {
            titleSelector: 'p.reader-header-title-1 a[href]',
            chapterSelector: 'p.reader-header-title-2',
            getTitle: (document) => document.querySelector(siteConfigurations['fanfox.net'].titleSelector)?.innerText,
            getChapter: (document) => document.querySelector(siteConfigurations['fanfox.net'].chapterSelector)?.innerText,
        },
        'mangakakalot.com' : {
            titleSelector: 'div.breadcrumb span[itemprop=name]',
            chapterSelector: 'div.breadcrumb span[itemprop=name]',
            getTitle: (document) => document.querySelectorAll(siteConfigurations['mangakakalot.com'].titleSelector)?.[1]?.innerText,
            getChapter: (document) => document.querySelectorAll(siteConfigurations['mangakakalot.com'].chapterSelector)?.[2]?.innerText,
        }
    };
    

Provide me a list of sites that you want it to work for. I usually only use a site like mangakakalot.

@iG8R
Copy link
Author

iG8R commented Jul 29, 2024

I'm unable to find the sigma, can you please link it?

Sure, https://github.com/qweasdd/manga-colorization/blob/85607e196ca1f554c315ca2982cb0463808d7549/inference.py#L147

You can also play with the denoiser sigma, since it changes the image a bit, you can get different outputs.

I've already done it, but to no avail.
qweasdd/manga-colorization-v2#17 (comment)

The caching configuration will have to be set for each site, although it's quite easy, it has to be hardcoded once manually. I've added it for these sites, you can update and test.

Thank you, it's great!
Perhaps it would be more convenient to dedicate a separate configuration file for sites whose data will be cached?
My sites' list, offhand from memory:
Besides senkuro.com
readmanga.live
remanga.org
manhuatop.org
manhuaus.com

@BinitDOX
Copy link
Owner

Perhaps it would be more convenient to dedicate a separate configuration file for sites whose data will be cached?

Great idea! will do that tomorrow along with the sigma param.

@BinitDOX
Copy link
Owner

Configuration file created. The previous v1 project also had an option to give color hints, basically driving the model to follow those colors. Since it was manual work, it was probably removed in v2, along with params like sigma, etc.

@iG8R
Copy link
Author

iG8R commented Jul 30, 2024

It's not that urgent, but is it possible to implement the same feature to give color hints in MC, since the eye-gouging colors in some images can be really upsetting. For example, when someone is depicted eating steak or fish, and they are green, as if they have gone bad.
https://mangadex.org/chapter/89ddbe27-e814-4d91-8701-318e6ff7a082/2

@vatavian
Copy link
Collaborator

I have also noticed how often food tends to be colored green and wondered whether this is because the training data is skewed toward green food. Does our latest version let us try this page with 576 width to see if that helps? All the other coloring in this one looks great, though.

@iG8R
Copy link
Author

iG8R commented Jul 30, 2024

@vatavian
The example above was colorized with the latest version without changing the output size, i.e. it was colorized at 576 and then 4x upscaled.

@BinitDOX
Copy link
Owner

let us try this page with 576 width

Since the model works best with 576, it is now fixed in the latest version, you can change and experiment with it ~line 256 in app-stream

when someone is depicted eating steak or fish, and they are green

Most probably a model problem, a denoise of 100 changes it's color, but also removes details from the image.

@iG8R
Copy link
Author

iG8R commented Jul 30, 2024

Most probably a model problem, a denoise of 100 changes it's color, but also removes details from the image.

I agree, it looks better in relation to food, but the fact that there are practically no details and the picture in general turns out to be blurred and the characters' faces are deformed does not give this method an advantage, because in fact you have to choose between bad and bad.

@ux-dokr
Copy link

ux-dokr commented Apr 15, 2025

@BinitDOX @vatavian
I realy like, what you have done! I works great!
But what about the colorizing problem mentioned above. My output files are full of those purple blue-ish colors,
Is there a way to fix this / can you fix this please?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants