Issue with the color quality of the generated images
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).
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
@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.
Due to the presence of CUDA, this fork works extremely fast.
@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 -
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.
This repository desperately needs reorganization and redocumentation.
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 -
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.
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]
In Chrome:
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.
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.
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
- 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
Thanks a lot again!
- 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...
- 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?
- Thank you very much! I'll try it.
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.
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
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?
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:
- https://www.kaggle.com/code/yeeandres/patchgan/notebook
- https://www.kaggle.com/code/yeeandres/eitm-gan/notebook
- https://www.kaggle.com/code/yeeandres/stylegan2/notebook
- 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.
Oh, thank you so much for such a detailed explanation! I really appreciate it!
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.
Will check this soon.
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.
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.
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.
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. https://github.com/qweasdd/manga-colorization-v2/issues/17#issuecomment-2254712104
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
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.
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.
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
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.