├── .eslintrc.js ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── feature_request.md │ └── model-add-request.md └── workflows │ ├── frontend.yml │ └── nextjs.yml ├── .gitignore ├── .storybook ├── main.ts └── preview.ts ├── .stylelintrc.json ├── .vscode ├── extensions.json └── settings.json ├── LICENSE ├── README.md ├── data ├── architectures.json ├── collections.json ├── models │ ├── 16x-ESRGAN.json │ ├── 16x-PSNR.json │ ├── 1x-AnimeUndeint-Compact.json │ ├── 1x-Anti-Aliasing.json │ ├── 1x-ArtClarity.json │ ├── 1x-BC1-smooth2.json │ ├── 1x-BCGone-Detailed.json │ ├── 1x-BCGone-DetailedV2-40-60.json │ ├── 1x-BCGone-Smooth.json │ ├── 1x-BS-Colorizer.json │ ├── 1x-BSChroma.json │ ├── 1x-BSLuma.json │ ├── 1x-BW-Denoise.json │ ├── 1x-BaldrickVHSFixV0-2.json │ ├── 1x-Bandage-Smooth.json │ ├── 1x-Bendel-Halftone.json │ ├── 1x-BleedOut-Compact.json │ ├── 1x-BroadcastToStudio-Compact.json │ ├── 1x-BroadcastToStudio-SPAN.json │ ├── 1x-BroadcastToStudioLite.json │ ├── 1x-Compact-Pretrain.json │ ├── 1x-DEDXT.json │ ├── 1x-DEPVR-Artifact.json │ ├── 1x-DEPVR.json │ ├── 1x-DM600-LUDVAE.json │ ├── 1x-DXTDecompressor-Source-V3.json │ ├── 1x-DXTless-SourceEngine.json │ ├── 1x-DeBLR.json │ ├── 1x-DeBink-Lite.json │ ├── 1x-DeBink-v4.json │ ├── 1x-DeBink-v5.json │ ├── 1x-DeBink-v6.json │ ├── 1x-DeEdge.json │ ├── 1x-DeH264-realplksr.json │ ├── 1x-DeJPG-OmniSR.json │ ├── 1x-DeJPG-SRFormer-light.json │ ├── 1x-DeJPG-realplksr-otf.json │ ├── 1x-DeJpeg-Fatality-PlusULTRA.json │ ├── 1x-DeNoise-realplksr-otf.json │ ├── 1x-DeRoqBeta-lite.json │ ├── 1x-DeSharpen.json │ ├── 1x-Debandurh-FS-Ultra-lite.json │ ├── 1x-Dehalo-v1-Compact.json │ ├── 1x-DitherDeleterV2-Smooth.json │ ├── 1x-DitherDeleterV3-Smooth.json │ ├── 1x-Dotzilla-Compact.json │ ├── 1x-DoubleDetoon.json │ ├── 1x-ESRGAN.json │ ├── 1x-Epsilon-one-compact.json │ ├── 1x-ExposureCorrection-compact.json │ ├── 1x-Fatality-DeBlur.json │ ├── 1x-Film-Degrainer-1-000.json │ ├── 1x-Filmify4K-v2.json │ ├── 1x-Focus-Moderate.json │ ├── 1x-Focus.json │ ├── 1x-FrankenMapGenerator-CX-Lite.json │ ├── 1x-Frankenfixer-SRFormerLight.json │ ├── 1x-GainRESV3-Aggro.json │ ├── 1x-GainRESV3-Natural.json │ ├── 1x-GainRESV3-Passive.json │ ├── 1x-GainRESV4.json │ ├── 1x-Ghibli-Grain.json │ ├── 1x-HurrDeblur-SuperUltraCompact.json │ ├── 1x-ISO-denoise-v1.json │ ├── 1x-ISO-denoise-v2.json │ ├── 1x-ITF-SkinDiffDDS-v1.json │ ├── 1x-ITF-SkinDiffDetail-Lite-v1.json │ ├── 1x-JPEGDestroyer.json │ ├── 1x-JPG-00-20-alsa.json │ ├── 1x-JPG-00-20.json │ ├── 1x-JPG-20-40-alsa.json │ ├── 1x-JPG-20-40.json │ ├── 1x-JPG-40-60-alsa.json │ ├── 1x-JPG-40-60.json │ ├── 1x-JPG-60-80-alsa.json │ ├── 1x-JPG-60-80.json │ ├── 1x-JPG-80-100-alsa.json │ ├── 1x-JPG-80-100.json │ ├── 1x-KDM003-scans.json │ ├── 1x-Kim2091-DeJpeg-v0.json │ ├── 1x-Loyaldk-SharpKeroro.json │ ├── 1x-Ludvae200.json │ ├── 1x-MangaJPEGHQ.json │ ├── 1x-MangaJPEGHQPlus.json │ ├── 1x-MangaJPEGLQ.json │ ├── 1x-MangaJPEGMQ.json │ ├── 1x-Manhwa-Null.json │ ├── 1x-N64clean.json │ ├── 1x-NES-Composite-2-RGB.json │ ├── 1x-NMKD-Jaywreck3-Lite.json │ ├── 1x-NMKD-Jaywreck3-Soft-Lite.json │ ├── 1x-NMKD-YandereInpaint.json │ ├── 1x-NMKD-h264Texturize.json │ ├── 1x-NoiseToner-Poisson-Detailed.json │ ├── 1x-NoiseToner-Poisson-Soft.json │ ├── 1x-NoiseToner-Poisson.json │ ├── 1x-NoiseToner-Uniform-Detailed.json │ ├── 1x-NoiseToner-Uniform-Soft.json │ ├── 1x-NoiseToner-Uniform.json │ ├── 1x-NormalMapGenerator-CX-Lite.json │ ├── 1x-OverExposureCorrection-compact.json │ ├── 1x-PBRify-Height.json │ ├── 1x-PBRify-NormalV3.json │ ├── 1x-PBRify-RoughnessV2.json │ ├── 1x-PSNR.json │ ├── 1x-PixelSharpen.json │ ├── 1x-Plants.json │ ├── 1x-RGB-max-Denoise.json │ ├── 1x-ReFocus-Cleanly.json │ ├── 1x-ReFocus-V3.json │ ├── 1x-RedImage.json │ ├── 1x-RoQ-nRoll.json │ ├── 1x-SBDV-DeJPEG-Lite.json │ ├── 1x-SPANGELION-INTERPOLATED.json │ ├── 1x-SPANGELION-SHARP.json │ ├── 1x-SPANGELION.json │ ├── 1x-SS-Anti-Alias-9x.json │ ├── 1x-SaiyaJin-DeJpeg.json │ ├── 1x-SheeepIt.json │ ├── 1x-SkinContrast-High-SuperUltraCompact.json │ ├── 1x-SkinContrast-HighAlternative-SuperUltraCompact.json │ ├── 1x-SkinContrast-SuperUltraCompact.json │ ├── 1x-SpongeBC1-Lite.json │ ├── 1x-SpongeColor-Lite.json │ ├── 1x-Spongebob-De-Quantize.json │ ├── 1x-SuperScale-Alt-RPLKSR-S.json │ ├── 1x-SuperScale-RPLKSR-S.json │ ├── 1x-SuperScale.json │ ├── 1x-SuperUltraCompact-Pretrain.json │ ├── 1x-SwatKats-Compact.json │ ├── 1x-SwatKats-SPAN.json │ ├── 1x-SwatKatsLite.json │ ├── 1x-ThePi7on-Solidd-Deborutify-UltraLite.json │ ├── 1x-ToonVHS.json │ ├── 1x-UltraCompact-Pretrain.json │ ├── 1x-UnResize-V3.json │ ├── 1x-UnResizeOnly-RCAN.json │ ├── 1x-UnderExposureCorrection-compact.json │ ├── 1x-VHS-Sharpen.json │ ├── 1x-artifacts-bc1-free-alsa.json │ ├── 1x-artifacts-dithering-alsa.json │ ├── 1x-cinepak.json │ ├── 1x-mdeblur.json │ ├── 1x-normals-generator-general.json │ ├── 1x-span-anime-pretrain.json │ ├── 1x-sudo-inpaint-PartialConv2D.json │ ├── 1x-wtp-descreentone-compact.json │ ├── 2x-90s-cartoon-v1.json │ ├── 2x-ATLA-KORRA.json │ ├── 2x-Ani4K.json │ ├── 2x-Ani4VK-v2-Compact.json │ ├── 2x-AniSD-Suite.json │ ├── 2x-AniScale-2-Compact.json │ ├── 2x-AniScale-2-DITN.json │ ├── 2x-AniScale-2-ESRGAN-Lite.json │ ├── 2x-AniScale-2-ESRGAN.json │ ├── 2x-AniScale-2-OmniSR.json │ ├── 2x-AniScale.json │ ├── 2x-AnimeClassics-UltraLite.json │ ├── 2x-AnimeJaNai-HD-V3-Compact.json │ ├── 2x-AnimeJaNai-HD-V3-SuperUltraCompact.json │ ├── 2x-AnimeJaNai-HD-V3-UltraCompact.json │ ├── 2x-AnimeJaNai-Standard-v1-Compact.json │ ├── 2x-AnimeJaNai-Standard-v1-SuperUltraCompact.json │ ├── 2x-AnimeJaNai-Standard-v1-UltraCompact.json │ ├── 2x-AnimeJaNai-Strong-v1-Compact.json │ ├── 2x-AnimeJaNai-Strong-v1-UltraCompact.json │ ├── 2x-AnimeJaNai-v2-Compact.json │ ├── 2x-AnimeJaNai-v2-SuperUltraCompact.json │ ├── 2x-AnimeJaNai-v2-UltraCompact.json │ ├── 2x-AnimeSharpV2-MoSR-Sharp.json │ ├── 2x-AnimeSharpV2-MoSR-Soft.json │ ├── 2x-AnimeSharpV2-RPLKSR-Sharp.json │ ├── 2x-AnimeSharpV2-RPLKSR-Soft.json │ ├── 2x-AnimeSharpV3-RCAN.json │ ├── 2x-AnimeSharpV3.json │ ├── 2x-AnimeSharpV4-Fast-RCAN-PU.json │ ├── 2x-AnimeSharpV4.json │ ├── 2x-AoMR-mosr.json │ ├── 2x-AstroManLite.json │ ├── 2x-AstroManPlus-262k.json │ ├── 2x-BIGOLDIES.json │ ├── 2x-BS-Wolly.json │ ├── 2x-BSRGAN.json │ ├── 2x-BSTexty.json │ ├── 2x-Bubble-AnimeScale-Compact-v1.json │ ├── 2x-Bubble-AnimeScale-SwinIR-Small-v1.json │ ├── 2x-Byousoku-5-Centimeter.json │ ├── 2x-CGIMaster-v1.json │ ├── 2x-Compact-Pretrain.json │ ├── 2x-DAT-2.json │ ├── 2x-DBZScanLite.json │ ├── 2x-DeGif.json │ ├── 2x-DigiGradients-Lite.json │ ├── 2x-DigitalFilmV5-Lite.json │ ├── 2x-DigitalFlim-SuperUltraCompact.json │ ├── 2x-DigitalPokemon-l.json │ ├── 2x-DigitalPokemon-s.json │ ├── 2x-DigitoonLite.json │ ├── 2x-ESRGAN.json │ ├── 2x-Eva16Lite-201k.json │ ├── 2x-Eva16Lite-64k.json │ ├── 2x-Evangelion-dat2.json │ ├── 2x-Faithful-Lite.json │ ├── 2x-Faithful.json │ ├── 2x-FaithfulSPSR.json │ ├── 2x-FakeFaith-Lite.json │ ├── 2x-Futsuu-Anime.json │ ├── 2x-GT-evA.json │ ├── 2x-GT-v2-evA.json │ ├── 2x-GameUp-TSCUNet.json │ ├── 2x-GameUpV2-TSCUNet-Small.json │ ├── 2x-GameUpV2-TSCUNet.json │ ├── 2x-Garfield1-308k.json │ ├── 2x-GarfieldJr-span.json │ ├── 2x-Gen5-Alpha.json │ ├── 2x-HDCube-Compact.json │ ├── 2x-HFA2OmniSR.json │ ├── 2x-HFA2Real-CUGAN.json │ ├── 2x-HFA2SwinIR-S.json │ ├── 2x-HFA2k-LUDVAE-SPAN.json │ ├── 2x-HFA2k-LUDVAE-compact.json │ ├── 2x-HFA2k-compact-multijpg.json │ ├── 2x-HFA2kAVCCompact.json │ ├── 2x-HFA2kAVCEDSR-M.json │ ├── 2x-HFA2kAVCOmniSR.json │ ├── 2x-HFA2kAVCSRFormer-light.json │ ├── 2x-HFA2kCompact.json │ ├── 2x-HFA2kSPAN.json │ ├── 2x-HFA2kShallowESRGAN.json │ ├── 2x-Higurashi-v1-compact.json │ ├── 2x-KcjpunkAnime-2-0-Lite.json │ ├── 2x-KemonoScale-v2.json │ ├── 2x-LD-Anime-Compact.json │ ├── 2x-LD-Anime-Skr-v1-0.json │ ├── 2x-LexicaRRDBNet-Sharp.json │ ├── 2x-LexicaRRDBNet.json │ ├── 2x-LexicaSwinIR.json │ ├── 2x-LiveActionV1-SPAN.json │ ├── 2x-Loyaldk-Giroro.json │ ├── 2x-Loyaldk-Keroro.json │ ├── 2x-Loyaldk-Kororo.json │ ├── 2x-Loyaldk-LitePonyV1-0.json │ ├── 2x-Loyaldk-LitePonyV2-0.json │ ├── 2x-Loyaldk-MediumPonyV2-0.json │ ├── 2x-Loyaldk-SuperPonyV1-0.json │ ├── 2x-Loyaldk-SuperPonyV2-0.json │ ├── 2x-MLP-StarSample-V1-0.json │ ├── 2x-Manga-Ora.json │ ├── 2x-MangaScaleV3.json │ ├── 2x-ModernSpanimationV1.json │ ├── 2x-NMKD-YandereNeo.json │ ├── 2x-NomosUni-compact-multijpg.json │ ├── 2x-NomosUni-compact-otf-medium.json │ ├── 2x-NomosUni-esrgan-multijpg.json │ ├── 2x-NomosUni-span-multijpg-ldl.json │ ├── 2x-NomosUni-span-multijpg.json │ ├── 2x-OmniSR-DF2K.json │ ├── 2x-OmniSR-DIV2K.json │ ├── 2x-PSNR.json │ ├── 2x-ParimgCompact.json │ ├── 2x-Pooh-V4.json │ ├── 2x-SBS11-RRDB.json │ ├── 2x-SHARP-ANIME-V1.json │ ├── 2x-SHARP-ANIME-V2.json │ ├── 2x-SRFormerLight-SRx2-DIV2K.json │ ├── 2x-SuperUltraCompact-Pretrain.json │ ├── 2x-SwatKats.json │ ├── 2x-Swift-SRGAN.json │ ├── 2x-Text2HD-v-1.json │ ├── 2x-UltraCompact-Pretrain.json │ ├── 2x-UniScale-CartoonRestore-lite.json │ ├── 2x-VHS-upscale-and-denoise-Film.json │ ├── 2x-VHS2HD.json │ ├── 2x-VimeoScale-Unet.json │ ├── 2x-Waifaux-NL3-SRResNet.json │ ├── 2x-Waifaux-NL3-SuperLite.json │ ├── 2x-anifilm-compact.json │ ├── 2x-cainREALTIME.json │ ├── 2x-cainliteanime.json │ ├── 2x-classicalSR-DF2K-s64w8-SwinIR-M.json │ ├── 2x-classicalSR-DIV2K-s64w8-SwinIR-M.json │ ├── 2x-cvpv6.json │ ├── 2x-explodV1.json │ ├── 2x-fidelbd-pokemodel.json │ ├── 2x-ken-v1-eva-01.json │ ├── 2x-lightweightSR-DIV2K-s64w8-SwinIR-S.json │ ├── 2x-pokemodel-lite.json │ ├── 2x-realSR-BSRGAN-DFO-s64w8-SwinIR-M-x2-GAN.json │ ├── 2x-realesrgan-x2plus.json │ ├── 2x-realesrganv2-animevideo-xsx2.json │ ├── 2x-rvpV1.json │ ├── 2x-smbss-l.json │ ├── 2x-smbss-m.json │ ├── 2x-smbss.json │ ├── 2x-span-anime-pretrain.json │ ├── 2x-spanx2-ch48.json │ ├── 2x-sudo-RealESRGAN-Dropout.json │ ├── 2x-sudo-RealESRGAN.json │ ├── 2x-sudo-UltraCompact.json │ ├── 2x-sudo-rife4-testV1.json │ ├── 2x-sudo-shuffle-cugan-9-584-969.json │ ├── 2x-wtp-manga-cover-pretrained.json │ ├── 3x-DAT-2.json │ ├── 3x-OmniSR-DF2K.json │ ├── 3x-OmniSR-DIV2K.json │ ├── 3x-Video-TSSM-RRDB.json │ ├── 3x-Video-TSSM.json │ ├── 3x-classicalSR-DF2K-s64w8-SwinIR-M.json │ ├── 3x-classicalSR-DIV2K-s64w8-SwinIR-M.json │ ├── 3x-lightweightSR-DIV2K-s64w8-SwinIR-S.json │ ├── 4x-003-ATD-SRx4-finetune.json │ ├── 4x-1ch-Alpha-Lite.json │ ├── 4x-AbeScale.json │ ├── 4x-American-Dad-2.json │ ├── 4x-AnalogFrames-1-0.json │ ├── 4x-AnimeSharp-lite.json │ ├── 4x-AnimeSharp.json │ ├── 4x-ArtFaces-realplksr-dysample.json │ ├── 4x-ArtStation1337-Bloom.json │ ├── 4x-ArtStation1337-Dedither-v2.json │ ├── 4x-ArtStation1337-Dedither.json │ ├── 4x-ArtStation1337-Diffuse.json │ ├── 4x-ArtStation1337-v2.json │ ├── 4x-ArtStation1337.json │ ├── 4x-BS-Deviance.json │ ├── 4x-BS-DevianceMIP.json │ ├── 4x-BS-SbeveHarvey.json │ ├── 4x-BS-ScreenBooster-SPSR.json │ ├── 4x-BSRGAN.json │ ├── 4x-BigFArt-Bang1.json │ ├── 4x-BigFArt-Base.json │ ├── 4x-BigFArt-Blend.json │ ├── 4x-BigFArt-Detail.json │ ├── 4x-BigFArt-Fine.json │ ├── 4x-BigFArt.json │ ├── 4x-BigFace-V3-Blend.json │ ├── 4x-BigFace-V3-Clear.json │ ├── 4x-BigFace-v3.json │ ├── 4x-BigFace.json │ ├── 4x-BooruGan-600k.json │ ├── 4x-BooruGan-650k.json │ ├── 4x-Box.json │ ├── 4x-Cat-Patch.json │ ├── 4x-ClearRealityV1.json │ ├── 4x-Comic-Book.json │ ├── 4x-Compact-Pretrain.json │ ├── 4x-CountryRoads.json │ ├── 4x-DAT-2.json │ ├── 4x-DAT.json │ ├── 4x-DAT2-mssim-Pretrain.json │ ├── 4x-DRCT-L.json │ ├── 4x-DWTP-DP-dat2-beta.json │ ├── 4x-DWTP-DS-dat2-v1.json │ ├── 4x-DWTP-DS-dat2-v3-2.json │ ├── 4x-DWTP-DS-dat2-v3.json │ ├── 4x-DWTP-descreenton-H-esrgan.json │ ├── 4x-DWTP-descreenton-VH4.json │ ├── 4x-DWTP-descreenton-VL4.json │ ├── 4x-DWTP-ds-esrgan-5.json │ ├── 4x-DeIndeo.json │ ├── 4x-Deoldify.json │ ├── 4x-DigiPaint.json │ ├── 4x-DigitalFake-2-1.json │ ├── 4x-Drawimation-compact.json │ ├── 4x-ESRGAN.json │ ├── 4x-FArtFace.json │ ├── 4x-FFHQDAT.json │ ├── 4x-FFHQLDAT.json │ ├── 4x-FSDedither-Manga.json │ ├── 4x-FSDedither-Riven.json │ ├── 4x-FSDedither.json │ ├── 4x-FSMangaV2.json │ ├── 4x-Fabric-Alt.json │ ├── 4x-Fabric.json │ ├── 4x-Face-Ality-V1.json │ ├── 4x-Face-Focus.json │ ├── 4x-FaceUpDAT.json │ ├── 4x-FaceUpLDAT.json │ ├── 4x-FaceUpSharpDAT.json │ ├── 4x-FaceUpSharpLDAT.json │ ├── 4x-Faces-04-N.json │ ├── 4x-Falcon-Fanart.json │ ├── 4x-Fallout-Weapons-V2.json │ ├── 4x-Fallout-Weapons.json │ ├── 4x-Fatal-Anime.json │ ├── 4x-Fatal-Pixels.json │ ├── 4x-FatalimiX.json │ ├── 4x-Fatality-Comix-MK3.json │ ├── 4x-Fatality-Comix.json │ ├── 4x-Fatality-MK2.json │ ├── 4x-Fatality.json │ ├── 4x-FatePlus-lite.json │ ├── 4x-FatePlusCompact.json │ ├── 4x-FireAlpha.json │ ├── 4x-Forest.json │ ├── 4x-Frankendata-FullDegradation-SRFormer.json │ ├── 4x-FrankendataPretainer-SRFormer.json │ ├── 4x-FuzzyBox.json │ ├── 4x-GameAI-1-0.json │ ├── 4x-GameAI-2-0.json │ ├── 4x-Ground.json │ ├── 4x-HAT-L-SRx4-ImageNet-pretrain.json │ ├── 4x-HAT-S-SRx4.json │ ├── 4x-HDCube.json │ ├── 4x-HDCube2.json │ ├── 4x-HDCube3.json │ ├── 4x-HFA2k-VCISR-GRLGAN-ep200.json │ ├── 4x-HFA2k-ludvae-realplksr-dysample.json │ ├── 4x-HFA2k.json │ ├── 4x-HFA2kLUDVAEGRL-small.json │ ├── 4x-HFA2kLUDVAESRFormer-light.json │ ├── 4x-HFA2kLUDVAESwinIR-light.json │ ├── 4x-HellinaCel.json │ ├── 4x-IllustrationJaNai-V1-DAT2.json │ ├── 4x-IllustrationJaNai-V1-ESRGAN.json │ ├── 4x-Jaypeg90.json │ ├── 4x-KCJPUNK-1.json │ ├── 4x-LADDIER1.json │ ├── 4x-LSDIR.json │ ├── 4x-LSDIRCompact-v2.json │ ├── 4x-LSDIRCompact.json │ ├── 4x-LSDIRCompactC.json │ ├── 4x-LSDIRCompactC3.json │ ├── 4x-LSDIRCompactN.json │ ├── 4x-LSDIRCompactR.json │ ├── 4x-LSDIRCompactR3.json │ ├── 4x-LSDIRDAT.json │ ├── 4x-LSDIRplus.json │ ├── 4x-LSDIRplusC.json │ ├── 4x-LSDIRplusN.json │ ├── 4x-LSDIRplusR.json │ ├── 4x-Lady0101.json │ ├── 4x-LexicaDAT2-otf.json │ ├── 4x-LexicaHAT.json │ ├── 4x-Link.json │ ├── 4x-Lollypop.json │ ├── 4x-Loyaldk-Giroro.json │ ├── 4x-Loyaldk-Keroro.json │ ├── 4x-Loyaldk-Kororo.json │ ├── 4x-Loyaldk-LitePonyV2-0.json │ ├── 4x-Loyaldk-MediumPonyV2-0.json │ ├── 4x-Loyaldk-SuperPonyV2-0.json │ ├── 4x-Manga109Attempt.json │ ├── 4x-Map.json │ ├── 4x-MeguUp.json │ ├── 4x-MinecraftAlphaUpscaler-with-Good-data.json │ ├── 4x-Minepack.json │ ├── 4x-Misc.json │ ├── 4x-Morrowind-2-0.json │ ├── 4x-Morrowind-Mixed.json │ ├── 4x-NMKD-PatchySharp.json │ ├── 4x-NMKD-Siax-CX.json │ ├── 4x-NMKD-Superscale.json │ ├── 4x-NMKD-UltraYandere-Lite.json │ ├── 4x-NMKD-UltraYandere.json │ ├── 4x-NMKD-YandereNeo-Superlite.json │ ├── 4x-NMKD-YandereNeo-XL.json │ ├── 4x-NMKD-YandereNeo.json │ ├── 4x-NXbrz.json │ ├── 4x-Nickelback.json │ ├── 4x-NickelbackFS.json │ ├── 4x-Nickelfront.json │ ├── 4x-Nomos2-hq-atd.json │ ├── 4x-Nomos2-hq-dat2.json │ ├── 4x-Nomos2-hq-drct-l.json │ ├── 4x-Nomos2-hq-mosr.json │ ├── 4x-Nomos2-otf-esrgan.json │ ├── 4x-Nomos2-realplksr-dysample.json │ ├── 4x-Nomos8k-atd-jpg.json │ ├── 4x-Nomos8k-span-otf-medium.json │ ├── 4x-Nomos8k-span-otf-strong.json │ ├── 4x-Nomos8k-span-otf-weak.json │ ├── 4x-Nomos8kDAT.json │ ├── 4x-Nomos8kHAT-L-otf.json │ ├── 4x-Nomos8kSC.json │ ├── 4x-Nomos8kSCHAT-L.json │ ├── 4x-Nomos8kSCHAT-S.json │ ├── 4x-Nomos8kSCSRFormer.json │ ├── 4x-NomosUni-rgt-multijpg.json │ ├── 4x-NomosUni-rgt-s-multijpg.json │ ├── 4x-NomosUni-span-multijpg.json │ ├── 4x-NomosUniDAT-bokeh-jpg.json │ ├── 4x-NomosUniDAT-otf.json │ ├── 4x-NomosUniDAT2-box.json │ ├── 4x-NomosUniDAT2-multijpg-ldl-sharp.json │ ├── 4x-NomosUniDAT2-multijpg-ldl.json │ ├── 4x-NomosWebPhoto-RealPLKSR.json │ ├── 4x-NomosWebPhoto-atd.json │ ├── 4x-NomosWebPhoto-esrgan.json │ ├── 4x-Normal-RG0-BC1.json │ ├── 4x-Normal-RG0-BC7.json │ ├── 4x-Normal-RG0.json │ ├── 4x-NumericFrames-2-0.json │ ├── 4x-NumericFrames-2-1-Aggressive.json │ ├── 4x-NumericFrames-2-5.json │ ├── 4x-OLDIES-ALTERNATIVE-FINAL.json │ ├── 4x-OLDIESFINAL.json │ ├── 4x-OmniSR-DF2K.json │ ├── 4x-OmniSR-DIV2K.json │ ├── 4x-PBRify-RPLKSRd-V3.json │ ├── 4x-PBRify-UpscalerDAT2-V1.json │ ├── 4x-PBRify-UpscalerSIR-M-V2.json │ ├── 4x-PBRify-UpscalerSPANV4.json │ ├── 4x-PBRify-UpscalerV4.json │ ├── 4x-PSNR.json │ ├── 4x-PackCraft-v4.json │ ├── 4x-PixelPerfectV4.json │ ├── 4x-PocketMonsters-Alpha.json │ ├── 4x-PurePhoto-RealPLSKR.json │ ├── 4x-PurePhoto-span.json │ ├── 4x-REDSVAL-7f-RRDB-Lite.json │ ├── 4x-RGT-S.json │ ├── 4x-RGT.json │ ├── 4x-RRDB-G-ResNet-D.json │ ├── 4x-Real-SSDIR-DAT-GAN.json │ ├── 4x-RealPLKSR-Pretrain-V4.json │ ├── 4x-RealPLKSR-dysample-pretrain.json │ ├── 4x-RealWebPhoto-v2-rgt-s.json │ ├── 4x-RealWebPhoto-v3-atd.json │ ├── 4x-RealWebPhoto-v4-dat2.json │ ├── 4x-RealWebPhoto-v4-drct-l.json │ ├── 4x-RealisticRescaler.json │ ├── 4x-Rebout-Blend.json │ ├── 4x-Rebout.json │ ├── 4x-Rek-s-Effeks-Photoanime-v2.json │ ├── 4x-Remacri.json │ ├── 4x-Rybu.json │ ├── 4x-SGI.json │ ├── 4x-SOFVSR-REDS-F3-V1.json │ ├── 4x-SPANkendata.json │ ├── 4x-SPSR.json │ ├── 4x-SRFormer-SRx4-DF2K.json │ ├── 4x-SSDIRDAT.json │ ├── 4x-ScreenBooster-V2.json │ ├── 4x-Skyrim-Alpha.json │ ├── 4x-Skyrim-Armory.json │ ├── 4x-Skyrim-Misc.json │ ├── 4x-SmolFace-Clean.json │ ├── 4x-SmolFace.json │ ├── 4x-SmoothRealism.json │ ├── 4x-Sol-Levante-NTSC2HD.json │ ├── 4x-SpongeBob-CEL-2-HD-PHOENiX.json │ ├── 4x-SpongeBob-Reloaded-SWAG.json │ ├── 4x-SpongeBob-Reloaded.json │ ├── 4x-SpongeBob.json │ ├── 4x-Spongebob-v6-De-Quantize.json │ ├── 4x-Spongebob-v6-Deblur.json │ ├── 4x-Spongebob-v6.json │ ├── 4x-Struzan.json │ ├── 4x-Swift-SRGAN.json │ ├── 4x-SwinIR-M-Pretrain.json │ ├── 4x-SwinIR-S-Pretrain.json │ ├── 4x-TextureDAT2-otf.json │ ├── 4x-Textures-GTAV-rgt-s-dither.json │ ├── 4x-Textures-GTAV-rgt-s.json │ ├── 4x-ThiefGold.json │ ├── 4x-ThiefGoldMod.json │ ├── 4x-Training4Melozard-Anime.json │ ├── 4x-Trixie.json │ ├── 4x-UltraFArt-v3-Fine.json │ ├── 4x-UltraFArt-v3-Photo.json │ ├── 4x-UltraFArt-v3-Smooth.json │ ├── 4x-UltraFArt-v3.json │ ├── 4x-UltraSharp.json │ ├── 4x-UniScale-Balanced.json │ ├── 4x-UniScale-Restore.json │ ├── 4x-UniScale-Strong.json │ ├── 4x-UniScaleNR-Balanced.json │ ├── 4x-UniScaleNR-Strong.json │ ├── 4x-UniScaleV2-Moderate.json │ ├── 4x-UniScaleV2-Sharp.json │ ├── 4x-UniScaleV2-Soft.json │ ├── 4x-UniversalUpscalerV2-Neutral.json │ ├── 4x-UniversalUpscalerV2-Sharp.json │ ├── 4x-UniversalUpscalerV2-Sharper.json │ ├── 4x-VESRGAN-G.json │ ├── 4x-Valar.json │ ├── 4x-VimeoScale.json │ ├── 4x-VolArt.json │ ├── 4x-VolArtNR.json │ ├── 4x-WTP-ColorDS.json │ ├── 4x-WTP-UDS-Esrgan.json │ ├── 4x-WaifuGAN-v3.json │ ├── 4x-Wood-BC1.json │ ├── 4x-anifilm-compact.json │ ├── 4x-animerd-v1.json │ ├── 4x-ardo.json │ ├── 4x-classicalSR-DF2K-s64w8-SwinIR-M.json │ ├── 4x-classicalSR-DIV2K-s64w8-SwinIR-M.json │ ├── 4x-craft-pretrain.json │ ├── 4x-cugan-pretrain.json │ ├── 4x-dctlsa-pretrained.json │ ├── 4x-detoon-alt.json │ ├── 4x-detoon.json │ ├── 4x-deviantPixelHD.json │ ├── 4x-ditn-w16-pretrain.json │ ├── 4x-escale.json │ ├── 4x-eula-anifilm-v1.json │ ├── 4x-eula-digimanga-MiA-65k.json │ ├── 4x-eula-digimanga-bw-v1.json │ ├── 4x-eula-digimanga-bw-v2-nc1.json │ ├── 4x-lightweightSR-DIV2K-s64w8-SwinIR-S.json │ ├── 4x-mssim-drct-l-pretrain.json │ ├── 4x-mssim-drct-pretrain.json │ ├── 4x-mssim-drct-s-pretrain.json │ ├── 4x-mssim-hma-pretrains.json │ ├── 4x-mssim-mosr-pretrain.json │ ├── 4x-mssim-realplksr-dysample-pretrain.json │ ├── 4x-mssim-span-pretrain.json │ ├── 4x-muy4-035-1.json │ ├── 4x-pix-span-pretrain.json │ ├── 4x-realSR-BSRGAN-DFO-s64w8-SwinIR-M-x4-GAN.json │ ├── 4x-realSR-BSRGAN-DFOWMFC-s64w8-SwinIR-L-x4-GAN.json │ ├── 4x-realesr-animevideo-v3.json │ ├── 4x-realesr-general-wdn-x4v3.json │ ├── 4x-realesr-general-x4v3.json │ ├── 4x-realesrgan-x4minus.json │ ├── 4x-realesrgan-x4plus-anime-6b.json │ ├── 4x-realesrgan-x4plus.json │ ├── 4x-realesrganv2-animevideo-xsx4.json │ ├── 4x-realplksr-gan-pretrain.json │ ├── 4x-realplksr-mssim-pretrain.json │ ├── 4x-realsr-df2k-jpeg.json │ ├── 4x-realsr-df2k.json │ ├── 4x-realsr-dped.json │ ├── 4x-scalenx.json │ ├── 4x-span-pretrain.json │ ├── 4x-spanx4-ch48.json │ ├── 4x-video-G.json │ ├── 4x-wtp-descreentone.json │ ├── 4x-wtp-manga-p-omni.json │ ├── 4x-xbrz-dd.json │ ├── 4x-xbrz.json │ ├── 8x-Arzenal-v1-1.json │ ├── 8x-BoyMeBob-Redux.json │ ├── 8x-ESRGAN.json │ ├── 8x-HugePaint.json │ ├── 8x-HugePeeps-v1.json │ ├── 8x-MS-Unpainter-De-Dither.json │ ├── 8x-MS-Unpainter.json │ ├── 8x-NMKD-Typescale.json │ ├── 8x-PSNR.json │ ├── 8x-Sphax-Alpha-NN.json │ ├── 8x-TGHQFace.json │ ├── 8x-classicalSR-DF2K-s64w8-SwinIR-M.json │ └── 8x-classicalSR-DIV2K-s64w8-SwinIR-M.json ├── original-model-file-names.json ├── tag-categories.json ├── tags.json └── users.json ├── docs ├── contributing │ ├── documentation.md │ ├── index.md │ └── models.md ├── faq.md ├── licenses.md ├── manifest.json └── training │ ├── datasets.md │ └── index.md ├── invoke-spandrel.py ├── jest.config.js ├── next.config.js ├── package-lock.json ├── package.json ├── postcss.config.js ├── public ├── assets │ ├── OpenModelDB.png │ ├── OpenModelDB.svg │ ├── OpenModelDB@2x.png │ ├── OpenModelDB@3x.png │ ├── OpenModelDB@4x.png │ ├── OpenModelDB_Jelly.png │ ├── OpenModelDB_Jelly.svg │ ├── OpenModelDB_Jelly@2x.png │ ├── OpenModelDB_Jelly@3x.png │ └── OpenModelDB_Jelly@4x.png ├── favicon.ico └── logo.svg ├── pyrightconfig.json ├── scripts ├── broken.ts ├── download-images.ts ├── generate-api.ts ├── generate-thumbnails.ts ├── model-from-issue.py ├── thumbnails.py ├── tsconfig.json └── validate-db.ts ├── src ├── elements │ ├── components │ │ ├── card.module.scss │ │ ├── card.tsx │ │ ├── carousel │ │ │ ├── comparison.tsx │ │ │ └── standalone.tsx │ │ ├── client.tsx │ │ ├── custom-icons.tsx │ │ ├── download-button-edit-popover.tsx │ │ ├── download-button.tsx │ │ ├── editable-label.module.scss │ │ ├── editable-label.tsx │ │ ├── editable-markdown.module.scss │ │ ├── editable-markdown.tsx │ │ ├── editable-tags.module.scss │ │ ├── editable-tags.tsx │ │ ├── editable-users.tsx │ │ ├── image-carousel-edit-popover.tsx │ │ ├── image-carousel-image.module.scss │ │ ├── image-carousel-image.tsx │ │ ├── image-carousel.module.scss │ │ ├── image-carousel.tsx │ │ ├── license-attributes.module.scss │ │ ├── license-attributes.tsx │ │ ├── link.module.scss │ │ ├── link.tsx │ │ ├── model-card-grid.module.scss │ │ ├── model-card-grid.tsx │ │ ├── model-card.module.scss │ │ ├── model-card.tsx │ │ ├── model-results.module.scss │ │ ├── model-results.tsx │ │ ├── scroll-to-top.module.scss │ │ ├── scroll-to-top.tsx │ │ ├── searchbar.tsx │ │ ├── switch.module.scss │ │ └── switch.tsx │ ├── head-common.tsx │ ├── header.module.scss │ ├── header.tsx │ ├── markdown.module.scss │ ├── markdown.tsx │ ├── page.module.scss │ ├── page.tsx │ ├── side-bar.module.scss │ ├── side-bar.tsx │ ├── tag-selector.module.scss │ ├── tag-selector.tsx │ ├── tag-view.module.scss │ ├── tag-view.tsx │ └── util.module.scss ├── lib │ ├── color-scheme.ts │ ├── data-api.ts │ ├── data-json-api.ts │ ├── data-session.ts │ ├── derive-tags.ts │ ├── docs │ │ ├── doc.ts │ │ ├── manifest.ts │ │ └── side-bar.ts │ ├── download-util.ts │ ├── hooks │ │ ├── use-architectures.ts │ │ ├── use-collections.ts │ │ ├── use-current-path.ts │ │ ├── use-current.ts │ │ ├── use-device-pixel-ratio.tsx │ │ ├── use-is-client.ts │ │ ├── use-is-touch.ts │ │ ├── use-memo-delay.ts │ │ ├── use-models.ts │ │ ├── use-search.ts │ │ ├── use-tags.ts │ │ ├── use-tooltip.module.scss │ │ ├── use-tooltip.tsx │ │ ├── use-update-model.ts │ │ ├── use-users.ts │ │ ├── use-web-api.tsx │ │ └── use-window-size.tsx │ ├── image-util.ts │ ├── implied-tags.ts │ ├── license.ts │ ├── lock.ts │ ├── model-files.ts │ ├── model-props.ts │ ├── parse-discord-message.ts │ ├── react-util.tsx │ ├── schema-util.ts │ ├── schema.ts │ ├── search │ │ ├── create.ts │ │ ├── logical-condition.ts │ │ ├── score.ts │ │ ├── search-index.ts │ │ └── token.ts │ ├── server │ │ ├── api-impl.ts │ │ ├── cached.ts │ │ ├── docs.ts │ │ ├── file-data.ts │ │ └── fs-util.ts │ ├── similar.ts │ ├── site-data.ts │ ├── sort-models.ts │ ├── static-data.ts │ ├── tag-condition.ts │ ├── text-description.ts │ ├── util.ts │ ├── validate-model.ts │ └── web-api.ts ├── pages │ ├── _app.tsx │ ├── _document.tsx │ ├── add-model.tsx │ ├── api │ │ ├── architectures.ts │ │ ├── collections.ts │ │ ├── fetch.ts │ │ ├── models.ts │ │ ├── mutation-sse.ts │ │ ├── pth-metadata.ts │ │ ├── save-model.ts │ │ ├── tag-categories.ts │ │ ├── tags.ts │ │ └── users.ts │ ├── architectures.tsx │ ├── collections │ │ └── [id].tsx │ ├── docs │ │ ├── [[...slug]].tsx │ │ └── docs.module.scss │ ├── index.tsx │ ├── models │ │ ├── OMDB_ADDMODEL_DUMMY.tsx │ │ └── [id].tsx │ ├── palette.tsx │ ├── tags.tsx │ ├── users.tsx │ └── users │ │ └── [id].tsx ├── stories │ ├── Card.stories.tsx │ ├── Link.stories.ts │ ├── Switch.stories.tsx │ ├── TextLink.stories.ts │ └── assets │ │ ├── code-brackets.svg │ │ ├── colors.svg │ │ ├── comments.svg │ │ ├── direction.svg │ │ ├── flow.svg │ │ ├── plugin.svg │ │ ├── repo.svg │ │ └── stackalt.svg └── styles │ ├── Home.module.scss │ ├── colors.scss │ ├── globals.scss │ └── theme.scss ├── tailwind.config.js ├── tests └── search │ ├── __snapshots__ │ ├── condition.test.ts.snap │ ├── parse-discord-messages.test.ts.snap │ └── token.test.ts.snap │ ├── condition.test.ts │ ├── parse-discord-messages.test.ts │ └── token.test.ts └── tsconfig.json /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=LF 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/model-add-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Model Add Request 3 | about: Request a model be added to the site. 4 | title: "[MODEL ADD REQUEST]" 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # dependencies 2 | /node_modules 3 | /.pnp 4 | .pnp.js 5 | 6 | # testing 7 | /coverage 8 | 9 | # next.js 10 | /.next/ 11 | /out/ 12 | 13 | # production 14 | /build 15 | 16 | # misc 17 | .DS_Store 18 | *.pem 19 | 20 | # debug 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | .pnpm-debug.log* 25 | 26 | # local env files 27 | .env*.local 28 | 29 | # vercel 30 | .vercel 31 | 32 | # typescript 33 | *.tsbuildinfo 34 | /next-env.d.ts 35 | 36 | # model files 37 | *.pt 38 | *.pth 39 | *.onnx 40 | *.bin 41 | *.param 42 | data/model-files/ 43 | 44 | # thumbnail 45 | .thumb-cache/ 46 | public/thumbs/ 47 | -------------------------------------------------------------------------------- /.storybook/main.ts: -------------------------------------------------------------------------------- 1 | import type { StorybookConfig } from '@storybook/nextjs'; 2 | 3 | const config: StorybookConfig = { 4 | "stories": [ 5 | "../src/**/*.mdx", 6 | "../src/**/*.stories.@(js|jsx|ts|tsx)" 7 | ], 8 | "addons": [ 9 | "@storybook/addon-links", 10 | "@storybook/addon-essentials", 11 | "@storybook/addon-interactions" 12 | ], 13 | "framework": { 14 | "name": "@storybook/nextjs", 15 | "options": {} 16 | }, 17 | "docs": { 18 | "autodocs": true 19 | } 20 | }; 21 | export default config; 22 | -------------------------------------------------------------------------------- /.stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "stylelint-config-standard-scss", 4 | "stylelint-prettier/recommended", 5 | "stylelint-config-prettier-scss" 6 | ], 7 | "rules": { 8 | "custom-property-empty-line-before": null, 9 | "no-descending-specificity": null, 10 | "selector-class-pattern": "^[a-z]+(?:-[a-z]+)*(?:__[a-z]+(?:-[a-z]+)*)?$|^[a-z][a-zA-Z0-9]*$" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "dbaeumer.vscode-eslint", 4 | "stylelint.vscode-stylelint", 5 | "bradlc.vscode-tailwindcss" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "typescript.tsdk": "node_modules/typescript/lib", 3 | "typescript.enablePromptUseWorkspaceTsdk": true, 4 | "cSpell.words": [ 5 | "ESRGAN", 6 | "Luma", 7 | "Pretrained", 8 | "pth", 9 | "upscaling" 10 | ], 11 | "editor.codeActionsOnSave": { 12 | "source.fixAll.stylelint": "explicit" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # [OpenModelDB](https://openmodeldb.info/) 2 | 3 | ![image](https://github.com/OpenModelDB/open-model-database/assets/34788790/24f386cf-aad7-442a-8399-649a11fcc0ea) 4 | 5 | ![GitHub repo file count (file extension)](https://img.shields.io/github/directory-file-count/OpenModelDB/open-model-database/data%2Fmodels?label=Models&color=%236e64ca&link=https%3A%2F%2Fopenmodeldb.info%2F) 6 | ![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/OpenModelDB/open-model-database/frontend.yml) 7 | ![Static Badge](https://img.shields.io/badge/PRs-welcome-blue) 8 | 9 | 10 | This repo contains all models and model metadata for OpenModelDB. 11 | 12 | OpenModelDB is a community-driven database of AI Upscaling models. We aim to provide a better way to find and compare models than existing sources. 13 | 14 | -------------------------------------------------------------------------------- /data/models/16x-ESRGAN.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "16xESRGAN", 3 | "author": "victorca25", 4 | "license": "Apache-2.0", 5 | "tags": [ 6 | "pretrained" 7 | ], 8 | "description": "Pretrained: RRDB_ESRGAN_x4.pth", 9 | "date": "2019-07-06", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 16, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 67249159, 23 | "sha256": "8701acac21c4c412a3e05242b389700c1248ff52314380793c045326f4c61dfb", 24 | "urls": [ 25 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/16x-ESRGAN.pth", 26 | "https://mega.nz/#!btwEXAoI!nNxWI89OdQCEkcRoPEFwj6GoFN8uzZyZFaCn1wbhzKY" 27 | ] 28 | } 29 | ], 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/16x-PSNR.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "16x PSNR Pretrained Model", 3 | "author": "blueamulet", 4 | "license": "Apache-2.0", 5 | "tags": [ 6 | "pretrained" 7 | ], 8 | "description": "Pretrained: RRDB_PSNR_x4.pth\n\nThe original RRDB_PSNR_x4.pth model converted to 1x, 2x, 8x and 16x scales, intended to be used as pretrained models for new models at those scales. These are compatible with victor's 4xESRGAN.pth conversions", 9 | "date": "2020-04-20", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 16, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 67254807, 23 | "sha256": "c145d3d3f6a4c9d1270ce59ea8f68db23308d421e5a2affb8f7f8dcdcabbd96e", 24 | "urls": [ 25 | "https://drive.google.com/open?id=1ldwajXL50uC7PCS63B4Wato6Dnk-svNL" 26 | ] 27 | } 28 | ], 29 | "images": [] 30 | } -------------------------------------------------------------------------------- /data/models/1x-Anti-Aliasing.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Anti Aliasing", 3 | "author": "twittman", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "anti-aliasing" 7 | ], 8 | "description": "Purpose: Anti aliasing / Images with pixelated edges", 9 | "date": "2019-06-03", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 1, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66662414, 23 | "sha256": "7a4cb10276899d6d93ba35f174653a11ebdcea5c6ca93aee226c108d177f311f", 24 | "urls": [ 25 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/1x-Anti-Aliasing.pth" 26 | ] 27 | } 28 | ], 29 | "images": [] 30 | } -------------------------------------------------------------------------------- /data/models/1x-BC1-smooth2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BC1 Smooth 2", 3 | "author": "blueamulet", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "compression-removal", 7 | "dds", 8 | "restoration" 9 | ], 10 | "description": "A model to help remove compression artifacts in BC1-BC3/DXT1-DXT5 compressed images (these all have color encoded the same way)", 11 | "date": "2019-09-05", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 1, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66658222, 25 | "sha256": "c41c6fd52bd9d1e98ec9e9fe036b183d5df74b554df68a9ec99a8c7430556d4b", 26 | "urls": [ 27 | "https://drive.google.com/open?id=1LHplsPRqhmjR28jGgRlEekeP_bvx3nUC" 28 | ] 29 | } 30 | ], 31 | "trainingIterations": 1000000, 32 | "trainingBatchSize": 20, 33 | "trainingHRSize": 32, 34 | "datasetSize": 4767, 35 | "images": [] 36 | } -------------------------------------------------------------------------------- /data/models/1x-BS-Colorizer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BS_Colorizer/Vapourizer", 3 | "author": "blackscout", 4 | "license": "GPL-3.0-only", 5 | "tags": [ 6 | "colorization" 7 | ], 8 | "description": "B/W | 100% Desaturated images. It mostly results in Blue and Yellow images with slight hints of Green, Orange and Magenta. You are free to use this as a pretrain to achieve better results.", 9 | "date": "2020-01-30", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 1, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66662414, 23 | "sha256": "db6f922e8067c70b2b201ae753534bf5b4ab3fb40371846b9bb216e975e64c58", 24 | "urls": [ 25 | "https://drive.google.com/file/d/1UgxnymTfLaVhY3aaDuBRnTZ9ehckKVKJ" 26 | ] 27 | } 28 | ], 29 | "trainingIterations": 22000, 30 | "trainingBatchSize": 1, 31 | "trainingHRSize": 128, 32 | "dataset": "Wallpapers", 33 | "pretrainedModelG": "1x-ESRGAN", 34 | "images": [] 35 | } -------------------------------------------------------------------------------- /data/models/1x-DeBLR.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "DeBLR", 3 | "author": "blackscout", 4 | "license": null, 5 | "tags": [ 6 | "deblur", 7 | "restoration" 8 | ], 9 | "description": "General Deblurring", 10 | "date": "2020-02-19", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 1, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66658224, 24 | "sha256": "33bacbe39bdd40fc41a8d080f2d10b7a2276689c3e983a26f7f3c4c02ad3bdff", 25 | "urls": [ 26 | "https://mega.nz/file/zcBRHRbJ#iLStv-F5ax-vQBPG7N6OaRv_xBhRHux3pdnSG43GuMg" 27 | ] 28 | } 29 | ], 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/1x-ESRGAN.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "1xESRGAN", 3 | "author": "victorca25", 4 | "license": "Apache-2.0", 5 | "tags": [ 6 | "pretrained" 7 | ], 8 | "description": "Pretrained: RRDB_ESRGAN_x4.pth", 9 | "date": "2019-07-06", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 1, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66656830, 23 | "sha256": "25e733e2b0d6ada63b07ace241e0f1065cec0d08945d6b20b9d46cc88bfa8b5d", 24 | "urls": [ 25 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/1x-ESRGAN.pth", 26 | "https://mega.nz/#!D940CAKR!-BAx7tSj1CgeopGkaMW31VuPsC3hvNBL35TEVAj4LIo" 27 | ] 28 | } 29 | ], 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/1x-Film-Degrainer-1-000.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Film-Degrainer_1-000", 3 | "author": "tika", 4 | "license": "CC0-1.0", 5 | "tags": [ 6 | "denoise", 7 | "restoration" 8 | ], 9 | "description": "Remove film grain/noise", 10 | "date": "2021-09-29", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "47nf", 14 | "17nb" 15 | ], 16 | "scale": 1, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 37843615, 24 | "sha256": "6a4ecccaea32825a09150df1106fd6990308e1442d71c1bd9f6a17e6196364fd", 25 | "urls": [ 26 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/1x-Film-Degrainer-1-000.pth", 27 | "https://drive.google.com/file/d/1a25Y2S_4LUOOiAyJfFJF29Jp8IGjlBuZ/view" 28 | ] 29 | } 30 | ], 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/1x-ISO-denoise-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ISO denoise v1", 3 | "author": "alpha", 4 | "license": "WTFPL", 5 | "tags": [ 6 | "denoise", 7 | "restoration" 8 | ], 9 | "description": "Remove high ISO noise", 10 | "date": "2020-02-22", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 1, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66658226, 24 | "sha256": "7db96abc2636106ec4f1e6152ce4d951fbabc07862442e886f0dd288e7a45d20", 25 | "urls": [ 26 | "https://drive.google.com/file/d/1f5kIr3gG5GjbN_EM96CCB0nqu_2_56gh/view" 27 | ] 28 | } 29 | ], 30 | "pretrainedModelG": "1x-ESRGAN", 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/1x-ISO-denoise-v2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ISO denoise v2", 3 | "author": "alpha", 4 | "license": "WTFPL", 5 | "tags": [ 6 | "denoise", 7 | "restoration" 8 | ], 9 | "description": "Remove high ISO noise", 10 | "date": "2020-03-16", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 1, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66658210, 24 | "sha256": "c3f9061143cb9c65add4f4d6b701416d251b6c22624bd5161a65357f52d5627d", 25 | "urls": [ 26 | "https://drive.google.com/file/d/1HSUvnQm56_CmVAAMjTfVn_Hi6a4Bm2h0/view" 27 | ] 28 | } 29 | ], 30 | "pretrainedModelG": "1x-ISO-denoise-v1", 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/1x-JPG-00-20-alsa.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "JPG (00-20%)", 3 | "author": "alsa", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "compression-removal", 7 | "jpeg", 8 | "restoration" 9 | ], 10 | "description": "Pretrained: Trained on Custom (Photos / Manga)", 11 | "date": "2019-04-19", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 1, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66662414, 25 | "sha256": "a60732980d7dd19900073a3d687f70d154f07b62f4dc98107b299893cc9f34c5", 26 | "urls": [ 27 | "https://e.pcloud.link/publink/show?code=XZvmsZo4qORoatgHXm4A1CooSUnuy5YD5X" 28 | ] 29 | } 30 | ], 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/1x-JPG-00-20.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "JPG (00-20%)", 3 | "author": "blueamulet", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "compression-removal", 7 | "jpeg", 8 | "restoration" 9 | ], 10 | "description": "Pretrained: Trained on Custom (CC0 Textures)\n\nGallery with sample images: https://drive.google.com/open?id=1HWokMsUwsR_Mw-NOJgc8OdS8mkdIje_C", 11 | "date": "2019-08-06", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 1, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66658216, 25 | "sha256": "f6443ad1469750d7325dd25fcbf051238f455b9d5517eeea83a778f38c394a66", 26 | "urls": [ 27 | "https://drive.google.com/file/d/1maYmC5yyzWCC42X5O0HeDuepsLFh7AV4/view?usp=drive_link", 28 | "https://drive.google.com/drive/folders/1HWokMsUwsR_Mw-NOJgc8OdS8mkdIje_C" 29 | ] 30 | } 31 | ], 32 | "images": [] 33 | } -------------------------------------------------------------------------------- /data/models/1x-JPG-20-40-alsa.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "JPG (20-40%)", 3 | "author": "alsa", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "compression-removal", 7 | "jpeg", 8 | "restoration" 9 | ], 10 | "description": "Pretrained: Trained on Custom (Photos / Manga)", 11 | "date": "2019-04-16", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 1, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66662414, 25 | "sha256": "145d80cf573f4ef1e615f52300f4726033c1fcecad56e6f0d4e1328d28a2072c", 26 | "urls": [ 27 | "https://e.pcloud.link/publink/show?code=XZimsZmfeBi2HJp9H00wvCRISpnuSRrjgy" 28 | ] 29 | } 30 | ], 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/1x-JPG-20-40.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "JPG (20-40%)", 3 | "author": "blueamulet", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "compression-removal", 7 | "jpeg", 8 | "restoration" 9 | ], 10 | "description": "Pretrained: Trained on Custom (CC0 Textures)\n\nGallery with sample images: https://drive.google.com/open?id=1HWokMsUwsR_Mw-NOJgc8OdS8mkdIje_C", 11 | "date": "2019-08-01", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 1, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66658222, 25 | "sha256": "6fcc1021849afea2cf104b30dfeb10ab823c73da325b29ff7d2330cb4fd713bd", 26 | "urls": [ 27 | "https://drive.google.com/file/d/1AjVnJCne4_JNYKGfzeogNxXo5zXMCGLe/view?usp=drive_link", 28 | "https://drive.google.com/drive/folders/1HWokMsUwsR_Mw-NOJgc8OdS8mkdIje_C" 29 | ] 30 | } 31 | ], 32 | "images": [] 33 | } -------------------------------------------------------------------------------- /data/models/1x-JPG-40-60-alsa.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "JPG (40-60%)", 3 | "author": "alsa", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "compression-removal", 7 | "jpeg", 8 | "restoration" 9 | ], 10 | "description": "Pretrained: Trained on Custom (Photos / Manga)", 11 | "date": "2019-04-14", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 1, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66662414, 25 | "sha256": "9d9a83400dadbdd472cdb564354a85ac93ecd2316e59352c3247e7882840e5c3", 26 | "urls": [ 27 | "https://e.pcloud.link/publink/show?code=XZrmsZbOaINRer4xRn6UWBtGgRK5r7biWy" 28 | ] 29 | } 30 | ], 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/1x-JPG-40-60.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "JPG (40-60%)", 3 | "author": "blueamulet", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "compression-removal", 7 | "jpeg", 8 | "restoration" 9 | ], 10 | "description": "Pretrained: Trained on Custom (CC0 Textures)\n\nGallery with sample images: https://drive.google.com/open?id=1HWokMsUwsR_Mw-NOJgc8OdS8mkdIje_C", 11 | "date": "2019-08-01", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 1, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66658222, 25 | "sha256": "486f6fa647dac3c17bf454c0397fdf7c2c3bf9d7c5909da3f1ba4537515c7505", 26 | "urls": [ 27 | "https://drive.google.com/file/d/1lgpo60okKC_9D6mzymHOvwdJDsOqxi7j/view?usp=drive_link", 28 | "https://drive.google.com/drive/folders/1HWokMsUwsR_Mw-NOJgc8OdS8mkdIje_C" 29 | ] 30 | } 31 | ], 32 | "images": [] 33 | } -------------------------------------------------------------------------------- /data/models/1x-JPG-60-80-alsa.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "JPG (60-80%)", 3 | "author": "alsa", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "compression-removal", 7 | "jpeg", 8 | "restoration" 9 | ], 10 | "description": "Pretrained: Trained on Custom (Photos / Manga)", 11 | "date": "2019-04-12", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 1, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66662414, 25 | "sha256": "71953c3de5d4cb4b16fbd4caa4bac1114f3b86fc4e8c5a5a56c80e309658e201", 26 | "urls": [ 27 | "https://e.pcloud.link/publink/show?code=XZcmsZASeN84hQXCLfhYzUogomG5EdkwPV" 28 | ] 29 | } 30 | ], 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/1x-JPG-60-80.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "JPG (60-80%)", 3 | "author": "blueamulet", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "compression-removal", 7 | "jpeg", 8 | "restoration" 9 | ], 10 | "description": "Pretrained: Trained on Custom (CC0 Textures)\n\nGallery with sample images: https://drive.google.com/open?id=1HWokMsUwsR_Mw-NOJgc8OdS8mkdIje_C", 11 | "date": "2019-08-01", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 1, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66658222, 25 | "sha256": "a375a0eb9b054caa4cd8e39c5bc369e6989c6da718908f77575350e1e3654e97", 26 | "urls": [ 27 | "https://drive.google.com/file/d/1V2PTYzMMDIB7NNCp-ZXhIf26a0xHO2b2/view?usp=drive_link", 28 | "https://drive.google.com/drive/folders/1HWokMsUwsR_Mw-NOJgc8OdS8mkdIje_C" 29 | ] 30 | } 31 | ], 32 | "images": [] 33 | } -------------------------------------------------------------------------------- /data/models/1x-JPG-80-100-alsa.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "JPG (80-100%)", 3 | "author": "alsa", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "compression-removal", 7 | "jpeg", 8 | "restoration" 9 | ], 10 | "description": "Pretrained: Trained on Custom (Photos / Manga)", 11 | "date": "2019-04-11", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 1, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66662414, 25 | "sha256": "ce9d74b4befd08ecc751171fa4aa28650aae693967d31540d7b179ce3fa2335d", 26 | "urls": [ 27 | "https://e.pcloud.link/publink/show?code=XZomsZwGOr2Jb4lLXGopIwu8UtNQqpuqyX" 28 | ] 29 | } 30 | ], 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/1x-JPG-80-100.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "JPG (80-100%)", 3 | "author": "blueamulet", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "compression-removal", 7 | "jpeg", 8 | "restoration" 9 | ], 10 | "description": "Pretrained: Trained on Custom (CC0 Textures)\n\nGallery with sample images: https://drive.google.com/open?id=1HWokMsUwsR_Mw-NOJgc8OdS8mkdIje_C", 11 | "date": "2019-08-01", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 1, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66658222, 25 | "sha256": "40855d1e547510c3122aae8ddb7aab274daf8661e87260bb114ef164813b7380", 26 | "urls": [ 27 | "https://drive.google.com/file/d/17ocFMDz4jfYH73mT_4i1099JCGVnOHd2/view?usp=drive_link", 28 | "https://drive.google.com/drive/folders/1HWokMsUwsR_Mw-NOJgc8OdS8mkdIje_C" 29 | ] 30 | } 31 | ], 32 | "images": [] 33 | } -------------------------------------------------------------------------------- /data/models/1x-NMKD-Jaywreck3-Soft-Lite.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "NMKD Jaywreck3-Soft (Lite)", 3 | "author": "nmkd", 4 | "license": "WTFPL", 5 | "tags": [ 6 | "compression-removal", 7 | "jpeg", 8 | "restoration" 9 | ], 10 | "description": "", 11 | "date": "2020-10-13", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "32nf", 15 | "12nb" 16 | ], 17 | "scale": 1, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 20096393, 25 | "sha256": "bbd1b6e9002ad9cbb4c5049850a361e110b8ed0ae22f5ed0fb49ddf5a6951f53", 26 | "urls": [ 27 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/1x-NMKD-Jaywreck3-Soft-Lite.pth", 28 | "https://icedrive.net/1/43GNBihZyi" 29 | ] 30 | } 31 | ], 32 | "trainingIterations": 320000, 33 | "trainingBatchSize": 4, 34 | "trainingHRSize": 112, 35 | "dataset": "DIV2K Train + Valid", 36 | "pretrainedModelG": "1x-ESRGAN", 37 | "images": [] 38 | } -------------------------------------------------------------------------------- /data/models/1x-NoiseToner-Poisson.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "NoiseToner Poisson", 3 | "author": "mutin-choler", 4 | "license": "WTFPL", 5 | "tags": [ 6 | "denoise", 7 | "restoration" 8 | ], 9 | "description": "Noise remover", 10 | "date": "2020-10-14", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 1, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66665765, 24 | "sha256": "a6af1670f9e7deecc5bbb2cd997f1d3727c151574d4b1611c9d96b45382c336e", 25 | "urls": [ 26 | "https://drive.google.com/file/d/1MKDBBjSIpwoTZba_AxT6jxeAL-3e2DcZ/view?usp=drive_link", 27 | "https://drive.google.com/drive/u/1/folders/12j6BvuR7SU48ui9DHjBPB1vzPpQri9bD" 28 | ] 29 | } 30 | ], 31 | "pretrainedModelG": "1x-ESRGAN", 32 | "images": [] 33 | } -------------------------------------------------------------------------------- /data/models/1x-NoiseToner-Uniform.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "NoiseToner Uniform", 3 | "author": "mutin-choler", 4 | "license": "WTFPL", 5 | "tags": [ 6 | "denoise", 7 | "restoration" 8 | ], 9 | "description": "Noise remover", 10 | "date": "2020-10-14", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 1, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66665765, 24 | "sha256": "7d1356a3f00e93eb27573ded2ee5e35739bf1b92460721bd74a2933bdbf5a962", 25 | "urls": [ 26 | "https://drive.google.com/file/d/1-CNZWWom9FZQTvWVerch2xJtNqOSVWLi/view?usp=drive_link", 27 | "https://drive.google.com/drive/u/1/folders/12j6BvuR7SU48ui9DHjBPB1vzPpQri9bD" 28 | ] 29 | } 30 | ], 31 | "pretrainedModelG": "1x-ESRGAN", 32 | "images": [] 33 | } -------------------------------------------------------------------------------- /data/models/1x-PSNR.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "1x PSNR Pretrained Model", 3 | "author": "blueamulet", 4 | "license": "Apache-2.0", 5 | "tags": [ 6 | "pretrained" 7 | ], 8 | "description": "Pretrained: RRDB_PSNR_x4.pth\n\nThe original RRDB_PSNR_x4.pth model converted to 1x, 2x, 8x and 16x scales, intended to be used as pretrained models for new models at those scales. These are compatible with victor's 4xESRGAN.pth conversions", 9 | "date": "2020-04-20", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 1, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66662414, 23 | "sha256": "ff21024c37df196dbfa10ed5593a399a64282864ee8e1c59156977c44c05bbd4", 24 | "urls": [ 25 | "https://drive.google.com/open?id=1ldwajXL50uC7PCS63B4Wato6Dnk-svNL" 26 | ] 27 | } 28 | ], 29 | "images": [] 30 | } -------------------------------------------------------------------------------- /data/models/1x-SS-Anti-Alias-9x.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SS Anti Alias 9x", 3 | "author": "blueamulet", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "anti-aliasing" 7 | ], 8 | "description": "", 9 | "date": "2020-02-27", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 1, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66662414, 23 | "sha256": "c0066eb6e6013839c20d0a986a1cd3067e857801c6cc0a879091c2d095753800", 24 | "urls": [ 25 | "https://drive.google.com/open?id=11nMqVF9sUN2jRRagYc3wdWNX5acEy0MJ" 26 | ] 27 | } 28 | ], 29 | "trainingIterations": 125280, 30 | "trainingEpochs": 367, 31 | "trainingBatchSize": 12, 32 | "trainingHRSize": 32, 33 | "dataset": "Randomly generated images. Custom (9x Supersampling AA)", 34 | "datasetSize": 4096, 35 | "images": [] 36 | } -------------------------------------------------------------------------------- /data/models/1x-artifacts-bc1-free-alsa.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Artifacts BC1 Free alsa", 3 | "author": "alsa", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "compression-removal", 7 | "dds", 8 | "restoration" 9 | ], 10 | "description": "Pretrained: BC1 take 2", 11 | "date": "2019-05-24", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 1, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66663810, 25 | "sha256": "6ea3aeb56bf2da663896dae19d22800849c71dfc987fb493e9db477766407296", 26 | "urls": [ 27 | "https://e.pcloud.link/publink/show?code=XZXbsZK03Y0UsmtR0W7wRMHWGvYkzgPII7" 28 | ] 29 | } 30 | ], 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/1x-artifacts-dithering-alsa.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Artifacts Dithering alsa", 3 | "author": "alsa", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "dedither", 7 | "restoration" 8 | ], 9 | "description": "Dithered Images", 10 | "date": "2019-04-25", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 1, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66663810, 24 | "sha256": "4bc577180665d9dc0d8be91661b2fb95e23e625a91ae8466502a89e195d9bb79", 25 | "urls": [ 26 | "https://e.pcloud.link/publink/show?code=XZ5bsZtd0ldzEF2UFLSYqIBNhqNH21slxX", 27 | "https://mega.nz/file/IsABVIJb#ljH6JDvFahi6KLWpaeQ_G9DOSQlvhwjbitlPBbSHcuo" 28 | ] 29 | } 30 | ], 31 | "pretrainedModelG": "1x-JPG-00-20-alsa", 32 | "images": [] 33 | } -------------------------------------------------------------------------------- /data/models/1x-cinepak.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cinepak", 3 | "author": "twittman", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "compression-removal", 7 | "restoration", 8 | "video-frame" 9 | ], 10 | "description": "Removal of Compression such as Cinepak, msvideo1 and Roq", 11 | "date": "2019-07-03", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 1, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66662414, 25 | "sha256": "daff496050e7eccd300f011e3abe08cdcb44d100236fe66cc291de86cb7262b5", 26 | "urls": [ 27 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/1x-cinepak.pth" 28 | ] 29 | } 30 | ], 31 | "trainingIterations": 200000, 32 | "trainingEpochs": 21, 33 | "trainingBatchSize": 1, 34 | "trainingHRSize": 128, 35 | "datasetSize": 8000, 36 | "images": [] 37 | } -------------------------------------------------------------------------------- /data/models/1x-mdeblur.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mdeblur", 3 | "author": "lyonhrt", 4 | "license": null, 5 | "tags": [ 6 | "deblur", 7 | "restoration" 8 | ], 9 | "description": "Strong deblurring model", 10 | "date": "2019-08-29", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 1, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66662414, 24 | "sha256": "e4c19f65bc0d217b4c3c17e32ac12d4a351ba6e3f7d5d36118c1f4f7a5b7abec", 25 | "urls": [ 26 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/1x-mdeblur.pth" 27 | ] 28 | } 29 | ], 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/1x-span-anime-pretrain.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "1x-span_anime_pretrain", 3 | "author": "kim2091", 4 | "license": "CC0-1.0", 5 | "tags": [ 6 | "anime", 7 | "pretrained" 8 | ], 9 | "description": "Basic 1x model to use for SPAN anime models. Enjoy", 10 | "date": "2023-12-14", 11 | "architecture": "span", 12 | "size": null, 13 | "scale": 1, 14 | "inputChannels": 3, 15 | "outputChannels": 3, 16 | "resources": [ 17 | { 18 | "platform": "pytorch", 19 | "type": "pth", 20 | "size": 8938330, 21 | "sha256": "b9d33d62e4cf67a4033b4332c9d742b5b23192836289ec8b1af1dbcb7d00098c", 22 | "urls": [ 23 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/1x-span-anime-pretrain.pth" 24 | ] 25 | } 26 | ], 27 | "trainingIterations": 30000, 28 | "dataset": "HFA2k_LUDVAE modified", 29 | "images": [ 30 | { 31 | "type": "standalone", 32 | "caption": "1", 33 | "url": "https://images2.imgbox.com/34/27/VczQKFKi_o.png" 34 | } 35 | ] 36 | } -------------------------------------------------------------------------------- /data/models/2x-BS-Wolly.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BSWolly", 3 | "author": "blackscout", 4 | "license": "GPL-3.0-only", 5 | "tags": [ 6 | "cgi", 7 | "restoration" 8 | ], 9 | "description": "Pixar Movies or Wall-E pictures/frames", 10 | "date": "2020-02-07", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 2, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66810509, 24 | "sha256": "d4aa9195385b59c216956dedcdacb7776b6a16ec35d88940a9fe5687c4afaf75", 25 | "urls": [ 26 | "https://drive.google.com/file/d/1zlc8BWOcpCbSZpwf7ArMCqpb0Tf9DlZk/view?usp=drivesdk" 27 | ] 28 | } 29 | ], 30 | "trainingIterations": 36000, 31 | "trainingEpochs": 3, 32 | "trainingBatchSize": 1, 33 | "trainingHRSize": 256, 34 | "dataset": "BD 1080p of Wall-E (FFMPEG extraction at 1FPS with frames of the movie except intro but forgot the credits oops X)", 35 | "pretrainedModelG": "2x-ESRGAN", 36 | "images": [] 37 | } -------------------------------------------------------------------------------- /data/models/2x-Byousoku-5-Centimeter.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Byousoku 5 Centimeter", 3 | "author": "mystery-bullet", 4 | "license": "GPL-3.0-only", 5 | "tags": [ 6 | "anime", 7 | "cartoon" 8 | ], 9 | "description": "Purpose: Anime/Pretrained\n\nAnime landscape upscale. Trained on Frames from BluRay of Byousoku 5 Centimeter", 10 | "date": "2020-04-08", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 2, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66806309, 24 | "sha256": "40c78a2d689fcf0243fba2eede909735bfe9300dc97b6c94305b7376b61bf613", 25 | "urls": [ 26 | "https://drive.google.com/file/d/1FWzEgqaSg2z0qOSjcmAxEUB3clEkm1PG/view" 27 | ] 28 | } 29 | ], 30 | "pretrainedModelG": "2x-ESRGAN", 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/2x-DAT-2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "DAT_2_X2", 3 | "author": "zheng-chen", 4 | "license": "Apache-2.0", 5 | "tags": [ 6 | "pretrained", 7 | "research" 8 | ], 9 | "description": "", 10 | "date": "2023-07-16", 11 | "architecture": "dat", 12 | "size": [ 13 | "medium", 14 | "s64|8x32", 15 | "64nf", 16 | "180dim", 17 | "2.0ef", 18 | "1conv" 19 | ], 20 | "scale": 2, 21 | "inputChannels": 3, 22 | "outputChannels": 3, 23 | "resources": [ 24 | { 25 | "platform": "pytorch", 26 | "type": "pth", 27 | "size": 139741569, 28 | "sha256": "aea2c76996c2b3e7cb034380e07738608bd59cc34c667331df7269e4b670ac18", 29 | "urls": [ 30 | "https://drive.google.com/drive/folders/1yV9LMhr2tYM_eHEIVY4Jw9X3bWGgorbD?usp=drive_link" 31 | ] 32 | } 33 | ], 34 | "images": [] 35 | } -------------------------------------------------------------------------------- /data/models/2x-ESRGAN.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "2xESRGAN", 3 | "author": "victorca25", 4 | "license": "Apache-2.0", 5 | "tags": [ 6 | "pretrained" 7 | ], 8 | "description": "Pretrained: RRDB_ESRGAN_x4.pth", 9 | "date": "2019-07-06", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 2, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66804909, 23 | "sha256": "fedd0660312effd7febb8c06a4ac0304eaee5ca119b508895a95b0aa11ba6310", 24 | "urls": [ 25 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/2x-ESRGAN.pth", 26 | "https://mega.nz/#!vtgSWKQT!K7Asn2zKe4N70R2aV89KEMTKhH3aiyGAAiuQDJF09qs" 27 | ] 28 | } 29 | ], 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/2x-Faithful.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Faithful", 3 | "author": "joey", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art", 9 | "date": "2019-09-08", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 2, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66810509, 23 | "sha256": "6b686f8e4d6eb44d14586c5bd267c99734a5f220aee4be8539bf973e24638e32", 24 | "urls": [ 25 | "https://drive.google.com/open?id=1BzT-KwUBiZzACxGdIN6w930aOVvvfhg7" 26 | ] 27 | } 28 | ], 29 | "trainingIterations": 130000, 30 | "trainingEpochs": 3713, 31 | "trainingBatchSize": 80, 32 | "trainingHRSize": 32, 33 | "dataset": "Faithful 32x32 for Minecraft 1.13 and 1.14 (HR) and default Minecraft 1.13 and 1.14 resources (LR)", 34 | "datasetSize": 2858, 35 | "pretrainedModelG": "2x-ESRGAN", 36 | "images": [] 37 | } -------------------------------------------------------------------------------- /data/models/2x-Gen5-Alpha.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Gen5 Alpha", 3 | "author": "joey", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Alphas\nPurpose: Pixel Art with Tranparency / Alpha Channel", 9 | "date": "2021-02-03", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 2, 16 | "inputChannels": 4, 17 | "outputChannels": 4, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66815121, 23 | "sha256": "cf5a17eb114b6d72b4d40f0c6acd6a732a15af8b799f919c58edf97ba4442542", 24 | "urls": [ 25 | "https://u.pcloud.link/publink/show?code=kZkR7hXZhfCA4WvVQvbxXkNN50tazuxj73uX" 26 | ] 27 | } 28 | ], 29 | "trainingIterations": 175000, 30 | "trainingEpochs": 409, 31 | "trainingBatchSize": 8, 32 | "trainingHRSize": 96, 33 | "dataset": "Gen 5 Pokemon sprites", 34 | "datasetSize": 3376, 35 | "pretrainedModelG": "4x-FireAlpha", 36 | "images": [] 37 | } -------------------------------------------------------------------------------- /data/models/2x-PSNR.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "2x PSNR Pretrained Model", 3 | "author": "blueamulet", 4 | "license": "Apache-2.0", 5 | "tags": [ 6 | "pretrained" 7 | ], 8 | "description": "Pretrained: RRDB_PSNR_x4.pth\n\nThe original RRDB_PSNR_x4.pth model converted to 1x, 2x, 8x and 16x scales, intended to be used as pretrained models for new models at those scales. These are compatible with victor's 4xESRGAN.pth conversions", 9 | "date": "2020-04-20", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 2, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66810509, 23 | "sha256": "8cd3c718ed2d351c63cc1a8e564725ed0dd9610de626600cb6bbde2ac17ab8e4", 24 | "urls": [ 25 | "https://drive.google.com/open?id=1ldwajXL50uC7PCS63B4Wato6Dnk-svNL" 26 | ] 27 | } 28 | ], 29 | "images": [] 30 | } -------------------------------------------------------------------------------- /data/models/2x-SBS11-RRDB.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SBS11 RRDB", 3 | "author": "joey", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "anime", 7 | "cartoon", 8 | "pretrained" 9 | ], 10 | "description": "Pretrained Discriminators", 11 | "date": "2020-12-03", 12 | "architecture": "sofvsr", 13 | "size": null, 14 | "scale": 2, 15 | "inputChannels": 3, 16 | "outputChannels": 3, 17 | "resources": [ 18 | { 19 | "platform": "pytorch", 20 | "type": "pth", 21 | "size": 68643398, 22 | "sha256": "2606fdf62fc6423207382e63e56bcabf705360a029160d9758e8f103fcfc9550", 23 | "urls": [ 24 | "https://u.pcloud.link/publink/show?code=kZ5QKLXZ5mPYmsGpGU75DLNII9AOlYQNqMjk" 25 | ] 26 | } 27 | ], 28 | "trainingIterations": 111000, 29 | "trainingEpochs": 11, 30 | "trainingBatchSize": 6, 31 | "trainingHRSize": 128, 32 | "dataset": "Every 6 frames from every episode of Spongebob Season 11 (DVD and HD). DVD was resized with Spline36 to 540p. LR also got extra OTF JPEG (1/4 chance) and sharpening (15% chance)", 33 | "datasetSize": 126956, 34 | "images": [] 35 | } -------------------------------------------------------------------------------- /data/models/2x-cainREALTIME.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cainREALTIME", 3 | "author": "hubert", 4 | "license": "MIT", 5 | "tags": [ 6 | "photo" 7 | ], 8 | "description": "Category: Pretrained SOFVSR Models\nPurpose: RL videos - interpolation\nArchitecture: CAIN (CAIN 1 Group)\n\nTrained mostly on abba music videos", 9 | "date": "2021-07-13", 10 | "architecture": "cain", 11 | "size": null, 12 | "scale": 2, 13 | "inputChannels": 3, 14 | "outputChannels": 3, 15 | "resources": [ 16 | { 17 | "platform": "pytorch", 18 | "type": "pth", 19 | "size": 18979084, 20 | "sha256": "16e48f46a1f284c4a0e88ca001a0c491c35e8d9b865a9bcfd64dfc03b8c9504d", 21 | "urls": [ 22 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/2x-cainREALTIME.pth" 23 | ] 24 | } 25 | ], 26 | "dataset": "Mostly abba music videos", 27 | "images": [] 28 | } -------------------------------------------------------------------------------- /data/models/2x-cainliteanime.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cainliteanime", 3 | "author": "hubert", 4 | "license": "MIT", 5 | "tags": [ 6 | "anime" 7 | ], 8 | "description": "Category: Pretrained SOFVSR Models\nPurpose: Anime - interpolation\n\nSample video: https://cdn.discordapp.com/attachments/724353640521007145/873861876352704533/1.webm", 9 | "date": "2021-08-06", 10 | "architecture": "cain", 11 | "size": null, 12 | "scale": 2, 13 | "inputChannels": 3, 14 | "outputChannels": 3, 15 | "resources": [ 16 | { 17 | "platform": "pytorch", 18 | "type": "pth", 19 | "size": 35959343, 20 | "sha256": "092401d94d9b0aef33017df9f38ec6915d82171ea40fb109dee7b8d8b34ca761", 21 | "urls": [ 22 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/2x-cainliteanime.pth" 23 | ] 24 | } 25 | ], 26 | "trainingIterations": 450533, 27 | "trainingEpochs": 207, 28 | "trainingBatchSize": 3, 29 | "images": [] 30 | } -------------------------------------------------------------------------------- /data/models/2x-cvpv6.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cvpv6", 3 | "author": "hubert", 4 | "license": "MIT", 5 | "tags": [ 6 | "anime" 7 | ], 8 | "description": "Category: Pretrained SOFVSR Models\nPurpose: Anime - interpolation", 9 | "date": "2021-09-21", 10 | "architecture": "cain", 11 | "size": null, 12 | "scale": 2, 13 | "inputChannels": 3, 14 | "outputChannels": 3, 15 | "resources": [ 16 | { 17 | "platform": "pytorch", 18 | "type": "pth", 19 | "size": 105106008, 20 | "sha256": "44a8fb7c8b56b1669bc1e692dae51b3dd96cf6f49db142194480e50645db8618", 21 | "urls": [ 22 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/2x-cvpv6.pth", 23 | "https://files.catbox.moe/nxh1cv.pth" 24 | ] 25 | } 26 | ], 27 | "images": [] 28 | } -------------------------------------------------------------------------------- /data/models/2x-explodV1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "explodV1", 3 | "author": "hubert", 4 | "license": "BSD-3-Clause", 5 | "tags": [ 6 | "anime" 7 | ], 8 | "description": "Category: Pretrained SOFVSR Models\nPurpose: Animethemes\n\nI think one of sharpest models for anime. Sample video: https://cdn.discordapp.com/attachments/579685650824036387/1002663424695750686/output.mp4\n\nPlz don't steal without credits, k thx.", 9 | "date": "2022-07-29", 10 | "architecture": "cain-yuv", 11 | "size": null, 12 | "scale": 2, 13 | "inputChannels": 3, 14 | "outputChannels": 3, 15 | "resources": [ 16 | { 17 | "platform": "pytorch", 18 | "type": "pth", 19 | "size": 52981113, 20 | "sha256": "db25c959fc962bda03089d8f317f2f3ca4dd8167241701f7de469ceb982f33cc", 21 | "urls": [ 22 | "https://mega.nz/file/M49hFKrZ#oiJ27D52UL4vV2SCkKbiDS7PErBidGpseDX3D3FMpuQ" 23 | ] 24 | } 25 | ], 26 | "trainingIterations": 506951, 27 | "trainingEpochs": 83, 28 | "dataset": "Animethemes", 29 | "images": [] 30 | } -------------------------------------------------------------------------------- /data/models/2x-span-anime-pretrain.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "2x-span_anime_pretrain", 3 | "author": "kim2091", 4 | "license": null, 5 | "tags": [ 6 | "anime", 7 | "pretrained" 8 | ], 9 | "description": "This is just a very basic 2x model to start your anime models with on SPAN, nothing special. I tried to keep it as basic as possible", 10 | "date": "2023-12-09", 11 | "architecture": "span", 12 | "size": null, 13 | "scale": 2, 14 | "inputChannels": 3, 15 | "outputChannels": 3, 16 | "resources": [ 17 | { 18 | "platform": "pytorch", 19 | "type": "pth", 20 | "size": 8953466, 21 | "sha256": "902bfb598c39f40312ec6dd04f60d7a7fd85cc9112a1a7e1c95dab793aaf7025", 22 | "urls": [ 23 | "https://mega.nz/file/HMZ0jLyL#oRUi6pn53THVgHrqwf1YNYlhaBCEcm9r7EUho9kCOLc" 24 | ] 25 | } 26 | ], 27 | "trainingIterations": 67000, 28 | "trainingOTF": false, 29 | "dataset": "HFA2k_LUDVAE modified", 30 | "images": [ 31 | { 32 | "type": "standalone", 33 | "caption": "1", 34 | "url": "https://images2.imgbox.com/0d/86/H7e6PYdy_o.png" 35 | } 36 | ] 37 | } -------------------------------------------------------------------------------- /data/models/2x-spanx2-ch48.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "spanx2_ch48", 3 | "author": "hongyuanyu", 4 | "license": "Apache-2.0", 5 | "tags": [ 6 | "pretrained", 7 | "research" 8 | ], 9 | "description": "Official 2x pretrain for [SPAN](https://github.com/hongyuanyu/span).", 10 | "date": "2023-11-17", 11 | "architecture": "span", 12 | "size": null, 13 | "scale": 2, 14 | "inputChannels": 3, 15 | "outputChannels": 3, 16 | "resources": [ 17 | { 18 | "platform": "pytorch", 19 | "type": "pth", 20 | "size": 8942586, 21 | "sha256": "0b20caeea7af5507ec3bdc63ff5a141a28506279d2cfec909c417ecb308d3f93", 22 | "urls": [ 23 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/2x-spanx2-ch48.pth", 24 | "https://drive.google.com/file/d/1iYUA2TzKuxI0vzmA-UXr_nB43XgPOXUg/view?usp=sharing" 25 | ] 26 | } 27 | ], 28 | "images": [] 29 | } -------------------------------------------------------------------------------- /data/models/3x-DAT-2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "DAT_2_X3", 3 | "author": "zheng-chen", 4 | "license": "Apache-2.0", 5 | "tags": [ 6 | "pretrained", 7 | "research" 8 | ], 9 | "description": "", 10 | "date": "2023-07-16", 11 | "architecture": "dat", 12 | "size": [ 13 | "medium", 14 | "s64|8x32", 15 | "64nf", 16 | "180dim", 17 | "2.0ef", 18 | "1conv" 19 | ], 20 | "scale": 3, 21 | "inputChannels": 3, 22 | "outputChannels": 3, 23 | "resources": [ 24 | { 25 | "platform": "pytorch", 26 | "type": "pth", 27 | "size": 140480129, 28 | "sha256": "e19fbb2e6addf5cecf90472937fabdd905853b79c4ef807b4dd184c30bb22a28", 29 | "urls": [ 30 | "https://drive.google.com/drive/folders/1yV9LMhr2tYM_eHEIVY4Jw9X3bWGgorbD?usp=drive_link" 31 | ] 32 | } 33 | ], 34 | "images": [] 35 | } -------------------------------------------------------------------------------- /data/models/3x-Video-TSSM-RRDB.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Video TSSM RRDB", 3 | "author": "joey", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "anime", 7 | "cartoon", 8 | "pretrained" 9 | ], 10 | "description": "Pretrained Discriminators", 11 | "date": "2020-11-25", 12 | "architecture": "sofvsr", 13 | "size": null, 14 | "scale": 3, 15 | "inputChannels": 3, 16 | "outputChannels": 3, 17 | "resources": [ 18 | { 19 | "platform": "pytorch", 20 | "type": "pth", 21 | "size": 69122119, 22 | "sha256": "4cfc1dbd850799520e0b3020f3477f37b409701219cff0701ba1ae12d4cc2313", 23 | "urls": [ 24 | "https://u.pcloud.link/publink/show?code=XZ2AERXZ9YpzzV4rRvySFiq3MsrTEYdEjtkV" 25 | ] 26 | } 27 | ], 28 | "trainingIterations": 80000, 29 | "trainingBatchSize": 6, 30 | "trainingHRSize": 192, 31 | "dataset": "LR: The Spongebob Squarepants Movie (DVD) | HR: The Spongebob Squarepants Movie (Blu-ray). Randomly exported scenes.", 32 | "images": [] 33 | } -------------------------------------------------------------------------------- /data/models/3x-Video-TSSM.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Video TSSM", 3 | "author": "joey", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "anime", 7 | "cartoon", 8 | "pretrained" 9 | ], 10 | "description": "Category: Pretrained Discriminators\n\n\nnone", 11 | "date": "2020-11-17", 12 | "architecture": "sofvsr", 13 | "size": null, 14 | "scale": 3, 15 | "inputChannels": 3, 16 | "outputChannels": 3, 17 | "resources": [ 18 | { 19 | "platform": "pytorch", 20 | "type": "pth", 21 | "size": 4730412, 22 | "sha256": "3ed58c98012ee903fcda6c26fd28f27bd2e3560a10d4904fb384b3de6f7c52fb", 23 | "urls": [ 24 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/3x-Video-TSSM.pth", 25 | "https://u.pcloud.link/publink/show?code=XZMmozXZjW4hHqJu7ikbQpyeqUItTh7QJO6k" 26 | ] 27 | } 28 | ], 29 | "trainingIterations": 70000, 30 | "trainingBatchSize": 16, 31 | "trainingHRSize": 192, 32 | "dataset": "LR: The Spongebob Squarepants Movie (DVD) | HR: The Spongebob Squarepants Movie (Blu-ray). Randomly exported scenes.", 33 | "images": [] 34 | } -------------------------------------------------------------------------------- /data/models/4x-AbeScale.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AbeScale", 3 | "author": "mitch", 4 | "license": "GPL-3.0-only", 5 | "tags": [ 6 | "anime", 7 | "cartoon" 8 | ], 9 | "description": "Purpose: Linework Cartoons", 10 | "date": "2020-11-27", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 4, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 67025055, 24 | "sha256": "ceb79b179c05bab71a8de3900f173de3a10cf17d0422e0e62e4e5b395db3ccaa", 25 | "urls": [ 26 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/4x-AbeScale.pth" 27 | ] 28 | } 29 | ], 30 | "trainingIterations": 110000, 31 | "dataset": "LR: Clone High DVD, HR: Re-illustrated Vectors from Frames", 32 | "pretrainedModelG": "4x-ESRGAN", 33 | "images": [] 34 | } -------------------------------------------------------------------------------- /data/models/4x-American-Dad-2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "American Dad 2", 3 | "author": "pheonix", 4 | "license": null, 5 | "tags": [ 6 | "anime", 7 | "cartoon" 8 | ], 9 | "description": "American Dad", 10 | "date": "2019-12-25", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 4, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66960011, 24 | "sha256": "072eae97c38a92d8f55da5b13f16566654e7f963289e54e3c9b6203165dd6506", 25 | "urls": [ 26 | "https://drive.google.com/file/d/1i68bWo7xh3JPFIO-zLv9UMD72E-5xNr_/view" 27 | ] 28 | } 29 | ], 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/4x-ArtStation1337-Bloom.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ArtStation1337 Bloom", 3 | "author": "dinjerr", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\nPurpose: Digital Art/People\nPretrained: Mainly for digital art, but can be used to upscale pixel art.", 9 | "date": "2019-08-21", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66958607, 23 | "sha256": "7acdb20a27690674193fd64ffa5b2bb7920af02f7fdb7866cc9c56ee09a4cb7a", 24 | "urls": [ 25 | "https://1drv.ms/u/s!Aip-EMByJHY21WF47rcqn7fhr7fq?e=I8mnX6" 26 | ] 27 | } 28 | ], 29 | "images": [] 30 | } -------------------------------------------------------------------------------- /data/models/4x-ArtStation1337-Dedither-v2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ArtStation1337 Dedither v2", 3 | "author": "dinjerr", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "dedither", 7 | "pixel-art", 8 | "restoration" 9 | ], 10 | "description": "Category: Art/Pixel Art\nPurpose: Digital Art/People\nPretrained: Mainly for digital art, but can be used to upscale pixel art.", 11 | "date": "2019-08-21", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 4, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66958607, 25 | "sha256": "16b145067dc8306774b22263ff1d216ced7862c856f63fdca1ee52c806daf381", 26 | "urls": [ 27 | "https://1drv.ms/u/s!Aip-EMByJHY21WF47rcqn7fhr7fq?e=I8mnX6" 28 | ] 29 | } 30 | ], 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/4x-ArtStation1337-Dedither.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ArtStation1337 Dedither", 3 | "author": "dinjerr", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "dedither", 7 | "pixel-art", 8 | "restoration" 9 | ], 10 | "description": "Category: Art/Pixel Art\nPurpose: Digital Art/People\nPretrained: Mainly for digital art, but can be used to upscale pixel art.", 11 | "date": "2019-08-21", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 4, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66958607, 25 | "sha256": "900fd82ab4e12303606b0d5b0eefd1203fd10044c71879a9e7403b523b33d7ba", 26 | "urls": [ 27 | "https://1drv.ms/u/s!Aip-EMByJHY21WF47rcqn7fhr7fq?e=I8mnX6" 28 | ] 29 | } 30 | ], 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/4x-ArtStation1337-Diffuse.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ArtStation1337 Diffuse", 3 | "author": "dinjerr", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\nPurpose: Digital Art/People\nPretrained: Mainly for digital art, but can be used to upscale pixel art.", 9 | "date": "2019-08-21", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66958607, 23 | "sha256": "2b29765455dbda2b8479560e1638864e38ad20d3c7ff8b7b36bb7173bd5b8ad1", 24 | "urls": [ 25 | "https://1drv.ms/u/s!Aip-EMByJHY21WF47rcqn7fhr7fq?e=I8mnX6" 26 | ] 27 | } 28 | ], 29 | "images": [] 30 | } -------------------------------------------------------------------------------- /data/models/4x-ArtStation1337-v2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ArtStation1337 v2", 3 | "author": "dinjerr", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\nPurpose: Digital Art/People\nPretrained: Mainly for digital art, but can be used to upscale pixel art.", 9 | "date": "2019-08-21", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66958607, 23 | "sha256": "93b9cbf222891c98a7237fbc4299ddb0cfe5144dd850bcc0564118ce70be554b", 24 | "urls": [ 25 | "https://1drv.ms/u/s!Aip-EMByJHY21WF47rcqn7fhr7fq?e=I8mnX6" 26 | ] 27 | } 28 | ], 29 | "images": [] 30 | } -------------------------------------------------------------------------------- /data/models/4x-ArtStation1337.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ArtStation1337", 3 | "author": "dinjerr", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\nPurpose: Digital Art/People\nPretrained: Mainly for digital art, but can be used to upscale pixel art.", 9 | "date": "2019-08-21", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66958607, 23 | "sha256": "cedeb9414481475b02063cbdd4cdddeb95511f8bd03cafc27ce3a8f4a86314dd", 24 | "urls": [ 25 | "https://1drv.ms/u/s!Aip-EMByJHY21WF47rcqn7fhr7fq?e=I8mnX6" 26 | ] 27 | } 28 | ], 29 | "images": [] 30 | } -------------------------------------------------------------------------------- /data/models/4x-BS-SbeveHarvey.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BSSbeveHarvey", 3 | "author": "blackscout", 4 | "license": "GPL-3.0-only", 5 | "tags": [ 6 | "faces" 7 | ], 8 | "description": "Upscale Steve Harvey, but maybe other things, somehow??", 9 | "date": "2020-07-24", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66958607, 23 | "sha256": "8a7a05f8bbbbc54b2a2f092923f120c47fff8514f4f278f821c20b74e0f9928b", 24 | "urls": [ 25 | "https://drive.google.com/file/d/14daAyYuoX-nZ_Lo1U6oekbFqrZTQlQkG/view?usp=drivesdk" 26 | ] 27 | } 28 | ], 29 | "trainingIterations": 62000, 30 | "trainingEpochs": 8857, 31 | "trainingBatchSize": 2, 32 | "trainingHRSize": 64, 33 | "dataset": "Steve Harvey", 34 | "pretrainedModelG": "4x-ESRGAN", 35 | "images": [] 36 | } -------------------------------------------------------------------------------- /data/models/4x-BS-ScreenBooster-SPSR.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BS_ScreenBooster_SPSR", 3 | "author": "blackscout", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "cgi", 7 | "game-screenshots", 8 | "restoration" 9 | ], 10 | "description": "This model is designed to upscale game screenshots (3D Games) by 4 times. The SPSR version is an improvement over the ESRGAN based V2.", 11 | "date": "2020-07-18", 12 | "architecture": "spsr", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 4, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 99689039, 25 | "sha256": "a55527c00c465e3032ee53f3fc802b77c1aea6db37b5005462863e2f025a3776", 26 | "urls": [ 27 | "https://drive.google.com/file/d/1JI8VZSSHpH9u7HzE8MvuNG351Dgn4jwU/view?usp=sharing" 28 | ] 29 | } 30 | ], 31 | "trainingIterations": 88000, 32 | "trainingHRSize": 128, 33 | "dataset": "My own screenshots", 34 | "pretrainedModelG": "4x-ScreenBooster-V2", 35 | "images": [] 36 | } -------------------------------------------------------------------------------- /data/models/4x-BigFArt-Bang1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BigFArt Bang1", 3 | "author": "dinjerr", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\n\nLarger-scaled pixels to digital painting", 9 | "date": "2020-05-31", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66906130, 23 | "sha256": "cd417cb5523d3d78deb4dcceb38c2a945ecaf23f4ed6fb2c848865b6f9a9dfbd", 24 | "urls": [ 25 | "https://1drv.ms/u/s!Aip-EMByJHY23if0ac150Sj2qnbp?e=qLp7SP" 26 | ] 27 | } 28 | ], 29 | "pretrainedModelG": "4x-Face-Focus", 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/4x-BigFArt-Base.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BigFArt Base", 3 | "author": "dinjerr", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\n\nLarger-scaled pixels to digital painting", 9 | "date": "2020-05-31", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66906130, 23 | "sha256": "fcfadd40d62bdb160d6b8ade8cf9c1a90a3b1598e77ec697446262e56d31ed94", 24 | "urls": [ 25 | "https://1drv.ms/u/s!Aip-EMByJHY23if0ac150Sj2qnbp?e=qLp7SP" 26 | ] 27 | } 28 | ], 29 | "pretrainedModelG": "4x-Face-Focus", 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/4x-BigFArt-Blend.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BigFArt Blend", 3 | "author": "dinjerr", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\n\nLarger-scaled pixels to digital painting", 9 | "date": "2020-05-31", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66906130, 23 | "sha256": "a7a22bd42eb34ded9d95650422d730409cd8a850b61d040f67861da59fecc906", 24 | "urls": [ 25 | "https://1drv.ms/u/s!Aip-EMByJHY23if0ac150Sj2qnbp?e=qLp7SP" 26 | ] 27 | } 28 | ], 29 | "pretrainedModelG": "4x-Face-Focus", 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/4x-BigFArt-Detail.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BigFArt Detail", 3 | "author": "dinjerr", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\n\nLarger-scaled pixels to digital painting", 9 | "date": "2020-05-31", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66958607, 23 | "sha256": "0f8007e6a5ee9b08567c1219def8c13fc2b902f1cfc5f4d6fa17103b69c06002", 24 | "urls": [ 25 | "https://1drv.ms/u/s!Aip-EMByJHY23if0ac150Sj2qnbp?e=qLp7SP" 26 | ] 27 | } 28 | ], 29 | "pretrainedModelG": "4x-Face-Focus", 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/4x-BigFArt-Fine.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BigFArt Fine", 3 | "author": "dinjerr", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\n\nLarger-scaled pixels to digital painting", 9 | "date": "2020-05-31", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66906130, 23 | "sha256": "50c5b3c6e711077ed2d0545f4ddffe49e06ecf424d7551873e1a0134907f3f31", 24 | "urls": [ 25 | "https://1drv.ms/u/s!Aip-EMByJHY23if0ac150Sj2qnbp?e=qLp7SP" 26 | ] 27 | } 28 | ], 29 | "pretrainedModelG": "4x-Face-Focus", 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/4x-BigFArt.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BigFArt", 3 | "author": "dinjerr", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\n\nLarger-scaled pixels to digital painting", 9 | "date": "2020-05-31", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66958607, 23 | "sha256": "f567678787605bae7552d62e2e4576dd9296ac369ae27ee079564945cc06791a", 24 | "urls": [ 25 | "https://1drv.ms/u/s!Aip-EMByJHY23if0ac150Sj2qnbp?e=qLp7SP" 26 | ] 27 | } 28 | ], 29 | "pretrainedModelG": "4x-Face-Focus", 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/4x-BigFace-V3-Blend.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BigFace V3 Blend", 3 | "author": "dinjerr", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "faces" 7 | ], 8 | "description": "Purpose: Art/People", 9 | "date": "2020-07-22", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66906130, 23 | "sha256": "f8e9adbf1f97c116435d2653026a4da5ba63e227692d62d513f76efafb8b5b7f", 24 | "urls": [ 25 | "https://1drv.ms/u/s!Aip-EMByJHY27CHg3-1Uue5KgbtK?e=6k0COU" 26 | ] 27 | } 28 | ], 29 | "pretrainedModelG": "4x-BigFace", 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/4x-BigFace-V3-Clear.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BigFace V3 Clear", 3 | "author": "dinjerr", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "faces" 7 | ], 8 | "description": "Purpose: Art/People", 9 | "date": "2020-07-22", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66906130, 23 | "sha256": "f81ff82edebb602d6785356eb961a11ce8a873e038d016f6e4ad087054ca0ea6", 24 | "urls": [ 25 | "https://1drv.ms/u/s!Aip-EMByJHY27CHg3-1Uue5KgbtK?e=6k0COU" 26 | ] 27 | } 28 | ], 29 | "pretrainedModelG": "4x-BigFace", 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/4x-Box.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Box", 3 | "author": "buildist", 4 | "license": "GPL-3.0-only", 5 | "tags": [ 6 | "photo" 7 | ], 8 | "description": "RRDB_ESRGAN_x4 replacement for stuff that's supposed to look realistic.", 9 | "date": "2019-06-20", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66958607, 23 | "sha256": "add6c8944c16d02fad148fc40485385dbfe98f32b0c6fb2cddb362d463e0b3d5", 24 | "urls": [ 25 | "https://drive.google.com/file/d/1KToK9mOz05wgxeMaWj9XFLOE4cnvo40D/view" 26 | ] 27 | } 28 | ], 29 | "images": [] 30 | } -------------------------------------------------------------------------------- /data/models/4x-Cat-Patch.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Cat_Patch", 3 | "author": "twittman", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "photo", 7 | "restoration" 8 | ], 9 | "description": "Purpose: Cats\n\nPretrained model: Previous attempt", 10 | "date": "2020-11-28", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 4, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66961958, 24 | "sha256": "9260fac8bee3794ba2b9081d317ddbdee82e2ab99338741bf00cd33020dd757a", 25 | "urls": [ 26 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/4x-Cat-Patch.pth", 27 | "https://f002.backblazeb2.com/file/ESRGAN/_RELEASE/4x_cat_patch_325000_G.pth", 28 | "https://drive.proton.me/urls/W4T4P2JXTC#MEgR0R1zXbF0" 29 | ] 30 | } 31 | ], 32 | "trainingIterations": 325000, 33 | "images": [] 34 | } -------------------------------------------------------------------------------- /data/models/4x-Comic-Book.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Comic Book", 3 | "author": "lyonhrt", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "anime", 7 | "cartoon" 8 | ], 9 | "description": "Comic / Drawings. Trained on Custom (Spider-Man) dataset", 10 | "date": "2019-03-04", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 4, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66958607, 24 | "sha256": "2cfb978b41baabcb8919978d9d5321caa6928b0015365e64652ba2ba11a6f6f7", 25 | "urls": [ 26 | "https://drive.google.com/open?id=1qjpxp8z4FGLZxieUDEVKd6FDum-8vpvJ" 27 | ] 28 | } 29 | ], 30 | "trainingIterations": 115000, 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/4x-DAT2-mssim-Pretrain.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "4x-DAT2_mssim_Pretrain", 3 | "author": "kim2091", 4 | "license": "CC0-1.0", 5 | "tags": [ 6 | "pretrained" 7 | ], 8 | "description": "Simple pretrain for DAT2, trained on CC0 content. \"Ethical\" model", 9 | "date": "2024-06-05", 10 | "architecture": "dat", 11 | "size": null, 12 | "scale": 4, 13 | "inputChannels": 3, 14 | "outputChannels": 3, 15 | "resources": [ 16 | { 17 | "platform": "pytorch", 18 | "type": "pth", 19 | "size": 280595890, 20 | "sha256": "5496991a002dba4ef2685bd94e5b3c17372504432eb9318ecac3d1fceb433dda", 21 | "urls": [ 22 | "https://github.com/Kim2091/Kim2091-Models/releases/download/4x-DAT2_mssim_Pretrain/4x-DAT2_mssim_Pretrain.pth" 23 | ] 24 | } 25 | ], 26 | "trainingIterations": 50000, 27 | "trainingBatchSize": 6, 28 | "trainingHRSize": 128, 29 | "dataset": "UltraSharpV2 Ethical", 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/4x-DRCT-L.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "DRCT-L_X4", 3 | "author": "ming053l", 4 | "license": "MIT", 5 | "tags": [ 6 | "pretrained", 7 | "research" 8 | ], 9 | "description": "Official 4x drct-l Pretrain model, as released on their [DRCT Github Page](https://github.com/ming053l/DRCT?tab=readme-ov-file)", 10 | "date": "2024-06-02", 11 | "architecture": "drct", 12 | "size": null, 13 | "scale": 4, 14 | "inputChannels": 3, 15 | "outputChannels": 3, 16 | "resources": [ 17 | { 18 | "platform": "pytorch", 19 | "type": "pth", 20 | "size": 485570697, 21 | "sha256": "a99044c0275699d1a296ae21b8f322fa8c65d7b9be2213ee2a3dcc280ab8d64b", 22 | "urls": [ 23 | "https://drive.google.com/file/d/1bVxvA6QFbne2se0CQJ-jyHFy94UOi3h5/view?usp=drive_link" 24 | ] 25 | } 26 | ], 27 | "images": [] 28 | } -------------------------------------------------------------------------------- /data/models/4x-DeIndeo.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "DeIndeo", 3 | "author": "wild-west-quest", 4 | "license": "WTFPL", 5 | "tags": [ 6 | "compression-removal", 7 | "restoration", 8 | "video-frame" 9 | ], 10 | "description": "Purpose: Indeo Compression Artifacts", 11 | "date": "2020-08-15", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 4, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66958607, 25 | "sha256": "8fe6ebe1ea989a90f487deacdbf6800a307a77551fac1919951228c855f27538", 26 | "urls": [ 27 | "https://mega.nz/file/zAIVEaaY#AWHaCZVeIVQ8FiqsDwxQjzhiydSntFVEyGl1cCLxRzg" 28 | ] 29 | } 30 | ], 31 | "trainingIterations": 130000, 32 | "trainingBatchSize": 8, 33 | "trainingHRSize": 128, 34 | "trainingOTF": false, 35 | "dataset": "own custom dataset", 36 | "pretrainedModelG": "4x-ESRGAN", 37 | "images": [] 38 | } -------------------------------------------------------------------------------- /data/models/4x-DigiPaint.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "DigiPaint", 3 | "author": "rastrum", 4 | "license": "CC0-1.0", 5 | "tags": [ 6 | "cartoon", 7 | "restoration" 8 | ], 9 | "description": "Category: Drawings\nPurpose: Art\n\nDigital Art Upscaler\n\nPretrained model: 4xfalcoon300(manga).pth", 10 | "date": "2019-09-07", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 4, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66958607, 24 | "sha256": "2cfa121bd09863e1c359069df0d9ebfd56ce9a77f473b9f1c45280c8c825e7e9", 25 | "urls": [ 26 | "https://drive.google.com/open?id=103MX2bvd3GW0MYpC53ABU5VYY6v1t99Y" 27 | ] 28 | } 29 | ], 30 | "trainingIterations": 35000, 31 | "trainingEpochs": 6, 32 | "trainingBatchSize": 6, 33 | "trainingHRSize": 128, 34 | "dataset": "Random digital art scraped from the internet. Mostly material studies but other stuff as well.", 35 | "datasetSize": 48493, 36 | "images": [] 37 | } -------------------------------------------------------------------------------- /data/models/4x-FArtFace.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "FArtFace", 3 | "author": "dinjerr", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "faces" 7 | ], 8 | "description": "", 9 | "date": "2019-11-28", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66906130, 23 | "sha256": "39b0d046f3224cdfd8e3e19a67784ee31aa41267fc1aa46062a2e535c66400b8", 24 | "urls": [ 25 | "https://1drv.ms/u/s!Aip-EMByJHY211Vcr3fF39ZOaPk-?e=BQajTd" 26 | ] 27 | } 28 | ], 29 | "images": [] 30 | } -------------------------------------------------------------------------------- /data/models/4x-Face-Focus.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Face Focus", 3 | "author": "lyonhrt", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "faces" 7 | ], 8 | "description": "Face De-blur - slightly out of focus / blurred images of faces. It is aimed at faces / hair", 9 | "date": "2019-05-19", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66958607, 23 | "sha256": "a5b0546243a01f98ae63faaa691351be55416bb723271fb4f5147548b8c0b613", 24 | "urls": [ 25 | "https://drive.google.com/file/d/19ICMKNuS4PbhmtA7Be9lUE6v8NHDDEzP/view" 26 | ] 27 | } 28 | ], 29 | "trainingIterations": 275000, 30 | "pretrainedModelG": "4x-PSNR", 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/4x-Faces-04-N.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Faces_04_N", 3 | "author": "twittman", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "faces" 7 | ], 8 | "description": "Upscale faces both pixelized and real\n\nPretrained model: 4x_Faces_N_250000.pth", 9 | "date": "2019-07-23", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66958607, 23 | "sha256": "d2d7f702cdd22db2575f70694c2baabb7f6893bfdda84b1159fe158d065456bb", 24 | "urls": [ 25 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/4x-Faces-04-N.pth" 26 | ] 27 | } 28 | ], 29 | "trainingIterations": 180000, 30 | "trainingEpochs": 237, 31 | "trainingBatchSize": 10, 32 | "trainingHRSize": 128, 33 | "datasetSize": 7510, 34 | "images": [] 35 | } -------------------------------------------------------------------------------- /data/models/4x-Falcon-Fanart.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Falcon Fanart", 3 | "author": "lyonhrt", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "anime", 7 | "cartoon" 8 | ], 9 | "description": "", 10 | "date": "2019-01-28", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 4, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66958607, 24 | "sha256": "62fbb949b14207475b5c47bdcc38e944225eab4b58847592d1a21d3892f55bad", 25 | "urls": [ 26 | "https://drive.google.com/file/d/1bqyG9llxkJ6i6MJTaNUiSgSXtrlPi0d7/view" 27 | ] 28 | } 29 | ], 30 | "pretrainedModelG": "4x-PSNR", 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/4x-Fallout-Weapons.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Fallout Weapons (Fallout 4 Weapons?)", 3 | "author": "bob", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "game-textures" 7 | ], 8 | "description": "Video game textures, mostly metal rusty, clean or painted", 9 | "date": "2019-08-05", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66958607, 23 | "sha256": "fbd649388c9bf13f625f2ac27fe3c94b7e6d22464e26c968fdb2cffa7d9202d3", 24 | "urls": [ 25 | "https://1drv.ms/u/s!AiWox1lAWLoTg1bUeJouJNOFZ_Jj" 26 | ] 27 | } 28 | ], 29 | "trainingIterations": 120000, 30 | "trainingEpochs": 2973, 31 | "trainingBatchSize": 13, 32 | "trainingHRSize": 128, 33 | "datasetSize": 531, 34 | "pretrainedModelG": "4x-Manga109Attempt", 35 | "images": [] 36 | } -------------------------------------------------------------------------------- /data/models/4x-Fatal-Anime.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Fatal_Anime", 3 | "author": "twittman", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "anime", 7 | "cartoon" 8 | ], 9 | "description": "Trained on Anime and Manga images", 10 | "date": "2020-06-17", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 4, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66958607, 24 | "sha256": "54cfb3217bb68bfc31678bd79c2ebd6559f5cdbd9f3420332bf84c24b83b5b67", 25 | "urls": [ 26 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/4x-Fatal-Anime.pth", 27 | "https://f002.backblazeb2.com/file/ESRGAN/_RELEASE/4x_fatal_Anime_500000_G.pth", 28 | "https://drive.proton.me/urls/5STD81QWGC#xD7CBZVN16ug" 29 | ] 30 | } 31 | ], 32 | "trainingIterations": 500000, 33 | "images": [] 34 | } -------------------------------------------------------------------------------- /data/models/4x-Fatal-Pixels.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Fatal Pixels", 3 | "author": "twittman", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\nPurpose: Pixel Art/Sprites", 9 | "date": "2020-06-02", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66958607, 23 | "sha256": "d30ac78343e0a7ffaa805b8ab7840fb1d6b9e6083fe1728c651e2064210e5994", 24 | "urls": [ 25 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/4x-Fatal-Pixels.pth", 26 | "https://drive.proton.me/urls/ETFPG5X9J4#MjZ8znfE2v2d", 27 | "https://f002.backblazeb2.com/file/ESRGAN/_RELEASE/4x_FatalPixels_340000_G.pth" 28 | ] 29 | } 30 | ], 31 | "trainingIterations": 340000, 32 | "dataset": "Anime, Manga", 33 | "pretrainedModelG": "4x-Fatality-MK2", 34 | "images": [] 35 | } -------------------------------------------------------------------------------- /data/models/4x-FatalimiX.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "FatalimiX", 3 | "author": "twittman", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "anime", 7 | "cartoon" 8 | ], 9 | "description": "Comic and Cartoon style images", 10 | "date": "2019-10-29", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 4, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66958607, 24 | "sha256": "3d3ebdc1abcd24b02556a64d9c65adc3c31ec2f55d731f70370ddc49067ecbb8", 25 | "urls": [ 26 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/4x-FatalimiX.pth" 27 | ] 28 | } 29 | ], 30 | "trainingIterations": 260000, 31 | "trainingEpochs": 31, 32 | "trainingBatchSize": 10, 33 | "trainingHRSize": 128, 34 | "dataset": "Digital Comics", 35 | "pretrainedModelG": "4x-Fatality-MK2", 36 | "images": [] 37 | } -------------------------------------------------------------------------------- /data/models/4x-Fatality-Comix-MK3.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Fatality Comix MK3", 3 | "author": "twittman", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "cartoon", 7 | "dehalftone", 8 | "manga", 9 | "restoration" 10 | ], 11 | "description": "Model for halftone images.", 12 | "date": "2023-10-25", 13 | "architecture": "esrgan", 14 | "size": [ 15 | "64nf", 16 | "23nb" 17 | ], 18 | "scale": 4, 19 | "inputChannels": 3, 20 | "outputChannels": 3, 21 | "resources": [ 22 | { 23 | "platform": "pytorch", 24 | "type": "pth", 25 | "size": 66958607, 26 | "sha256": "149213cb9db40f8b4ff06605ff67923e98a6c1c87bc83bd9f95283a3a6209ad3", 27 | "urls": [ 28 | "https://drive.proton.me/urls/D0G8T893EC#g6i8IFYwzR8e", 29 | "https://f002.backblazeb2.com/file/ESRGAN/_RELEASE/4x_Fatality_Comix_MKIII_200000_G.pth" 30 | ] 31 | } 32 | ], 33 | "trainingIterations": 200000, 34 | "images": [] 35 | } -------------------------------------------------------------------------------- /data/models/4x-Fatality-Comix.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Fatality Comix", 3 | "author": "twittman", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "cartoon", 7 | "dehalftone", 8 | "manga", 9 | "restoration" 10 | ], 11 | "description": "Model for halftone images.", 12 | "date": "2023-10-25", 13 | "architecture": "esrgan", 14 | "size": [ 15 | "64nf", 16 | "23nb" 17 | ], 18 | "scale": 4, 19 | "inputChannels": 3, 20 | "outputChannels": 3, 21 | "resources": [ 22 | { 23 | "platform": "pytorch", 24 | "type": "pth", 25 | "size": 66958607, 26 | "sha256": "3d3ebdc1abcd24b02556a64d9c65adc3c31ec2f55d731f70370ddc49067ecbb8", 27 | "urls": [ 28 | "https://drive.proton.me/urls/YPSHVH1N1G#pOejdrktCIaD", 29 | "https://f002.backblazeb2.com/file/ESRGAN/_RELEASE/4x_Fatality_Comix_260000_G.pth" 30 | ] 31 | } 32 | ], 33 | "trainingIterations": 260000, 34 | "images": [] 35 | } -------------------------------------------------------------------------------- /data/models/4x-Fatality-MK2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Fatality MK2", 3 | "author": "twittman", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\nPurpose: Pixel Art/Sprites\nPretrained: A previously attempted MK2", 9 | "date": "2020-11-07", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66958607, 23 | "sha256": "4240715ce77c04159a0712ffe065acf098b458109d63824686c8fafeed857a30", 24 | "urls": [ 25 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/4x-Fatality-MK2.pth", 26 | "https://drive.proton.me/urls/V3W1555NXR#EDKolUI78qzD", 27 | "https://f002.backblazeb2.com/file/ESRGAN/_RELEASE/4x_Fatality_MKII_90000_G.pth" 28 | ] 29 | } 30 | ], 31 | "trainingIterations": 90000, 32 | "dataset": "Anime, Manga and some real life", 33 | "images": [] 34 | } -------------------------------------------------------------------------------- /data/models/4x-FireAlpha.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "FireAlpha", 3 | "author": "blueamulet", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "game-textures", 7 | "restoration" 8 | ], 9 | "description": "Category: Alphas\nPurpose: Alpha (4 channel)", 10 | "date": "2019-11-12", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 4, 17 | "inputChannels": 4, 18 | "outputChannels": 4, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66959003, 24 | "sha256": "53f77c587b782c4bfbdbcccc7d6cf9b26b11ba92b8cb58e9d017bed00faeb047", 25 | "urls": [ 26 | "https://drive.google.com/open?id=192Mw2_yUwCgqt3tAJ2sRxZ8hYHe4CKrZ" 27 | ] 28 | } 29 | ], 30 | "trainingIterations": 1285000, 31 | "trainingHRSize": 128, 32 | "dataset": "Fire Emblem artwork with transparency", 33 | "images": [] 34 | } -------------------------------------------------------------------------------- /data/models/4x-Forest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Forest", 3 | "author": "lyonhrt", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "game-textures" 7 | ], 8 | "description": "Wood / Leaves game textures", 9 | "date": "2019-04-14", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66958607, 23 | "sha256": "db42f41080908a394e9523f0ccce9013f06db82c0321f6e00c7b60213333f092", 24 | "urls": [ 25 | "https://drive.google.com/file/d/12fR-pWw6YL2ZbS6EDvrAeOVoQHWkWl5L/view" 26 | ] 27 | } 28 | ], 29 | "trainingIterations": 160000, 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/4x-Ground.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Ground", 3 | "author": "tldr-coder", 4 | "license": "WTFPL", 5 | "tags": [ 6 | "game-textures", 7 | "photo", 8 | "restoration" 9 | ], 10 | "description": "Category: Foliage/Ground\nPurpose: Upscales ground textures", 11 | "date": "2021-06-23", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 4, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66958607, 25 | "sha256": "98622655ed35c7d355e4119e35d1d3362a03ffd4fc00377055fcd725db0045dc", 26 | "urls": [ 27 | "https://drive.google.com/file/d/1dGmhHUPmb3lO9buX_Bt2nq97Nk5MCTb4/view" 28 | ] 29 | } 30 | ], 31 | "dataset": "Custom (Ground textures Google)", 32 | "images": [] 33 | } -------------------------------------------------------------------------------- /data/models/4x-HAT-L-SRx4-ImageNet-pretrain.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "HAT-L_SRx4_ImageNet-pretrain", 3 | "author": "xpixelgroup", 4 | "license": "Apache-2.0", 5 | "tags": [ 6 | "general-upscaler", 7 | "research" 8 | ], 9 | "description": "Official Paper pretrain model.\n\nSee https://github.com/XPixelGroup/HAT for more details.", 10 | "date": "2023-03-02", 11 | "architecture": "hat", 12 | "size": [ 13 | "HAT-L" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 165774123, 23 | "sha256": "5992bd38522f2b8faf11ea4bd8ee08de92465bb66892166576999afc36d60043", 24 | "urls": [ 25 | "https://drive.google.com/file/d/1uefIctjoNE3Tg6GTzelesTTshVogQdUf/view?usp=drive_link" 26 | ] 27 | } 28 | ], 29 | "images": [ 30 | { 31 | "type": "standalone", 32 | "url": "https://raw.githubusercontent.com/chxy95/HAT/master/figures/Performance_comparison.png" 33 | } 34 | ] 35 | } -------------------------------------------------------------------------------- /data/models/4x-HAT-S-SRx4.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "HAT-S_SRx4", 3 | "author": "xpixelgroup", 4 | "license": "Apache-2.0", 5 | "tags": [ 6 | "general-upscaler", 7 | "research" 8 | ], 9 | "description": "Official Paper model.\n\nSee https://github.com/XPixelGroup/HAT for more details.", 10 | "date": "2023-04-05", 11 | "architecture": "hat", 12 | "size": [ 13 | "HAT-S" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 81089561, 23 | "sha256": "a92f81bd2c0c1aaa371a6e4d6cac69e749fde2e36196885ee47a4a3667542c9a", 24 | "urls": [ 25 | "https://drive.google.com/file/d/1YvU9PF1XqlP8TVzH7P0bg-YlfP1TKDPC/view?usp=drive_link" 26 | ] 27 | } 28 | ], 29 | "images": [ 30 | { 31 | "type": "standalone", 32 | "url": "https://raw.githubusercontent.com/chxy95/HAT/master/figures/Performance_comparison.png" 33 | } 34 | ] 35 | } -------------------------------------------------------------------------------- /data/models/4x-KCJPUNK-1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "KCJPUNK", 3 | "author": "kcjpunk", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "anime", 7 | "cartoon" 8 | ], 9 | "description": "Purpose: Digital Animation\n\nUp-scaling Digital Animation", 10 | "date": "2021-03-23", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 4, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66961958, 24 | "sha256": "38785d83c1bb1cb8b355f445dceeb99166c86d7128c053995ae964e11cede7e6", 25 | "urls": [ 26 | "https://mega.nz/folder/QsUWWJjb#SIuqcPEzrkpLW0WNSth66g" 27 | ] 28 | } 29 | ], 30 | "trainingIterations": 233089, 31 | "trainingEpochs": 274, 32 | "trainingBatchSize": 4, 33 | "trainingHRSize": 128, 34 | "trainingOTF": false, 35 | "dataset": "1080P BD anime frames", 36 | "datasetSize": 20000, 37 | "pretrainedModelG": "4x-Fatal-Anime", 38 | "images": [] 39 | } -------------------------------------------------------------------------------- /data/models/4x-LADDIER1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "LADDIER1", 3 | "author": "alexander-syring", 4 | "license": null, 5 | "tags": [ 6 | "deblur", 7 | "denoise", 8 | "restoration" 9 | ], 10 | "description": "Remove noise, grain, box blur, lens blur and gaussian blur and increase overall image quality.", 11 | "date": "2019-11-13", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 4, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66958607, 25 | "sha256": "4ef7a08c0d79eedb11550f215f00cdb75b5dd8d7469f110ddd68ae6fa155a661", 26 | "urls": [ 27 | "https://drive.google.com/file/d/1GoUY7t5kE0Ubi-NDvlMB8lUs-_u_f6tS/view?usp=sharing" 28 | ] 29 | } 30 | ], 31 | "trainingIterations": 282500, 32 | "trainingBatchSize": 8, 33 | "trainingHRSize": 128, 34 | "dataset": "Mostly images of Nirvana some of other images", 35 | "pretrainedModelG": "4x-ESRGAN", 36 | "images": [] 37 | } -------------------------------------------------------------------------------- /data/models/4x-Lady0101.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Lady0101", 3 | "author": "dinjerr", 4 | "license": null, 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\nPurpose: Pixel Art/Paintings\n\nUpscale pixel art/paintings to digital painting style", 9 | "date": "2019-07-25", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66958607, 23 | "sha256": "408f539ec467427e60eb47793f59d1c589dd3cf1ae222f4001f376c0cb908638", 24 | "urls": [ 25 | "https://1drv.ms/u/s!Aip-EMByJHY20xsc9EvnxVZ50Ja7?e=Loa5Gz" 26 | ] 27 | } 28 | ], 29 | "trainingIterations": 208000, 30 | "pretrainedModelG": "4x-WaifuGAN-v3", 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/4x-Manga109Attempt.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Manga109Attempt", 3 | "author": "kingdomakrillic", 4 | "license": "CC-BY-4.0", 5 | "tags": [ 6 | "anime", 7 | "manga" 8 | ], 9 | "description": "Pretrained model: 4xPSNR", 10 | "date": "2018-12-21", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 4, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66946549, 24 | "sha256": "fa4ef999435d9dda0e68c855bbddf1fa54dcc8fe207b05c5867193446f59ac4c", 25 | "urls": [ 26 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/4x-Manga109Attempt.pth", 27 | "http://www.mediafire.com/file/w3jujtm752hvdj1/Manga109Attempt.pth.zip/file" 28 | ] 29 | } 30 | ], 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/4x-Map.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Map", 3 | "author": "lyonhrt", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "game-textures" 7 | ], 8 | "description": "Map / Old Paper with text", 9 | "date": "2019-04-17", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66958607, 23 | "sha256": "345fbd0a9b4730234c1244d71c60c70e9e5ad0196bfbf364e84da2de029b3c3e", 24 | "urls": [ 25 | "https://drive.google.com/file/d/1xPzqzTG5L6y5I0U3W0oQjexwGF5zfG32/view" 26 | ] 27 | } 28 | ], 29 | "trainingIterations": 120000, 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/4x-MeguUp.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "MeguUp", 3 | "author": "katoumegumi", 4 | "license": "GPL-3.0-only", 5 | "tags": [ 6 | "anime" 7 | ], 8 | "description": "Upscaling of lossless (uncompressed) anime art.\n\nPretrained model: Interpolated custom, hence the license.", 9 | "date": "2020-09-16", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66961958, 23 | "sha256": "4dad22166896c14cf04f222cf1a69c46f7a6c6e6358ade157f7107a243225fde", 24 | "urls": [ 25 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/4x-MeguUp.pth" 26 | ] 27 | } 28 | ], 29 | "trainingIterations": 105000, 30 | "trainingEpochs": 199, 31 | "trainingBatchSize": 8, 32 | "trainingHRSize": 128, 33 | "dataset": "SFW and NSFW anime artworks", 34 | "datasetSize": 4193, 35 | "images": [] 36 | } -------------------------------------------------------------------------------- /data/models/4x-Misc.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Realistic Misc", 3 | "author": "alsa", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "general-upscaler", 7 | "photo" 8 | ], 9 | "description": "Pretrained: Manga109Attempt\n\nThe Misc model is trained on various pictures shot by myself (Alsa), including bricks, stone, dirt, grass, plants, wood, bark, metal and a few others.", 10 | "date": "2019-05-03", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 4, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66960011, 24 | "sha256": "3f379331b50e54efea46a3221ecb107b1ff369bba65f3f0a9468b29f815406bb", 25 | "urls": [ 26 | "https://e.pcloud.link/publink/show?code=XZ6msZu8BOExSFH4SxixhuxoyrmbRYGQQk" 27 | ] 28 | } 29 | ], 30 | "trainingIterations": 100000, 31 | "trainingBatchSize": 12, 32 | "trainingHRSize": 128, 33 | "dataset": "Various eroge dumps", 34 | "pretrainedModelG": "4x-muy4-035-1", 35 | "images": [] 36 | } -------------------------------------------------------------------------------- /data/models/4x-Morrowind-2-0.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Morrowind 2.0", 3 | "author": "mkultra", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "game-textures" 7 | ], 8 | "description": "Morrowind Mod Textures", 9 | "date": "2022-08-02", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66958607, 23 | "sha256": "cfa0b67d5df8a97fab173b95763db57ff03153546b245f7de839383b2bd20ed0", 24 | "urls": [ 25 | "https://mega.nz/folder/dVQxxITT#Bsloq9G_Xh5tsDMKDQuTTA" 26 | ] 27 | } 28 | ], 29 | "trainingIterations": 205000, 30 | "pretrainedModelG": "4x-ESRGAN", 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/4x-Morrowind-Mixed.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Morrowind Mixed", 3 | "author": "mkultra", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "game-textures" 7 | ], 8 | "description": "Morrowind Mod Textures", 9 | "date": "2020-07-05", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66958607, 23 | "sha256": "e5259a0b5a273b3d0018a2d4e095d1fb695eff564df5f98bc10498af6c97e96a", 24 | "urls": [ 25 | "https://mega.nz/folder/tFhl0L5b#CK4WLHYxjX7KFXU1PLNDuQ" 26 | ] 27 | } 28 | ], 29 | "trainingIterations": 130000, 30 | "pretrainedModelG": "4x-ESRGAN", 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/4x-NMKD-Superscale.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "NMKD Superscale", 3 | "author": "nmkd", 4 | "license": "WTFPL", 5 | "tags": [ 6 | "denoise", 7 | "photo", 8 | "restoration" 9 | ], 10 | "description": "Purpose: Clean Real-World Images\n\nUpscaling of realistic images/photos with noise and compression artifacts", 11 | "date": "2020-07-22", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 4, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66958607, 25 | "sha256": "1d1b0078fe71446e0469d8d4df59e96baa80d83cda600d68237d655830821bcc", 26 | "urls": [ 27 | "https://icedrive.net/1/43GNBihZyi" 28 | ] 29 | } 30 | ], 31 | "pretrainedModelG": "4x-ESRGAN", 32 | "images": [] 33 | } -------------------------------------------------------------------------------- /data/models/4x-NumericFrames-2-5.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "NumericFrames 2.5", 3 | "author": "muf", 4 | "license": "WTFPL", 5 | "tags": [ 6 | "anime" 7 | ], 8 | "description": "Upscaling of Numeric Animation from SD to HD with high texture retention.\n\nBig leap from 2.0, especially as much as texture retention is concerned. But also deals much better with distant characters/shots.", 9 | "date": "2024-07-20", 10 | "architecture": "esrgan", 11 | "size": null, 12 | "scale": 4, 13 | "inputChannels": 3, 14 | "outputChannels": 3, 15 | "resources": [ 16 | { 17 | "urls": [ 18 | "http://mufunyo.net/esrgan/4x_NumericFrames_2.5.pth" 19 | ], 20 | "sha256": "f1bbc3831cb0880dbc98eff03f818eba9327a72cb21f51274bf803abf8119b67", 21 | "size": 67025055, 22 | "platform": "pytorch", 23 | "type": "pth" 24 | } 25 | ], 26 | "images": [], 27 | "dataset": "SD Numeric cartoon and anime frames and counterpart HD versions", 28 | "datasetSize": 40000, 29 | "trainingIterations": 920000, 30 | "trainingBatchSize": 38, 31 | "trainingHRSize": 128, 32 | "trainingOTF": false 33 | } -------------------------------------------------------------------------------- /data/models/4x-PSNR.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "4x PSNR Pretrained Model", 3 | "author": "blueamulet", 4 | "license": "Apache-2.0", 5 | "tags": [ 6 | "pretrained" 7 | ], 8 | "description": "Pretrained: RRDB_PSNR_x4.pth\n\nThe original RRDB_PSNR_x4.pth model converted to 1x, 2x, 8x and 16x scales, intended to be used as pretrained models for new models at those scales. These are compatible with victor's 4xESRGAN.pth conversions", 9 | "date": "2020-04-20", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66954395, 23 | "sha256": "985fba37421353716ef2fbd7fbbab061e76409994d168cf52527aa8ee53f81ec", 24 | "urls": [ 25 | "https://drive.google.com/open?id=1ldwajXL50uC7PCS63B4Wato6Dnk-svNL" 26 | ] 27 | } 28 | ], 29 | "images": [] 30 | } -------------------------------------------------------------------------------- /data/models/4x-RGT.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "RGT x4", 3 | "author": "zheng-chen", 4 | "license": "Apache-2.0", 5 | "tags": [ 6 | "pretrained", 7 | "research" 8 | ], 9 | "description": "", 10 | "date": "2024-02-04", 11 | "architecture": "rgt", 12 | "size": null, 13 | "scale": 4, 14 | "inputChannels": 3, 15 | "outputChannels": 3, 16 | "resources": [ 17 | { 18 | "platform": "pytorch", 19 | "type": "pth", 20 | "size": 180352241, 21 | "sha256": "8335d4d314cf778df0fba0b1a57d757dcbc80267afd08ab45647a9997a45133c", 22 | "urls": [ 23 | "https://drive.google.com/file/d/1uULArtV1EcPbS3ujVbZvJIRMogldRMHr/view?usp=sharing" 24 | ] 25 | } 26 | ], 27 | "images": [] 28 | } -------------------------------------------------------------------------------- /data/models/4x-RRDB-G-ResNet-D.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "RRDB-G_ResNet-D (Both G and D)", 3 | "author": "joey", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "photo", 7 | "pretrained", 8 | "restoration" 9 | ], 10 | "description": "Pretrained Discriminators\n\nClean bicubic downscales / Pretrained models (G/D)", 11 | "date": "2021-01-17", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 4, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66958607, 25 | "sha256": "8d55ed06dc0d3ab3f355035f8de49b86e2c2bb8cf3e046330af6fcf673fa87ce", 26 | "urls": [ 27 | "https://u.pcloud.link/publink/show?code=kZPxrYXZOBnSmRzYywHg9heV55yt0JvKC3gk" 28 | ] 29 | } 30 | ], 31 | "trainingIterations": 175000, 32 | "trainingEpochs": 1161, 33 | "trainingBatchSize": 8, 34 | "trainingHRSize": 128, 35 | "dataset": "DIV2K train + val", 36 | "datasetSize": 900, 37 | "pretrainedModelG": "4x-ESRGAN", 38 | "images": [] 39 | } -------------------------------------------------------------------------------- /data/models/4x-RealPLKSR-Pretrain-V4.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "4x-RealPLKSR_Pretrain_V4 ", 3 | "author": "kim2091", 4 | "license": "CC0-1.0", 5 | "tags": [ 6 | "pretrained" 7 | ], 8 | "description": "Simple pretrain for RealPLKSR, trained on CC0 or self-made content. Don't use V1-V3, they're not stable for training.\n\nDataset consisted of simple resizing:\n- Lanczos\n- Linear\n- Bicubic\n- Box", 9 | "date": "2024-05-25", 10 | "architecture": "realplksr", 11 | "size": null, 12 | "scale": 4, 13 | "inputChannels": 3, 14 | "outputChannels": 3, 15 | "resources": [ 16 | { 17 | "platform": "pytorch", 18 | "type": "pth", 19 | "size": 29678402, 20 | "sha256": "7d67b22f0c5b60f4167d94e89b7b56f74bdf994bb8fb199769b9d945c681a1ae", 21 | "urls": [ 22 | "https://github.com/Kim2091/Kim2091-Models/releases/download/4x-RealPLKSR_Pretrain_V4/4x-RealPLKSR_Pretrain_V4.pth" 23 | ] 24 | } 25 | ], 26 | "trainingIterations": 25000, 27 | "trainingBatchSize": 8, 28 | "trainingHRSize": 128, 29 | "trainingOTF": false, 30 | "datasetSize": 26000, 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/4x-RealPLKSR-dysample-pretrain.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "4x-RealPLKSR_dysample_pretrain", 3 | "author": "kim2091", 4 | "license": "CC0-1.0", 5 | "tags": [ 6 | "pretrained" 7 | ], 8 | "description": "Simple pretrain for RealPLKSR Dysample, trained on CC0 content. \"Ethical\" model", 9 | "date": "2024-07-06", 10 | "architecture": "realplksr-dysample", 11 | "size": null, 12 | "scale": 4, 13 | "inputChannels": 3, 14 | "outputChannels": 3, 15 | "resources": [ 16 | { 17 | "platform": "pytorch", 18 | "type": "safetensors", 19 | "size": 29641748, 20 | "sha256": "f75eeb7b384714bbf450a19b5ebe6c2f87d9a6c0c0bd4b0ef630ff3948848874", 21 | "urls": [ 22 | "https://github.com/Kim2091/Kim2091-Models/releases/download/4x-RealPLKSR_dysample_pretrain/4x-RealPLKSR_dysample_pretrain.safetensors" 23 | ] 24 | } 25 | ], 26 | "trainingIterations": 120000, 27 | "trainingBatchSize": 8, 28 | "trainingHRSize": 192, 29 | "trainingOTF": false, 30 | "dataset": "UltraSharpV2 Ethical", 31 | "datasetSize": 7000, 32 | "images": [] 33 | } -------------------------------------------------------------------------------- /data/models/4x-Rebout-Blend.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Rebout Blend", 3 | "author": "lyonhrt", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\nPurpose: Pixel Art/Sprites", 9 | "date": "2020-08-24", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66961958, 23 | "sha256": "4b09890676aad237f0432bebd46636efaa7b500261a14c6c85dfc9dc523e003b", 24 | "urls": [ 25 | "https://drive.google.com/u/1/uc?id=1h-bY4gq_61sRF_xK3F4OiVK1cWRX0Q9w&export=download" 26 | ] 27 | } 28 | ], 29 | "dataset": "Custom prepared sprites from kof 94 rebout, which with gradients blending", 30 | "pretrainedModelG": "4x-detoon", 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/4x-Rebout.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Rebout", 3 | "author": "lyonhrt", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\nPurpose: Pixel Art/Sprites\n\nFor upscaling character sprites", 9 | "date": "2019-08-04", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66961958, 23 | "sha256": "c36a14ddb51ae094324a53b67c345da2d6b6bbf6a2249726056d5b94bdedab05", 24 | "urls": [ 25 | "https://drive.google.com/u/1/uc?id=1WXJQzqVGTKaX_8_Ma1hJ45W5nUkZBGFu&export=download" 26 | ] 27 | } 28 | ], 29 | "pretrainedModelG": "4x-detoon", 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/4x-Remacri.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Remacri", 3 | "author": "foolhardy", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "general-upscaler" 7 | ], 8 | "description": "Pretrained: none - interpolated\n\nA creation of BSRGAN with more details and less smoothing, made by interpolating IRL models such as Siax, Superscale, Superscale Artisoft, Pixel Perfect, etc. This was, things like skin and other details don't become mushy and blurry.", 9 | "date": "2021-04-09", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 67025055, 23 | "sha256": "e1a73bd89c2da1ae494774746398689048b5a892bd9653e146713f9df8bca86a", 24 | "urls": [ 25 | "https://u.pcloud.link/publink/show?code=kZgSLsXZ0M1fT3kFGfRXg2tNtoUgbSI4kcSy", 26 | "https://drive.google.com/file/d/1lELx_WiA25_S8rYINm_DyMNpFOhfZAzt/view" 27 | ] 28 | } 29 | ], 30 | "trainingIterations": 210000, 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/4x-SOFVSR-REDS-F3-V1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SOFVSR_REDS_F3 V1", 3 | "author": "sunseille", 4 | "license": "WTFPL", 5 | "tags": [ 6 | "pretrained" 7 | ], 8 | "description": "Category: Pretrained Discriminators\nPurpose: IRL videos\n\nupscale IRL videos. Use not recommended by creator.\n\nSample video: https://cdn.discordapp.com/attachments/547949806761410560/813134983236419664/100k_iter.mp4", 9 | "date": "2021-02-26", 10 | "architecture": "sofvsr", 11 | "size": null, 12 | "scale": 4, 13 | "inputChannels": 3, 14 | "outputChannels": 3, 15 | "resources": [ 16 | { 17 | "platform": "pytorch", 18 | "type": "pth", 19 | "size": 69022363, 20 | "sha256": "76fefbc8147d7f11b7cb919c419fd024e38074ee481cdbbc3937638decc21a3f", 21 | "urls": [ 22 | "https://mega.nz/file/bpA2QTxI#j_ALxzI5rNjt-T5XcOu8P6ogtAjmFHJeggJbXLGy_Nc" 23 | ] 24 | } 25 | ], 26 | "trainingIterations": 100000, 27 | "trainingBatchSize": 12, 28 | "trainingHRSize": 128, 29 | "trainingOTF": false, 30 | "dataset": "REDS", 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/4x-ScreenBooster-V2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ScreenBooster V2", 3 | "author": "blackscout", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "cgi", 7 | "game-screenshots", 8 | "restoration" 9 | ], 10 | "description": "", 11 | "date": "2020-01-29", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 4, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66958607, 25 | "sha256": "ee798642c87ab5f46fa265e777235a97db54f6413b197c714d6fcd0a94defa29", 26 | "urls": [ 27 | "https://drive.google.com/file/d/1MkqAuELmbhrEGcD55IUJhDFFNniOmNWN" 28 | ] 29 | } 30 | ], 31 | "trainingIterations": 44000, 32 | "trainingEpochs": 7, 33 | "trainingBatchSize": 8, 34 | "trainingHRSize": 128, 35 | "dataset": "My own screenshots (GTA V, ETS2, Minecaft, GTA SA, NFSUG2, Yakuza 0, Just Cause 3...)", 36 | "pretrainedModelG": "4x-ESRGAN", 37 | "images": [] 38 | } -------------------------------------------------------------------------------- /data/models/4x-Skyrim-Alpha.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Skyrim Alpha", 3 | "author": "deorder", 4 | "license": "CC0-1.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Alphas\nPurpose: Pixel Art with Tranparency / Alpha Channel", 9 | "date": "2019-02-21", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66952231, 23 | "sha256": "d26dbfbaf8a366c9714623f01f0c3fae93e58893948bc19d8409a865a2c18809", 24 | "urls": [ 25 | "https://drive.google.com/file/d/1trYs4AuC9s2JWAbryHdNyy5cgYV-V8cH/view" 26 | ] 27 | } 28 | ], 29 | "trainingIterations": 105000, 30 | "dataset": "Alpha Channels from Skyrim", 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/4x-Skyrim-Armory.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Skyrim Armory", 3 | "author": "alsa", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "game-textures" 7 | ], 8 | "description": "Game textures of equipment", 9 | "date": "2019-02-24", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66958607, 23 | "sha256": "125ed92b5f7ef11557e38ac322e07afe6f67fd8a1865ede2ed5fba853d6ab4c2", 24 | "urls": [ 25 | "https://e.pcloud.link/publink/show?code=XZGmsZo1yNrot19O4R5SrPVD1GWpRy1MKX" 26 | ] 27 | } 28 | ], 29 | "pretrainedModelG": "4x-Manga109Attempt", 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/4x-Skyrim-Misc.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Skyrim Misc", 3 | "author": "deorder", 4 | "license": "CC0-1.0", 5 | "tags": [ 6 | "game-textures" 7 | ], 8 | "description": "Skyrim Diffuse Textures", 9 | "date": "2019-03-24", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66952133, 23 | "sha256": "e3387b3d31f789a9e6b56e68a573b6894d8a8ecca0421d8824385fe957f226b6", 24 | "urls": [ 25 | "https://drive.google.com/file/d/1RjVWNUFtVyz4ykqu6Pm9wmO03pPEBGqg/view" 26 | ] 27 | } 28 | ], 29 | "trainingIterations": 110000, 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/4x-SmolFace-Clean.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SmolFace Clean", 3 | "author": "dinjerr", 4 | "license": null, 5 | "tags": [ 6 | "faces" 7 | ], 8 | "description": "Purpose: Art/People\n\nA sharp upscaler trained specifically for small sprite faces. Does not blend, so avoid using on painted/photo portraits unless you were trying to retain more of the outlines somehow.", 9 | "date": "2022-08-19", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66961958, 23 | "sha256": "7199e861ab465eefa449e229d847a9b17f9da12704d32d5d692af591ae2a5f56", 24 | "urls": [ 25 | "https://1drv.ms/u/s!Aip-EMByJHY29BRdcYSnTpgx0LWd?e=I6x5R7" 26 | ] 27 | } 28 | ], 29 | "pretrainedModelG": "4x-NMKD-UltraYandere", 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/4x-SmoothRealism.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SmoothRealism", 3 | "author": "joey", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\n\nPixel art, rocky/grainy textures? Quantization smoothing, adding detail.\n\nPretrained model: 4x_RRDB_PSNR_old_arch.pth", 9 | "date": "2020-03-04", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66958607, 23 | "sha256": "3b391980b3b5a2b246133bad475b8f1c091c69ce0d6e50238dda3bce7bede27c", 24 | "urls": [ 25 | "https://drive.google.com/open?id=1Uc9RUc2YpZKpPoGQeGxNUb3Ro-U720cH" 26 | ] 27 | } 28 | ], 29 | "trainingIterations": 140000, 30 | "trainingBatchSize": 2, 31 | "trainingHRSize": 64, 32 | "dataset": "LR: Default minecraft. HR: R3DCraft Smooth Realism Texture Pack (64x resolution)", 33 | "datasetSize": 679, 34 | "images": [] 35 | } -------------------------------------------------------------------------------- /data/models/4x-SpongeBob-CEL-2-HD-PHOENiX.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SpongeBob.CEL.2.HD.125ki.499e-PHOENiX", 3 | "author": "pheonix", 4 | "license": "GPL-3.0-only", 5 | "tags": [ 6 | "anime", 7 | "cartoon" 8 | ], 9 | "description": "Restorative CEL Animation MPEG-1 and 2 Model specifically crafted for SpongeBob S01.", 10 | "date": "2019-12-24", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 4, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66929193, 24 | "sha256": "cb84a6c8330e115cda0458a23ef98b58af0837763426ca0e6306e7e3adbb2944", 25 | "urls": [ 26 | "https://drive.google.com/open?id=1D3AjglmYlQ2HGda7iw4JXckSGbVBqsQr" 27 | ] 28 | } 29 | ], 30 | "trainingIterations": 125000, 31 | "trainingEpochs": 5, 32 | "trainingBatchSize": 16, 33 | "trainingHRSize": 128, 34 | "datasetSize": 4012, 35 | "pretrainedModelG": "4x-PSNR", 36 | "images": [] 37 | } -------------------------------------------------------------------------------- /data/models/4x-SpongeBob.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SpongeBob", 3 | "author": "joey", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "anime", 7 | "cartoon" 8 | ], 9 | "description": "", 10 | "date": "2019-09-12", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 4, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66958607, 24 | "sha256": "a5ab019cc05c770d67c2c664fc4dd8148e3ca60caef5039c61d00be8e86cb91e", 25 | "urls": [ 26 | "https://drive.google.com/file/d/1dT7Pw0iwPkQC4-rWriibrVLuA3KS3pS4/view" 27 | ] 28 | } 29 | ], 30 | "pretrainedModelG": "4x-ESRGAN", 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/4x-Spongebob-v6-De-Quantize.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Spongebob v6 De-Quantize", 3 | "author": "joey", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "anime", 7 | "cartoon" 8 | ], 9 | "description": "Purpose: Animation - Quantized\n\nA model I trained to do both de-quantizing as well as upscaling. The results are pretty blurry but it works decently for what it is.", 10 | "date": "2019-11-08", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 4, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66958607, 24 | "sha256": "1d7615814eaf121ccd52dde2a93d96cbd64441f34da44a1f330d6d36335a22e7", 25 | "urls": [ 26 | "https://drive.google.com/open?id=1HFA1e75QvdostGAZVPBxFHtkiru5gLPa" 27 | ] 28 | } 29 | ], 30 | "trainingIterations": 90000, 31 | "pretrainedModelG": "4x-Spongebob-v6", 32 | "images": [] 33 | } -------------------------------------------------------------------------------- /data/models/4x-Spongebob-v6-Deblur.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Spongebob v6 Deblur", 3 | "author": "joey", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "anime", 7 | "cartoon", 8 | "deblur", 9 | "restoration" 10 | ], 11 | "description": "After not being entirely happy with the main Spongebob v6 model, I trained a new one with blurring OTF options and two different downscale types. This one is much better in my opinion.", 12 | "date": "2019-11-08", 13 | "architecture": "esrgan", 14 | "size": [ 15 | "64nf", 16 | "23nb" 17 | ], 18 | "scale": 4, 19 | "inputChannels": 3, 20 | "outputChannels": 3, 21 | "resources": [ 22 | { 23 | "platform": "pytorch", 24 | "type": "pth", 25 | "size": 66958607, 26 | "sha256": "a6cb6bc6e9cbbffc742e7c03fe63a76502dd141596d45684816736e6cd988756", 27 | "urls": [ 28 | "https://drive.google.com/open?id=1geNLDAnQzLadMvvoRLhVy4MXhQf5t8JP" 29 | ] 30 | } 31 | ], 32 | "trainingIterations": 65000, 33 | "pretrainedModelG": "4x-Spongebob-v6", 34 | "images": [] 35 | } -------------------------------------------------------------------------------- /data/models/4x-Spongebob-v6.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Spongebob v6", 3 | "author": "joey", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "anime", 7 | "cartoon" 8 | ], 9 | "description": "New version of the Spongebob model. Ideally it's a lot sharper and cleaner but I'm still not sure if it works better than the old one. From what I can tell it's better in many cases.", 10 | "date": "2019-11-08", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 4, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66958607, 24 | "sha256": "1d0e06bb6abf6c0eb15876aab9205eb7d8ae3acb1809157b1681b63a29688f4e", 25 | "urls": [ 26 | "https://drive.google.com/open?id=1NHuNF36dp_myvPH__IesJ5x6GuppUwS6" 27 | ] 28 | } 29 | ], 30 | "trainingIterations": 190000, 31 | "pretrainedModelG": "4x-ESRGAN", 32 | "images": [] 33 | } -------------------------------------------------------------------------------- /data/models/4x-SwinIR-M-Pretrain.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "4x-SwinIR-M_Pretrain", 3 | "author": "kim2091", 4 | "license": "CC0-1.0", 5 | "tags": [ 6 | "pretrained" 7 | ], 8 | "description": "Simple pretrain for SwinIR Medium, trained on CC0 content. \"Ethical\" model", 9 | "date": "2024-05-15", 10 | "architecture": "swinir", 11 | "size": [ 12 | "Medium" 13 | ], 14 | "scale": 4, 15 | "inputChannels": 3, 16 | "outputChannels": 3, 17 | "resources": [ 18 | { 19 | "urls": [ 20 | "https://github.com/Kim2091/Kim2091-Models/releases/download/4x-SwinIR-M_Pretrain/4x-SwinIR-M_Pretrain.pth" 21 | ], 22 | "sha256": "1b52b82fa012690e319e66e7d35903f1faed8e696b48d172b76a017dbdf95d4e", 23 | "size": 59606776, 24 | "platform": "pytorch", 25 | "type": "pth" 26 | } 27 | ], 28 | "images": [], 29 | "dataset": " ambientCG textures, modified for training + UltraSharpV2", 30 | "datasetSize": 26000, 31 | "trainingIterations": 50000, 32 | "trainingBatchSize": 6, 33 | "trainingHRSize": 128 34 | } -------------------------------------------------------------------------------- /data/models/4x-SwinIR-S-Pretrain.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "4x-SwinIR-S_Pretrain", 3 | "author": "kim2091", 4 | "license": "CC0-1.0", 5 | "tags": [ 6 | "pretrained" 7 | ], 8 | "description": "Simple pretrain for SwinIR Small, trained on CC0 content. \"Ethical\" model", 9 | "date": "2024-05-14", 10 | "architecture": "swinir", 11 | "size": [ 12 | "Small" 13 | ], 14 | "scale": 4, 15 | "inputChannels": 3, 16 | "outputChannels": 3, 17 | "resources": [ 18 | { 19 | "urls": [ 20 | "https://github.com/Kim2091/Kim2091-Models/releases/download/4x-SwinIR-S_Pretrain/4x-SwinIR-S_Pretrain.pth" 21 | ], 22 | "sha256": "dbdde758749a36aa9615b48d347fa4a59c591fe9e4b780a350b191d49c23dcd1", 23 | "size": 17222864, 24 | "platform": "pytorch", 25 | "type": "pth" 26 | } 27 | ], 28 | "images": [], 29 | "dataset": "ambientCG textures, modified for training + UltraSharpV2", 30 | "datasetSize": 26000, 31 | "trainingIterations": 50000, 32 | "trainingBatchSize": 6, 33 | "trainingHRSize": 128, 34 | "trainingOTF": false 35 | } -------------------------------------------------------------------------------- /data/models/4x-Training4Melozard-Anime.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Training4Melozard Anime", 3 | "author": "joey", 4 | "license": "WTFPL", 5 | "tags": [ 6 | "anime", 7 | "cartoon" 8 | ], 9 | "description": "Pretrained model: RRDB_ESRGAN_x4_old_arch.pth", 10 | "date": "2021-03-17", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 4, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66958607, 24 | "sha256": "efa57d77c0f33fb22dc0d393d2034852b5276d4a21a41c22fc984e76a0ce881f", 25 | "urls": [ 26 | "https://u.pcloud.link/publink/show?code=kZcUlBXZ9egcFjtf3cjX02lDqNAr5j4l3jFX" 27 | ] 28 | } 29 | ], 30 | "trainingIterations": 144000, 31 | "trainingEpochs": 5770, 32 | "trainingBatchSize": 8, 33 | "trainingHRSize": 128, 34 | "dataset": "<@!716378030121156669>'s Anime dataset", 35 | "datasetSize": 202, 36 | "images": [] 37 | } -------------------------------------------------------------------------------- /data/models/4x-Trixie.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Trixie", 3 | "author": "lyonhrt", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "faces", 7 | "game-textures" 8 | ], 9 | "description": "Purpose: Faces / Game Textures\n\ncharacter textures for star wars games, including the heroes, rebels, sith and imperial. Plus a few main aliens…Why called trixie? Because jar jars big adventure would be too long of a name… This also provides good upscale for face textures for general purpose as well as basic star wars", 10 | "date": "2019-05-09", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 4, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66958607, 24 | "sha256": "c1095f0f53ce346d2caa1fe94f9a7c910d213dfd49cffa0408ae24245ca72db0", 25 | "urls": [ 26 | "https://drive.google.com/file/d/1HIBRKFs7s-XhpN1p7rwAWcMTHwFRqn3n/view" 27 | ] 28 | } 29 | ], 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/4x-UltraFArt-v3-Fine.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "UltraFArt v3 Fine", 3 | "author": "dinjerr", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\nPurpose: Art\n\nIllustrations with with larger shaped features (?).\n\nPretrained model: 4x_UltraFArt", 9 | "date": "2021-05-14", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "128nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 139929695, 23 | "sha256": "c458e25b5e6775276c7525834820e8c8d8858401bb67bf543d294297277deef0", 24 | "urls": [ 25 | "https://1drv.ms/u/s!Aip-EMByJHY27UIFr1mk87zFytap?e=SSxKaV" 26 | ] 27 | } 28 | ], 29 | "trainingBatchSize": 1, 30 | "trainingHRSize": 320, 31 | "trainingOTF": true, 32 | "dataset": "ArtStation + Fatality Faces tiles.", 33 | "images": [] 34 | } -------------------------------------------------------------------------------- /data/models/4x-UltraFArt-v3-Photo.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "UltraFArt v3 Photo", 3 | "author": "dinjerr", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\nPurpose: Art\n\nIllustrations with with larger shaped features (?).\n\nPretrained model: 4x_UltraFArt", 9 | "date": "2021-05-14", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "128nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 139929695, 23 | "sha256": "5f81f1bd4efb96c12da6bb77fc71b182ce576f90d699ab6df5c91ab273ac3bc3", 24 | "urls": [ 25 | "https://1drv.ms/u/s!Aip-EMByJHY27UIFr1mk87zFytap?e=SSxKaV" 26 | ] 27 | } 28 | ], 29 | "trainingBatchSize": 1, 30 | "trainingHRSize": 320, 31 | "trainingOTF": true, 32 | "dataset": "ArtStation + Fatality Faces tiles.", 33 | "images": [] 34 | } -------------------------------------------------------------------------------- /data/models/4x-UltraFArt-v3-Smooth.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "UltraFArt v3 Smooth", 3 | "author": "dinjerr", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\nPurpose: Art\n\nIllustrations with with larger shaped features (?).\n\nPretrained model: 4x_UltraFArt", 9 | "date": "2021-05-14", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "128nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 139929695, 23 | "sha256": "3a88672ce64da50dca91b1c6c9e032194edbe856f085ae04d6cf93d6d330790d", 24 | "urls": [ 25 | "https://1drv.ms/u/s!Aip-EMByJHY27UIFr1mk87zFytap?e=SSxKaV" 26 | ] 27 | } 28 | ], 29 | "trainingBatchSize": 1, 30 | "trainingHRSize": 320, 31 | "trainingOTF": true, 32 | "dataset": "ArtStation + Fatality Faces tiles.", 33 | "images": [] 34 | } -------------------------------------------------------------------------------- /data/models/4x-UltraFArt-v3.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "UltraFArt v3", 3 | "author": "dinjerr", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\nPurpose: Art\n\nIllustrations with with larger shaped features (?).\n\nPretrained model: 4x_UltraFArt", 9 | "date": "2021-05-14", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "128nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 139929695, 23 | "sha256": "9e953fd6f06ab3caabaf40ee9cdd054743fe79198520ce831e3646f9b7b4e15c", 24 | "urls": [ 25 | "https://1drv.ms/u/s!Aip-EMByJHY27UIFr1mk87zFytap?e=SSxKaV" 26 | ] 27 | } 28 | ], 29 | "trainingBatchSize": 1, 30 | "trainingHRSize": 320, 31 | "trainingOTF": true, 32 | "dataset": "ArtStation + Fatality Faces tiles.", 33 | "images": [] 34 | } -------------------------------------------------------------------------------- /data/models/4x-UniversalUpscalerV2-Neutral.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "UniversalUpscalerV2 Neutral", 3 | "author": "mutin-choler", 4 | "license": "WTFPL", 5 | "tags": [ 6 | "general-upscaler" 7 | ], 8 | "description": "General Upscaler", 9 | "date": "2021-04-01", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66906127, 23 | "sha256": "60fccf5f605c8aab7bba1c6e05f055967c6b693d24468bf42215599cd3d78323", 24 | "urls": [ 25 | "https://drive.google.com/file/d/1fVm0zpQyj54BxzWauxa1e7taCpj43pwF/view?usp=drive_link", 26 | "https://drive.google.com/drive/u/1/folders/15dV3rhMcq_LXg5Vrn7DG6lwo4M6cXt6C" 27 | ] 28 | } 29 | ], 30 | "trainingIterations": 115000, 31 | "trainingBatchSize": 4, 32 | "trainingHRSize": 128, 33 | "trainingOTF": false, 34 | "dataset": "Realistic images", 35 | "pretrainedModelG": "1x-ESRGAN", 36 | "images": [] 37 | } -------------------------------------------------------------------------------- /data/models/4x-UniversalUpscalerV2-Sharper.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "UniversalUpscalerV2 Sharper", 3 | "author": "mutin-choler", 4 | "license": "WTFPL", 5 | "tags": [ 6 | "general-upscaler" 7 | ], 8 | "description": "General Upscaler", 9 | "date": "2021-04-01", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66961958, 23 | "sha256": "7203b094ed8ef5a4381a4b02d96684272f91b58902a4f59718c96cec0c8c2c31", 24 | "urls": [ 25 | "https://drive.google.com/file/d/1pEJdnIRl-bt2RGJuRALsJrVrqx-RVirV/view?usp=drive_link", 26 | "https://drive.google.com/drive/u/1/folders/15dV3rhMcq_LXg5Vrn7DG6lwo4M6cXt6C" 27 | ] 28 | } 29 | ], 30 | "trainingIterations": 103000, 31 | "trainingBatchSize": 4, 32 | "trainingHRSize": 128, 33 | "trainingOTF": false, 34 | "dataset": "Realistic images", 35 | "pretrainedModelG": "1x-ESRGAN", 36 | "images": [] 37 | } -------------------------------------------------------------------------------- /data/models/4x-VESRGAN-G.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "VESRGAN_G", 3 | "author": "victorca25", 4 | "license": null, 5 | "tags": [ 6 | "restoration", 7 | "video-frame" 8 | ], 9 | "description": "Category: Pretrained SOFVSR Models\nPurpose: \n\nTrained on REDS' size dataset", 10 | "date": "2020-11-24", 11 | "architecture": "sofvsr", 12 | "size": null, 13 | "scale": 4, 14 | "inputChannels": 3, 15 | "outputChannels": 3, 16 | "resources": [ 17 | { 18 | "platform": "pytorch", 19 | "type": "pth", 20 | "size": 69026745, 21 | "sha256": "3980a2e9ed6895c14a6d6379debe395e412dd9599fd53d951ea7c69d3ac14c0d", 22 | "urls": [ 23 | "https://mega.nz/file/TwwEWD7Q#wCfUvVudI17weYc1JLeM3nTeK2xiMlVdc_JN1Nov3ac" 24 | ] 25 | } 26 | ], 27 | "images": [] 28 | } -------------------------------------------------------------------------------- /data/models/4x-VolArtNR.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "VolArtNR", 3 | "author": "kim2091", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "denoise", 7 | "game-textures", 8 | "restoration" 9 | ], 10 | "description": "Purpose: Game textures/Art\n\nThis model upscales artwork for the game Volfoss (2001). The model peaked in quality very quickly. The NR model removes most noise, but has the downside of removing transparent portions. Use the main model in most cases.", 11 | "date": "2021-09-18", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 4, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66961958, 25 | "sha256": "5a7dee0fb95bc821ee3b346e243ac6a3601b522fe2df4bca908b81b68536eac8", 26 | "urls": [ 27 | "https://mega.nz/folder/HNh0hLzD#vUuFhp2ZAeNi_5shZfCC0g" 28 | ] 29 | } 30 | ], 31 | "pretrainedModelG": "4x-ESRGAN", 32 | "images": [] 33 | } -------------------------------------------------------------------------------- /data/models/4x-WaifuGAN-v3.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "WaifuGAN v3", 3 | "author": "dinjerr", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "anime", 7 | "cgi" 8 | ], 9 | "description": "Upscaling CG-painted anime with variable outlines.\n\nPretrained model: Manga109v2.pth", 10 | "date": "2019-07-12", 11 | "architecture": "esrgan", 12 | "size": [ 13 | "64nf", 14 | "23nb" 15 | ], 16 | "scale": 4, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 66958607, 24 | "sha256": "f2d8c985b59ff33cf1d70bdae489f748b687fff6124310da5c1bfbb8f8913486", 25 | "urls": [ 26 | "https://1drv.ms/u/s!Aip-EMByJHY20wpGoLuSRzjdqh0T" 27 | ] 28 | } 29 | ], 30 | "trainingIterations": 30000, 31 | "trainingBatchSize": 2, 32 | "trainingHRSize": 128, 33 | "datasetSize": 73, 34 | "images": [] 35 | } -------------------------------------------------------------------------------- /data/models/4x-craft-pretrain.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "craft pretrain", 3 | "author": "musl", 4 | "license": "CC0-1.0", 5 | "tags": [ 6 | "pretrained" 7 | ], 8 | "description": "Purpose: Pretrain to quick start new models.", 9 | "date": "2023-12-25", 10 | "architecture": "craft", 11 | "size": [ 12 | "4x16", 13 | "48dim", 14 | "1conv" 15 | ], 16 | "scale": 4, 17 | "inputChannels": 3, 18 | "outputChannels": 3, 19 | "resources": [ 20 | { 21 | "platform": "pytorch", 22 | "type": "pth", 23 | "size": 3427754, 24 | "sha256": "d0ba99f90d67c199c97938d018f04ed5a585571863848594fb626e76ba50f11d", 25 | "urls": [ 26 | "https://drive.google.com/file/d/1mlnr3FB5amgZIOC5bxTpDGIrRgoihfDM/view?usp=sharing" 27 | ] 28 | } 29 | ], 30 | "trainingIterations": 400000, 31 | "dataset": "nomos_uni", 32 | "images": [ 33 | { 34 | "type": "standalone", 35 | "url": "https://images2.imgbox.com/bf/67/EgqmZrtq_o.png" 36 | } 37 | ] 38 | } -------------------------------------------------------------------------------- /data/models/4x-detoon-alt.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "detoon alt", 3 | "author": "lyonhrt", 4 | "license": null, 5 | "tags": [ 6 | "cartoon", 7 | "photo", 8 | "restoration" 9 | ], 10 | "description": "Category: DeToon\nPurpose: Detooning\n\nA toon to realistic shading style model to wiki under drawings", 11 | "date": "2019-06-24", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 4, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66958607, 25 | "sha256": "6a6a7b8d1a1b8ef6dc4b8bdf023a528a0ca4e777d223e908cedf6cdb595dc79b", 26 | "urls": [ 27 | "https://drive.google.com/open?id=1uJvdx3g3GEY0VxMnHb0ItBvoc6pmGvuH" 28 | ] 29 | } 30 | ], 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/4x-detoon.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "detoon", 3 | "author": "lyonhrt", 4 | "license": null, 5 | "tags": [ 6 | "cartoon", 7 | "photo", 8 | "restoration" 9 | ], 10 | "description": "Category: DeToon\nPurpose: Detooning\n\nA toon to realistic shading style model to wiki under drawings", 11 | "date": "2019-06-24", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 4, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66958607, 25 | "sha256": "67cec3186d2e36b75a81c2d2da04477a8e7ed771980bceea986333725bddf403", 26 | "urls": [ 27 | "https://drive.google.com/open?id=1uJvdx3g3GEY0VxMnHb0ItBvoc6pmGvuH" 28 | ] 29 | } 30 | ], 31 | "trainingIterations": 225000, 32 | "images": [] 33 | } -------------------------------------------------------------------------------- /data/models/4x-muy4-035-1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "muy4_035_1", 3 | "author": "katoumegumi", 4 | "license": "WTFPL", 5 | "tags": [ 6 | "anime" 7 | ], 8 | "description": "Upscaling of anime art (Specifically visual novel CG art)", 9 | "date": "2021-07-18", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 67020901, 23 | "sha256": "151c5afa79d54ec766098848a2c1db422041ebf695b35dc5b32c2588a393d980", 24 | "urls": [ 25 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/4x-muy4-035-1.pth" 26 | ] 27 | } 28 | ], 29 | "images": [] 30 | } -------------------------------------------------------------------------------- /data/models/4x-scalenx.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "scalenx", 3 | "author": "lyonhrt", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\n\nScalenx style pixel art upscaler", 9 | "date": "2019-06-15", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66958607, 23 | "sha256": "bfcea72ca19c7d5459f44e230d05470f98337715b688d7c72eb938aa3c9350b4", 24 | "urls": [ 25 | "https://drive.google.com/open?id=1jE2le5Lsab-AcMUMm0Zr9L-OvFNhnRAG" 26 | ] 27 | } 28 | ], 29 | "trainingIterations": 90000, 30 | "pretrainedModelG": "4x-PSNR", 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/4x-spanx4-ch48.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "spanx4_ch48", 3 | "author": "hongyuanyu", 4 | "license": "Apache-2.0", 5 | "tags": [ 6 | "pretrained", 7 | "research" 8 | ], 9 | "description": "Official 4x pretrain for [SPAN](https://github.com/hongyuanyu/span).", 10 | "date": "2023-11-17", 11 | "architecture": "span", 12 | "size": null, 13 | "scale": 4, 14 | "inputChannels": 3, 15 | "outputChannels": 3, 16 | "resources": [ 17 | { 18 | "platform": "pytorch", 19 | "type": "pth", 20 | "size": 9004922, 21 | "sha256": "c79e716b8eb24182c1d7fcc74fa10ae074bdb34fee7c6e67c73053ff5498c667", 22 | "urls": [ 23 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/4x-spanx4-ch48.pth", 24 | "https://drive.google.com/file/d/1iYUA2TzKuxI0vzmA-UXr_nB43XgPOXUg/view?usp=sharing" 25 | ] 26 | } 27 | ], 28 | "images": [] 29 | } -------------------------------------------------------------------------------- /data/models/4x-video-G.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "video_G", 3 | "author": "victorca25", 4 | "license": null, 5 | "tags": [ 6 | "pretrained" 7 | ], 8 | "description": "Category: Pretrained SOFVSR Models\nPurpose: \n\nTrained on REDS' size dataset", 9 | "date": "2020-11-24", 10 | "architecture": "sofvsr", 11 | "size": null, 12 | "scale": 4, 13 | "inputChannels": 3, 14 | "outputChannels": 3, 15 | "resources": [ 16 | { 17 | "platform": "pytorch", 18 | "type": "pth", 19 | "size": 4204067, 20 | "sha256": "73ffa44dd7deab5a43c03b9776279ed64b1649c8e1596620e67c942aca353aa9", 21 | "urls": [ 22 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/4x-video-G.pth", 23 | "https://mega.nz/file/28JmyLrK#xhRP-EZKR7Vg7UjIRZQqotiFLix21JaGGLSvZq7cjt4" 24 | ] 25 | } 26 | ], 27 | "images": [] 28 | } -------------------------------------------------------------------------------- /data/models/4x-xbrz-dd.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "xbrz+dd", 3 | "author": "lyonhrt", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "dedither", 7 | "pixel-art", 8 | "restoration" 9 | ], 10 | "description": "Category: Art/Pixel Art\n\nxbrz plus dedithering style pixel-art upscaling model to wiki under specialised", 11 | "date": "2019-06-17", 12 | "architecture": "esrgan", 13 | "size": [ 14 | "64nf", 15 | "23nb" 16 | ], 17 | "scale": 4, 18 | "inputChannels": 3, 19 | "outputChannels": 3, 20 | "resources": [ 21 | { 22 | "platform": "pytorch", 23 | "type": "pth", 24 | "size": 66958607, 25 | "sha256": "ecaf25a85f557f33da80c902eb0ff3e0c5460f2c49d7887d3d5703091e48ea49", 26 | "urls": [ 27 | "https://drive.google.com/open?id=1h5YufgcS1jbCdqwsw7dye0DvLj3kIfox" 28 | ] 29 | } 30 | ], 31 | "trainingIterations": 260000, 32 | "pretrainedModelG": "4x-xbrz", 33 | "images": [] 34 | } -------------------------------------------------------------------------------- /data/models/4x-xbrz.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "xbrz", 3 | "author": "lyonhrt", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\n\nXbrz style pixel art upscaler", 9 | "date": "2019-06-05", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 4, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 66958607, 23 | "sha256": "a6e845a14dfa3a16c7895aa463bad6cb6838018e097a27900f90437a7b627292", 24 | "urls": [ 25 | "https://drive.google.com/open?id=1LFd4BqZ2N8p21JzjLX6hGdm7RpVIkH7s" 26 | ] 27 | } 28 | ], 29 | "trainingIterations": 90000, 30 | "pretrainedModelG": "4x-PSNR", 31 | "images": [] 32 | } -------------------------------------------------------------------------------- /data/models/8x-Arzenal-v1-1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Arzenal v1.1", 3 | "author": "computerk", 4 | "license": "CC-BY-NC-SA-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\n\nSmooth general pixel art, Minecraft textures\n\nPretrained model: Interpolated from nmkd's pixel art upscaling models with different interpolation settings and de-dithered versions", 9 | "date": "2021-02-10", 10 | "architecture": "esrgan", 11 | "size": null, 12 | "scale": 8, 13 | "inputChannels": 3, 14 | "outputChannels": 3, 15 | "resources": [ 16 | { 17 | "platform": "pytorch", 18 | "type": "pth", 19 | "size": 67173423, 20 | "sha256": "2166b4c42fb9cea14fc61f55711c3f4d2cfe9c922d902a1a0f0b416dfc2cab35", 21 | "urls": [ 22 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/8x-Arzenal-v1-1.pth", 23 | "https://u.pcloud.link/publink/show?code=kZ4WthXZDDnqbo4Hye8zBgCkhgbbQf3WXT27" 24 | ] 25 | } 26 | ], 27 | "trainingIterations": 175000, 28 | "images": [] 29 | } -------------------------------------------------------------------------------- /data/models/8x-ESRGAN.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "8xESRGAN", 3 | "author": "victorca25", 4 | "license": "Apache-2.0", 5 | "tags": [ 6 | "pretrained" 7 | ], 8 | "description": "Pretrained: RRDB_ESRGAN_x4.pth", 9 | "date": "2019-07-06", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 8, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 67101075, 23 | "sha256": "885d9fa1eadb277b5157f97d3fdd3893d7fb78f91331fc8a8bf9a3e4a9dd4651", 24 | "urls": [ 25 | "https://objectstorage.us-phoenix-1.oraclecloud.com/n/ax6ygfvpvzka/b/open-modeldb-files/o/8x-ESRGAN.pth", 26 | "https://mega.nz/#!6kwQiCCS!v2uN8R44vVrlzmSqffGaCnzgogkPhhl67myJbuG45SA" 27 | ] 28 | } 29 | ], 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/8x-HugePaint.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "HugePaint", 3 | "author": "dinjerr", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\nPurpose: Digital Illustrations\n\nTrained on a variety of images from ArtStation", 9 | "date": "2020-06-29", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 8, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 67054134, 23 | "sha256": "e53467d7822920156c86b146cabf0331ddf1f6878767e9654357c7656f5b5d01", 24 | "urls": [ 25 | "https://1drv.ms/u/s!Aip-EMByJHY26wU-wOqApp7Hu7tt?e=4ihnBr" 26 | ] 27 | } 28 | ], 29 | "pretrainedModelG": "8x-HugePeeps-v1", 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/8x-HugePeeps-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "HugePeeps v1", 3 | "author": "dinjerr", 4 | "license": "CC-BY-NC-4.0", 5 | "tags": [ 6 | "pixel-art" 7 | ], 8 | "description": "Category: Art/Pixel Art\nPurpose: Art/People\n\nPainted humans", 9 | "date": "2020-06-16", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 8, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 67054134, 23 | "sha256": "7f13f82c6e9b5375ae255edff93c3f845d8e81ef103b8209bbcb03f62d710ccb", 24 | "urls": [ 25 | "https://1drv.ms/u/s!Aip-EMByJHY26nuB0Lo0rdirfGoi?e=XI9Fa2" 26 | ] 27 | } 28 | ], 29 | "pretrainedModelG": "8x-TGHQFace", 30 | "images": [] 31 | } -------------------------------------------------------------------------------- /data/models/8x-PSNR.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "8x PSNR Pretrained Model", 3 | "author": "blueamulet", 4 | "license": "Apache-2.0", 5 | "tags": [ 6 | "pretrained" 7 | ], 8 | "description": "Pretrained: RRDB_PSNR_x4.pth\n\nThe original RRDB_PSNR_x4.pth model converted to 1x, 2x, 8x and 16x scales, intended to be used as pretrained models for new models at those scales. These are compatible with victor's 4xESRGAN.pth conversions", 9 | "date": "2020-04-20", 10 | "architecture": "esrgan", 11 | "size": [ 12 | "64nf", 13 | "23nb" 14 | ], 15 | "scale": 8, 16 | "inputChannels": 3, 17 | "outputChannels": 3, 18 | "resources": [ 19 | { 20 | "platform": "pytorch", 21 | "type": "pth", 22 | "size": 67106707, 23 | "sha256": "9face4ec7319f8d7d9d05e25b565e3273a279f5d023a5768339cce6fb069913b", 24 | "urls": [ 25 | "https://drive.google.com/open?id=1ldwajXL50uC7PCS63B4Wato6Dnk-svNL" 26 | ] 27 | } 28 | ], 29 | "images": [] 30 | } -------------------------------------------------------------------------------- /docs/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "routes": [ 3 | { 4 | "file": "faq.md" 5 | }, 6 | { 7 | "file": "licenses.md" 8 | }, 9 | { 10 | "directory": "training/", 11 | "routes": [ 12 | { 13 | "file": "datasets.md" 14 | } 15 | ] 16 | }, 17 | { 18 | "directory": "contributing/", 19 | "routes": [ 20 | { 21 | "file": "models.md" 22 | }, 23 | { 24 | "file": "documentation.md" 25 | } 26 | ] 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /docs/training/index.md: -------------------------------------------------------------------------------- 1 | # Training 2 | 3 | TODO 4 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */ 2 | module.exports = { 3 | preset: 'ts-jest/presets/js-with-ts', 4 | testEnvironment: 'node', 5 | }; 6 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | 3 | /** @type {import('next').NextConfig} */ 4 | const nextConfig = { 5 | // output: 'export', 6 | reactStrictMode: true, 7 | sassOptions: { 8 | includePaths: [path.join(__dirname, 'styles')], 9 | }, 10 | webpack(config) { 11 | config.module.rules.push({ 12 | test: /\.svg$/, 13 | use: ['@svgr/webpack'], 14 | }); 15 | 16 | return config; 17 | }, 18 | }; 19 | 20 | module.exports = nextConfig; 21 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /public/assets/OpenModelDB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenModelDB/open-model-database/ea668d61576ba22778649a69006ce226f0b0e4cd/public/assets/OpenModelDB.png -------------------------------------------------------------------------------- /public/assets/OpenModelDB@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenModelDB/open-model-database/ea668d61576ba22778649a69006ce226f0b0e4cd/public/assets/OpenModelDB@2x.png -------------------------------------------------------------------------------- /public/assets/OpenModelDB@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenModelDB/open-model-database/ea668d61576ba22778649a69006ce226f0b0e4cd/public/assets/OpenModelDB@3x.png -------------------------------------------------------------------------------- /public/assets/OpenModelDB@4x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenModelDB/open-model-database/ea668d61576ba22778649a69006ce226f0b0e4cd/public/assets/OpenModelDB@4x.png -------------------------------------------------------------------------------- /public/assets/OpenModelDB_Jelly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenModelDB/open-model-database/ea668d61576ba22778649a69006ce226f0b0e4cd/public/assets/OpenModelDB_Jelly.png -------------------------------------------------------------------------------- /public/assets/OpenModelDB_Jelly@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenModelDB/open-model-database/ea668d61576ba22778649a69006ce226f0b0e4cd/public/assets/OpenModelDB_Jelly@2x.png -------------------------------------------------------------------------------- /public/assets/OpenModelDB_Jelly@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenModelDB/open-model-database/ea668d61576ba22778649a69006ce226f0b0e4cd/public/assets/OpenModelDB_Jelly@3x.png -------------------------------------------------------------------------------- /public/assets/OpenModelDB_Jelly@4x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenModelDB/open-model-database/ea668d61576ba22778649a69006ce226f0b0e4cd/public/assets/OpenModelDB_Jelly@4x.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenModelDB/open-model-database/ea668d61576ba22778649a69006ce226f0b0e4cd/public/favicon.ico -------------------------------------------------------------------------------- /pyrightconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": [ 3 | "scripts" 4 | ], 5 | "exclude": [ 6 | "**/__pycache__" 7 | ], 8 | "ignore": [], 9 | "typeCheckingMode": "basic", 10 | "useLibraryCodeForTypes": false, 11 | "strictListInference": true, 12 | "strictDictionaryInference": true, 13 | "strictSetInference": true, 14 | "reportDuplicateImport": "warning", 15 | "reportImportCycles": "error", 16 | "reportIncompatibleVariableOverride": "error", 17 | "reportOverlappingOverload": "error", 18 | "reportPrivateImportUsage": "error", 19 | "reportUninitializedInstanceVariable": "error", 20 | "reportUnnecessaryCast": "error", 21 | "reportUnnecessaryComparison": "error", 22 | "reportUnnecessaryContains": "error", 23 | "reportUnnecessaryIsInstance": "error", 24 | // "reportUnnecessaryTypeIgnoreComment": "warning", 25 | "reportUnusedClass": "warning", 26 | "reportUnusedFunction": "warning", 27 | "reportUnusedImport": "warning", 28 | "reportUnusedVariable": "warning", 29 | } 30 | -------------------------------------------------------------------------------- /scripts/generate-api.ts: -------------------------------------------------------------------------------- 1 | // Generates a fake JSON api 2 | 3 | import fs from 'fs'; 4 | import { writeFile } from 'fs/promises'; 5 | import path from 'path'; 6 | import { fileApi } from '../src/lib/server/file-data'; 7 | 8 | const generateAPI = async () => { 9 | const API_DIR = 'out/api/v1'; 10 | fs.mkdirSync(API_DIR, { recursive: true }); 11 | 12 | const promises = Object.keys(fileApi).map(async (dataName) => { 13 | const data = await fileApi[dataName as keyof typeof fileApi].getAll(); 14 | const json = Object.fromEntries(data.entries()); 15 | await writeFile(path.join(API_DIR, `${dataName}.json`), JSON.stringify(json, null, 2)); 16 | }); 17 | await Promise.all(promises); 18 | }; 19 | 20 | generateAPI().catch((err) => { 21 | console.error(err); 22 | process.exit(1); 23 | }); 24 | -------------------------------------------------------------------------------- /scripts/generate-thumbnails.ts: -------------------------------------------------------------------------------- 1 | import { execSync } from 'child_process'; 2 | 3 | function getPythonCommand() { 4 | if (process.platform === 'win32') { 5 | return 'python'; 6 | } 7 | return 'python3'; 8 | } 9 | 10 | // we'll just run the python script 11 | execSync(`${getPythonCommand()} scripts/thumbnails.py`, { stdio: 'inherit' }); 12 | -------------------------------------------------------------------------------- /scripts/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2020", 4 | "module": "commonjs", 5 | "lib": ["es2020"], 6 | "strict": true, 7 | "esModuleInterop": true, 8 | "moduleResolution": "node", 9 | "resolveJsonModule": true, 10 | "incremental": true, 11 | }, 12 | "include": ["**/*.ts"], 13 | "exclude": ["node_modules"] 14 | } -------------------------------------------------------------------------------- /src/elements/components/card.module.scss: -------------------------------------------------------------------------------- 1 | @import '../util.module'; 2 | @import '../../styles/theme'; 3 | 4 | .card { 5 | @include themed using($t) { 6 | border: 1px solid t($t, $n-200, $n-800); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/elements/components/client.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { useIsClient } from '../../lib/hooks/use-is-client'; 3 | 4 | export function ClientOnly({ children }: React.PropsWithChildren) { 5 | const isClient = useIsClient(); 6 | return isClient ? <>{children} : null; 7 | } 8 | -------------------------------------------------------------------------------- /src/elements/components/custom-icons.tsx: -------------------------------------------------------------------------------- 1 | export function SearchIcon(props: React.SVGProps) { 2 | return ( 3 | 10 | 16 | 17 | ); 18 | } 19 | -------------------------------------------------------------------------------- /src/elements/components/editable-label.module.scss: -------------------------------------------------------------------------------- 1 | .editable { 2 | color: inherit; 3 | 4 | button { 5 | border: none; 6 | background: transparent; 7 | padding: 0; 8 | margin: 0; 9 | margin-left: 0.25em; 10 | font: inherit; 11 | line-height: inherit; 12 | display: inline; 13 | } 14 | 15 | svg { 16 | vertical-align: middle; 17 | } 18 | 19 | .icon { 20 | opacity: 0; 21 | } 22 | 23 | &:hover, 24 | button:focus { 25 | .icon { 26 | opacity: 1; 27 | } 28 | } 29 | } 30 | 31 | .input { 32 | color: inherit; 33 | font: inherit; 34 | padding-top: 0; 35 | padding-bottom: 0; 36 | line-height: 1; 37 | width: 100%; 38 | } 39 | 40 | .breakable { 41 | word-break: normal; 42 | overflow-wrap: anywhere; 43 | } 44 | -------------------------------------------------------------------------------- /src/elements/components/editable-markdown.module.scss: -------------------------------------------------------------------------------- 1 | .view { 2 | position: relative; 3 | 4 | & > button { 5 | position: absolute; 6 | top: 0; 7 | right: 0; 8 | opacity: 0.5; 9 | 10 | &:hover { 11 | opacity: 1; 12 | } 13 | } 14 | 15 | & > div { 16 | & > *:first-child { 17 | margin-top: 0 !important; 18 | } 19 | 20 | & > *:last-child { 21 | margin-bottom: 0 !important; 22 | } 23 | } 24 | } 25 | 26 | .textarea { 27 | color: inherit; 28 | font: inherit; 29 | width: 100%; 30 | min-height: 10em; 31 | resize: vertical; 32 | } 33 | -------------------------------------------------------------------------------- /src/elements/components/editable-tags.module.scss: -------------------------------------------------------------------------------- 1 | .tags { 2 | display: flex; 3 | flex-flow: row wrap; 4 | gap: 0.25rem; 5 | } 6 | 7 | .tag, 8 | .editButton, 9 | .menuItem { 10 | border-radius: 0.5rem; 11 | padding: 0.25rem 0.5rem; 12 | font-family: inherit; 13 | font-weight: 500; 14 | border: none; 15 | 16 | @media screen and (max-width: 1023px) { 17 | padding: 0.375rem 0.625rem; 18 | font-size: 0.875rem; 19 | } 20 | } 21 | 22 | .editButton { 23 | cursor: pointer; 24 | } 25 | 26 | .editContainer { 27 | padding: 0.5rem 0.75rem; 28 | 29 | h3 { 30 | margin: 0.5rem 0; 31 | } 32 | 33 | h3:first-child { 34 | margin-top: 0; 35 | } 36 | 37 | button { 38 | margin-right: 0.25rem; 39 | margin-bottom: 0.25rem; 40 | } 41 | } 42 | 43 | .menuItem { 44 | cursor: pointer; 45 | 46 | &[aria-disabled] { 47 | opacity: 0.5; 48 | user-select: none; 49 | cursor: default; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/elements/components/image-carousel-image.module.scss: -------------------------------------------------------------------------------- 1 | .caption { 2 | color: white; 3 | text-shadow: 0 0 5px black, 0 0 5px black; 4 | background: linear-gradient(-45deg, rgb(0 0 0 / 90%), rgb(0 0 0 / 60%)); 5 | right: -1px; 6 | bottom: -1px; 7 | text-align: right; 8 | } 9 | -------------------------------------------------------------------------------- /src/elements/components/image-carousel.module.scss: -------------------------------------------------------------------------------- 1 | .imageWrapper { 2 | @media screen and (max-width: 1023px) { 3 | border-radius: 0; 4 | margin: -1rem 0 0 -1rem; 5 | width: calc(100% + 2rem); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/elements/components/license-attributes.module.scss: -------------------------------------------------------------------------------- 1 | .dot { 2 | display: inline-block; 3 | width: 0.5em; 4 | height: 0.5em; 5 | border-radius: 100%; 6 | margin-bottom: 0.11em; 7 | margin-left: -1rem; 8 | margin-right: 0.5rem; 9 | } 10 | -------------------------------------------------------------------------------- /src/elements/components/link.module.scss: -------------------------------------------------------------------------------- 1 | .textLink { 2 | color: var(--link-color); 3 | 4 | &:hover { 5 | text-decoration: underline; 6 | } 7 | 8 | .externalIcon { 9 | margin-bottom: -0.125em; 10 | margin-left: 0.1em; 11 | margin-right: 0.1em; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/elements/components/model-card-grid.module.scss: -------------------------------------------------------------------------------- 1 | .grid { 2 | display: grid; 3 | gap: 1rem; 4 | grid-template-columns: repeat(4, minmax(0, 1fr)); 5 | 6 | @media screen and (max-width: 1280px) { 7 | grid-template-columns: repeat(3, minmax(0, 1fr)); 8 | } 9 | @media screen and (max-width: 896px) { 10 | grid-template-columns: repeat(2, minmax(0, 1fr)); 11 | } 12 | @media screen and (max-width: 600px) { 13 | grid-template-columns: repeat(1, minmax(0, 1fr)); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/elements/components/model-results.module.scss: -------------------------------------------------------------------------------- 1 | .controls { 2 | display: flex; 3 | align-items: center; 4 | 5 | @media screen and (max-width: 380px) { 6 | flex-direction: column; 7 | align-items: flex-start; 8 | } 9 | } 10 | 11 | .sortSelector { 12 | display: inline-flex; 13 | flex-direction: row; 14 | align-items: center; 15 | 16 | .button { 17 | border: none; 18 | font-family: inherit; 19 | color: inherit; 20 | position: relative; 21 | text-align: left; 22 | cursor: pointer; 23 | } 24 | 25 | .options { 26 | position: absolute; 27 | padding-left: 0; 28 | z-index: 40; 29 | list-style-type: none; 30 | overflow: hidden; 31 | min-width: 100%; 32 | right: 0; 33 | @media screen and (max-width: 380px) { 34 | right: auto; 35 | } 36 | } 37 | 38 | .sortIcon { 39 | margin-right: 0.25rem; 40 | 41 | &.asc { 42 | transform: scaleY(-1); 43 | } 44 | 45 | &.desc { 46 | transform: scaleY(1); 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/elements/components/scroll-to-top.module.scss: -------------------------------------------------------------------------------- 1 | .scrollToTop { 2 | // position 3 | position: fixed; 4 | z-index: 100; 5 | bottom: 0.5rem; 6 | right: 0.5rem; 7 | 8 | @media screen and (min-width: 1600px) { 9 | right: auto; 10 | left: calc(50vw + var(--max-page-width) / 2); 11 | bottom: 1rem; 12 | } 13 | 14 | // design 15 | cursor: pointer; 16 | border: none; 17 | background: none; 18 | border-radius: 100%; 19 | padding: 0.25rem; 20 | opacity: 0.3; 21 | transition: opacity 0.5s ease-in-out; 22 | 23 | @media screen and (max-width: 1600px) { 24 | opacity: 0.5; 25 | } 26 | 27 | &:hover { 28 | opacity: 1; 29 | transition-duration: 0.2s; 30 | } 31 | 32 | svg { 33 | width: 2rem; 34 | height: 2rem; 35 | border-radius: 100%; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/elements/components/scroll-to-top.tsx: -------------------------------------------------------------------------------- 1 | import { memo, useEffect, useState } from 'react'; 2 | import { BsFillArrowUpCircleFill } from 'react-icons/bs'; 3 | import style from './scroll-to-top.module.scss'; 4 | 5 | // eslint-disable-next-line react/display-name 6 | export const ScrollToTop = memo(() => { 7 | const [visible, setVisible] = useState(false); 8 | 9 | useEffect(() => { 10 | const toggleVisibility = () => { 11 | setVisible(window.pageYOffset > 600); 12 | }; 13 | window.addEventListener('scroll', toggleVisibility); 14 | return () => window.removeEventListener('scroll', toggleVisibility); 15 | }, []); 16 | 17 | return ( 18 | 29 | ); 30 | }); 31 | -------------------------------------------------------------------------------- /src/elements/components/switch.tsx: -------------------------------------------------------------------------------- 1 | import { Switch as HeadlessSwitch } from '@headlessui/react'; 2 | import style from './switch.module.scss'; 3 | 4 | export interface SwitchProps { 5 | value: boolean; 6 | onChange: (value: boolean) => void; 7 | srLabel?: string; 8 | } 9 | 10 | export function Switch({ value, onChange, srLabel }: SwitchProps) { 11 | return ( 12 | 17 | {srLabel && {srLabel}} 18 | 23 | ); 24 | } 25 | -------------------------------------------------------------------------------- /src/elements/markdown.module.scss: -------------------------------------------------------------------------------- 1 | .markdown { 2 | word-break: normal; 3 | overflow-wrap: anywhere; 4 | 5 | h2 { 6 | margin-top: 1.5em; 7 | margin-bottom: 1em; 8 | } 9 | 10 | h3 { 11 | margin-top: 1.75em; 12 | margin-bottom: 1em; 13 | } 14 | } 15 | 16 | .codeWrapper > code { 17 | background-color: rgb(29 31 33); // color of the theme we use for code blocks 18 | font-size: 90%; 19 | padding: 0.25em 0.5em; 20 | white-space: break-spaces !important; 21 | border-radius: 0.25em; 22 | line-height: inherit !important; 23 | } 24 | 25 | .linkableHeading { 26 | scroll-margin-top: 80px; 27 | 28 | a:hover { 29 | border-bottom: 1px dotted; 30 | 31 | &::after { 32 | content: '#'; 33 | opacity: 0.5; 34 | margin-left: 0.33em; 35 | position: absolute; 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/elements/page.module.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | background-color: transparent; 3 | } 4 | 5 | .main { 6 | max-width: var(--max-page-width); 7 | box-sizing: border-box; 8 | margin: auto; 9 | } 10 | 11 | .wrapper { 12 | transition: background-color linear 0.2s; 13 | } 14 | -------------------------------------------------------------------------------- /src/elements/page.tsx: -------------------------------------------------------------------------------- 1 | import { ReactNode } from 'react'; 2 | import { ScrollToTop } from './components/scroll-to-top'; 3 | import { Header } from './header'; 4 | import style from './page.module.scss'; 5 | 6 | interface PageContainerProps { 7 | children?: ReactNode; 8 | scrollToTop?: boolean; 9 | wrapper?: boolean; 10 | searchBar?: boolean; 11 | } 12 | export function PageContainer({ children, scrollToTop, wrapper, searchBar }: PageContainerProps) { 13 | return ( 14 |
15 |
16 | {wrapper ? ( 17 |
18 |
19 | {children} 20 |
21 |
22 | ) : ( 23 |
{children}
24 | )} 25 | {scrollToTop && } 26 |
27 | ); 28 | } 29 | -------------------------------------------------------------------------------- /src/elements/tag-view.module.scss: -------------------------------------------------------------------------------- 1 | .tagView { 2 | margin: 0.5em 0; 3 | } 4 | 5 | .iconButton { 6 | color: inherit; 7 | font: inherit; 8 | line-height: inherit; 9 | border: none; 10 | padding: 0; 11 | margin: 0; 12 | background: none; 13 | cursor: pointer; 14 | opacity: 0.5; 15 | 16 | svg { 17 | vertical-align: middle; 18 | } 19 | 20 | &:hover { 21 | opacity: 1; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/elements/util.module.scss: -------------------------------------------------------------------------------- 1 | @mixin h-stack { 2 | display: flex; 3 | align-items: center; 4 | flex-flow: row nowrap; 5 | } 6 | 7 | @mixin v-stack { 8 | display: flex; 9 | align-items: center; 10 | flex-flow: column nowrap; 11 | } 12 | 13 | .spacer { 14 | flex-grow: 1; 15 | } 16 | 17 | @mixin transition($duration: 0.5s, $property: color background) { 18 | transition-delay: 0s; 19 | transition-duration: $duration; 20 | transition-property: $property; 21 | /* stylelint-disable-next-line declaration-block-no-redundant-longhand-properties */ 22 | transition-timing-function: ease-in-out; 23 | } 24 | 25 | @mixin normal-button { 26 | padding: 0; 27 | margin: 0; 28 | color: inherit; 29 | font-size: inherit; 30 | font-weight: inherit; 31 | font-family: inherit; 32 | text-align: start; 33 | background: none; 34 | border: none; 35 | line-height: inherit; 36 | } 37 | -------------------------------------------------------------------------------- /src/lib/color-scheme.ts: -------------------------------------------------------------------------------- 1 | export type ColorScheme = 'dark' | 'light'; 2 | 3 | function setColorScheme(value: ColorScheme) { 4 | if (typeof document !== 'undefined' && typeof window !== 'undefined') { 5 | document.documentElement.dataset['theme'] = value; 6 | localStorage.setItem('theme', value); 7 | } 8 | } 9 | 10 | export function toggleColorScheme() { 11 | if (typeof document !== 'undefined' && typeof window !== 'undefined') { 12 | const current = document.documentElement.dataset['theme']; 13 | 14 | if (current === 'light') { 15 | setColorScheme('dark'); 16 | } else if (current === 'dark') { 17 | setColorScheme('light'); 18 | } else { 19 | const isDark = window.matchMedia('(prefers-color-scheme: dark)').matches; 20 | setColorScheme(isDark ? 'light' : 'dark'); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/lib/data-session.ts: -------------------------------------------------------------------------------- 1 | export const createMapFromSessionStorage = (key: string, map = new Map()): Map => { 2 | const cachedItem = sessionStorage.getItem(key); 3 | if (cachedItem) { 4 | const cachedMap = new Map(JSON.parse(cachedItem || '[]') as []); 5 | for (const id of cachedMap.keys()) { 6 | // Only add the value if it doesn't already exist 7 | // AKA only add user-made data, update everything else from api 8 | if (!map.has(id)) { 9 | const value = cachedMap.get(id); 10 | if (value) { 11 | map.set(id, value); 12 | } 13 | } 14 | } 15 | } 16 | window.addEventListener('beforeunload', () => { 17 | sessionStorage.setItem(key, JSON.stringify([...map])); 18 | }); 19 | return map; 20 | }; 21 | -------------------------------------------------------------------------------- /src/lib/docs/doc.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Paths are guaranteed to before of the form `dir1/dir2/file.md` for n-many directories. 3 | */ 4 | export type DocPagePath = string & { readonly DocPagePath: never }; 5 | 6 | export interface Doc { 7 | title: string; 8 | subheadings: string[]; 9 | markdown: string; 10 | } 11 | 12 | export function docPathToSlug(path: DocPagePath): string { 13 | return path.replace(/\.md$/, '').replace(/(?:^|\/)index$/, ''); 14 | } 15 | export function docPathToLink(path: DocPagePath): string { 16 | return `/docs/${docPathToSlug(path)}`; 17 | } 18 | 19 | export function textToLinkId(text: string): string { 20 | return text 21 | .trim() 22 | .replace(/[^a-zA-Z0-9]/g, '-') 23 | .toLowerCase(); 24 | } 25 | -------------------------------------------------------------------------------- /src/lib/docs/manifest.ts: -------------------------------------------------------------------------------- 1 | export interface Manifest { 2 | routes: Route[]; 3 | } 4 | 5 | export type Route = FileRoute | DirectoryRoute; 6 | 7 | export interface FileRoute { 8 | /** 9 | * The name of the markdown file of this route. 10 | * 11 | * The name is not allowed to include directories or path traversal. 12 | */ 13 | file: string; 14 | /** 15 | * Whether the `h2` sub headings of the file should be displayed as sub routes in the side bar. 16 | */ 17 | subHeadings?: true; 18 | } 19 | export interface DirectoryRoute { 20 | /** 21 | * The name of the directory of all files of this route. 22 | * 23 | * The name is not allowed to include directories or path traversal and must end with a `/`. 24 | */ 25 | directory: string; 26 | title?: string; 27 | routes: Route[]; 28 | } 29 | -------------------------------------------------------------------------------- /src/lib/hooks/use-architectures.ts: -------------------------------------------------------------------------------- 1 | import { Arch, ArchId } from '../schema'; 2 | import { STATIC_ARCH_DATA } from '../static-data'; 3 | 4 | export interface UseArchitectures { 5 | readonly archData: ReadonlyMap; 6 | } 7 | 8 | const result: UseArchitectures = { 9 | archData: STATIC_ARCH_DATA, 10 | }; 11 | 12 | export function useArchitectures(): UseArchitectures { 13 | return result; 14 | } 15 | -------------------------------------------------------------------------------- /src/lib/hooks/use-current-path.ts: -------------------------------------------------------------------------------- 1 | import { useRouter } from 'next/router'; 2 | import { useMemo } from 'react'; 3 | import { SITE_URL } from '../site-data'; 4 | 5 | /** 6 | * Returns the pathname of the current route. 7 | * 8 | * In contrast to `useRoute().asPath`, the returned string will be consistent on the client and the server. 9 | * In practice, this means that the returned path won't have a hash. 10 | */ 11 | export function useCurrentPath(): string { 12 | const { asPath } = useRouter(); 13 | 14 | return useMemo(() => new URL(asPath, SITE_URL).pathname, [asPath]); 15 | } 16 | -------------------------------------------------------------------------------- /src/lib/hooks/use-current.ts: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from 'react'; 2 | import { CollectionApi, DBApi } from '../data-api'; 3 | import { addUpdateListener } from '../web-api'; 4 | 5 | type Singular = S extends `${infer T}s` ? T : S; 6 | type Type = Singular; 7 | type IdOf = DBApi[`${T}s`] extends CollectionApi ? Id : never; 8 | type ValueOf = DBApi[`${T}s`] extends CollectionApi ? Value : never; 9 | 10 | export function useCurrent( 11 | api: DBApi | undefined, 12 | type: T, 13 | id: IdOf, 14 | value: ValueOf 15 | ): ValueOf { 16 | const [current, setCurrent] = useState(value); 17 | 18 | useEffect(() => { 19 | if (api) { 20 | return addUpdateListener(() => { 21 | const collection = api[`${type}s`] as CollectionApi, ValueOf>; 22 | collection.get(id).then(setCurrent, (e) => console.error(e)); 23 | }); 24 | } 25 | }, [api, id, type]); 26 | 27 | return current; 28 | } 29 | -------------------------------------------------------------------------------- /src/lib/hooks/use-device-pixel-ratio.tsx: -------------------------------------------------------------------------------- 1 | import { createContext, useContext, useEffect, useState } from 'react'; 2 | 3 | const DevicePixelRatioContext = createContext(1); 4 | 5 | export function DevicePixelRatioProvider({ children }: React.PropsWithChildren) { 6 | const [value, setValue] = useState(1); 7 | 8 | useEffect(() => { 9 | setValue(window.devicePixelRatio); 10 | }, []); 11 | 12 | useEffect(() => { 13 | const update = () => setValue(window.devicePixelRatio); 14 | const mediaMatcher = window.matchMedia(`screen and (resolution: ${value}dppx)`); 15 | mediaMatcher.addEventListener('change', update); 16 | 17 | return () => { 18 | mediaMatcher.removeEventListener('change', update); 19 | }; 20 | }, [value]); 21 | 22 | return {children}; 23 | } 24 | 25 | export const useDevicePixelRatio = (): number => { 26 | return useContext(DevicePixelRatioContext); 27 | }; 28 | -------------------------------------------------------------------------------- /src/lib/hooks/use-is-client.ts: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from 'react'; 2 | 3 | export function useIsClient(): boolean { 4 | const [isClient, setIsClient] = useState(false); 5 | 6 | useEffect(() => setIsClient(true), []); 7 | 8 | return isClient; 9 | } 10 | -------------------------------------------------------------------------------- /src/lib/hooks/use-is-touch.ts: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from 'react'; 2 | 3 | function isTouchDevice() { 4 | return 'ontouchstart' in window || navigator.maxTouchPoints > 0; 5 | } 6 | 7 | export function useIsTouch(initial = false): boolean { 8 | const [isTouch, setIsTouch] = useState(initial); 9 | 10 | useEffect(() => setIsTouch(isTouchDevice()), []); 11 | 12 | return isTouch; 13 | } 14 | -------------------------------------------------------------------------------- /src/lib/hooks/use-memo-delay.ts: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from 'react'; 2 | 3 | export function useMemoDelay(fn: () => T, delay: number): T { 4 | const [value, setValue] = useState(fn); 5 | 6 | useEffect(() => { 7 | let complete = false; 8 | const id = setTimeout(() => { 9 | complete = true; 10 | setValue(fn); 11 | }, delay); 12 | return () => { 13 | if (!complete) { 14 | clearTimeout(id); 15 | } 16 | }; 17 | }, [fn, delay]); 18 | 19 | return value; 20 | } 21 | -------------------------------------------------------------------------------- /src/lib/hooks/use-tags.ts: -------------------------------------------------------------------------------- 1 | import { Tag, TagCategory, TagCategoryId, TagId } from '../schema'; 2 | import { STATIC_TAG_CATEGORY_DATA, STATIC_TAG_DATA } from '../static-data'; 3 | import { getTagCategoryOrder } from '../util'; 4 | 5 | export interface UseTags { 6 | readonly tagData: ReadonlyMap; 7 | readonly tagCategoryData: ReadonlyMap; 8 | readonly categoryOrder: readonly (readonly [TagCategoryId, TagCategory])[]; 9 | } 10 | 11 | const result: UseTags = { 12 | tagData: STATIC_TAG_DATA, 13 | tagCategoryData: STATIC_TAG_CATEGORY_DATA, 14 | categoryOrder: getTagCategoryOrder(STATIC_TAG_CATEGORY_DATA), 15 | }; 16 | 17 | export function useTags(): UseTags { 18 | return result; 19 | } 20 | -------------------------------------------------------------------------------- /src/lib/hooks/use-tooltip.module.scss: -------------------------------------------------------------------------------- 1 | .tooltip { 2 | max-width: calc(min(90vw, 500px)); 3 | backdrop-filter: saturate(200%) blur(8px); 4 | z-index: 1000; 5 | padding: 0.5rem 0.75rem; 6 | --rt-opacity: 1; 7 | 8 | box-shadow: 0 0.5rem 0.75rem rgb(0 0 0 / 30%); 9 | border-radius: 0.5rem; 10 | 11 | .markdown > *:first-child { 12 | margin-top: 0; 13 | } 14 | 15 | .markdown > *:last-child { 16 | margin-bottom: 0; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/lib/hooks/use-update-model.ts: -------------------------------------------------------------------------------- 1 | import { useMemo } from 'react'; 2 | import { DBApi } from '../data-api'; 3 | import { Model, ModelId } from '../schema'; 4 | import { noop } from '../util'; 5 | 6 | export type UpdateModelPropertyFn = (key: K, value: Model[K]) => void; 7 | 8 | export interface UseUpdateModel { 9 | updateModelProperty: UpdateModelPropertyFn; 10 | } 11 | 12 | export function useUpdateModel(webApi: DBApi | undefined, modelId: ModelId): UseUpdateModel { 13 | const updateModelProperty = useMemo(() => { 14 | if (!webApi) return noop; 15 | return (key: K, value: Model[K]) => { 16 | const fn = async () => { 17 | const model = await webApi.models.get(modelId); 18 | model[key] = value; 19 | await webApi.models.update([[modelId, model]]); 20 | }; 21 | fn().catch((e) => console.error(e)); 22 | }; 23 | }, [webApi, modelId]); 24 | 25 | return { updateModelProperty }; 26 | } 27 | -------------------------------------------------------------------------------- /src/lib/hooks/use-users.ts: -------------------------------------------------------------------------------- 1 | import { User, UserId } from '../schema'; 2 | import { STATIC_USER_DATA } from '../static-data'; 3 | 4 | export interface UseUsers { 5 | readonly userData: ReadonlyMap; 6 | } 7 | 8 | const result: UseUsers = { 9 | userData: STATIC_USER_DATA, 10 | }; 11 | 12 | export function useUsers(): UseUsers { 13 | return result; 14 | } 15 | -------------------------------------------------------------------------------- /src/lib/model-files.ts: -------------------------------------------------------------------------------- 1 | export async function hashSha256(input: ArrayBufferView | ArrayBuffer): Promise { 2 | const sha256 = await crypto.subtle.digest('SHA-256', input); 3 | const hashArray = Array.from(new Uint8Array(sha256)); 4 | const hashHex = hashArray.map((b) => b.toString(16).padStart(2, '0')).join(''); 5 | return hashHex.toLowerCase(); 6 | } 7 | -------------------------------------------------------------------------------- /src/lib/site-data.ts: -------------------------------------------------------------------------------- 1 | export const SITE_URL = 'https://openmodeldb.info'; 2 | 3 | export const IS_DEPLOYED = typeof location !== 'undefined' && location.host === 'openmodeldb.info'; 4 | -------------------------------------------------------------------------------- /src/lib/static-data.ts: -------------------------------------------------------------------------------- 1 | import architectures from '../../data/architectures.json'; 2 | import tagCategories from '../../data/tag-categories.json'; 3 | import tags from '../../data/tags.json'; 4 | import users from '../../data/users.json'; 5 | import { Arch, ArchId, Tag, TagCategory, TagCategoryId, TagId, User, UserId } from './schema'; 6 | 7 | export const STATIC_TAG_DATA: ReadonlyMap = new Map(Object.entries(tags) as [TagId, Tag][]); 8 | 9 | export const STATIC_TAG_CATEGORY_DATA: ReadonlyMap = new Map( 10 | Object.entries(tagCategories) as [TagCategoryId, TagCategory][] 11 | ); 12 | 13 | export const STATIC_USER_DATA: ReadonlyMap = new Map(Object.entries(users) as [UserId, User][]); 14 | 15 | export const STATIC_ARCH_DATA: ReadonlyMap = new Map(Object.entries(architectures) as [ArchId, Arch][]); 16 | -------------------------------------------------------------------------------- /src/pages/_app.tsx: -------------------------------------------------------------------------------- 1 | import '../styles/globals.scss'; 2 | import 'react-tooltip/dist/react-tooltip.css'; 3 | import { DevicePixelRatioProvider } from '../lib/hooks/use-device-pixel-ratio'; 4 | import { TooltipProvider } from '../lib/hooks/use-tooltip'; 5 | import { WebApiProvider } from '../lib/hooks/use-web-api'; 6 | import type { AppProps } from 'next/app'; 7 | 8 | export default function App({ Component, pageProps }: AppProps) { 9 | return ( 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | ); 18 | } 19 | -------------------------------------------------------------------------------- /src/pages/_document.tsx: -------------------------------------------------------------------------------- 1 | import { Head, Html, Main, NextScript } from 'next/document'; 2 | import Script from 'next/script'; 3 | 4 | // This little script will read the last theme from localStorage and assign it to the HTML element. 5 | // This ensure that the website is always displayed with the correct them. 6 | const themeInit = 7 | `document.documentElement.dataset.theme=` + 8 | `localStorage.getItem('theme')` + 9 | `||` + 10 | `(window.matchMedia('(prefers-color-scheme:dark)').matches?'dark':'light')`; 11 | 12 | export default function Document() { 13 | return ( 14 | 15 | 16 | 17 |
18 | 19 | 25 | 26 | 27 | ); 28 | } 29 | -------------------------------------------------------------------------------- /src/pages/api/architectures.ts: -------------------------------------------------------------------------------- 1 | import { handleJsonApi } from '../../lib/server/api-impl'; 2 | import { fileApi } from '../../lib/server/file-data'; 3 | 4 | export default handleJsonApi(fileApi.architectures); 5 | -------------------------------------------------------------------------------- /src/pages/api/collections.ts: -------------------------------------------------------------------------------- 1 | import { handleJsonApi } from '../../lib/server/api-impl'; 2 | import { fileApi } from '../../lib/server/file-data'; 3 | 4 | export default handleJsonApi(fileApi.collections); 5 | -------------------------------------------------------------------------------- /src/pages/api/fetch.ts: -------------------------------------------------------------------------------- 1 | import { NextApiRequest, NextApiResponse } from 'next'; 2 | 3 | interface Body { 4 | url: string; 5 | } 6 | 7 | export default async function fetchReq(req: NextApiRequest, res: NextApiResponse) { 8 | try { 9 | const body = JSON.parse(req.body as string) as Body; 10 | const text = await fetch(body.url).then((res) => res.text()); 11 | res.status(200).json({ ok: true, data: text }); 12 | } catch (err) { 13 | res.status(500).json({ ok: false, error: String(err) }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/pages/api/models.ts: -------------------------------------------------------------------------------- 1 | import { handleJsonApi } from '../../lib/server/api-impl'; 2 | import { fileApi } from '../../lib/server/file-data'; 3 | 4 | export default handleJsonApi(fileApi.models); 5 | -------------------------------------------------------------------------------- /src/pages/api/save-model.ts: -------------------------------------------------------------------------------- 1 | import { mkdir, writeFile } from 'fs/promises'; 2 | import { NextApiRequest, NextApiResponse } from 'next'; 3 | import path from 'path'; 4 | import { DATA_DIR } from '../../lib/server/file-data'; 5 | 6 | export default async function handler(req: NextApiRequest, res: NextApiResponse) { 7 | try { 8 | const dir = path.join(DATA_DIR, 'model-files'); 9 | await mkdir(dir, { recursive: true }); 10 | 11 | const name = String(req.query.name); 12 | await writeFile(path.join(DATA_DIR, 'model-files', name), req); 13 | res.status(200).json({ status: 'ok' }); 14 | } catch (err) { 15 | console.error(err); 16 | 17 | let message = String(err); 18 | if (err instanceof Error) { 19 | message += `\n${String(err.stack)}`; 20 | } 21 | res.status(500).json({ error: message }); 22 | } 23 | } 24 | 25 | export const config = { 26 | api: { 27 | bodyParser: false, 28 | }, 29 | }; 30 | -------------------------------------------------------------------------------- /src/pages/api/tag-categories.ts: -------------------------------------------------------------------------------- 1 | import { handleJsonApi } from '../../lib/server/api-impl'; 2 | import { fileApi } from '../../lib/server/file-data'; 3 | 4 | export default handleJsonApi(fileApi.tagCategories); 5 | -------------------------------------------------------------------------------- /src/pages/api/tags.ts: -------------------------------------------------------------------------------- 1 | import { handleJsonApi } from '../../lib/server/api-impl'; 2 | import { fileApi } from '../../lib/server/file-data'; 3 | 4 | export default handleJsonApi(fileApi.tags); 5 | -------------------------------------------------------------------------------- /src/pages/api/users.ts: -------------------------------------------------------------------------------- 1 | import { handleJsonApi } from '../../lib/server/api-impl'; 2 | import { fileApi } from '../../lib/server/file-data'; 3 | 4 | export default handleJsonApi(fileApi.users); 5 | -------------------------------------------------------------------------------- /src/pages/models/OMDB_ADDMODEL_DUMMY.tsx: -------------------------------------------------------------------------------- 1 | import { GetStaticProps } from 'next'; 2 | import { useEffect, useState } from 'react'; 3 | import { Model, ModelId } from '../../lib/schema'; 4 | import ModelsPage from './[id]'; 5 | 6 | const modelId = 'OMDB_ADDMODEL_DUMMY' as ModelId; 7 | 8 | export default function Page() { 9 | const [model, setModel] = useState(null); 10 | 11 | useEffect(() => { 12 | const model = JSON.parse(sessionStorage.getItem('dummy-model') ?? '{}') as Model; 13 | setModel(model); 14 | }, []); 15 | 16 | if (!model) return null; 17 | 18 | return ( 19 |
20 | 27 |
28 | ); 29 | } 30 | 31 | export const getStaticProps: GetStaticProps = () => { 32 | return { props: {} }; 33 | }; 34 | -------------------------------------------------------------------------------- /src/stories/Link.stories.ts: -------------------------------------------------------------------------------- 1 | import { Link } from '../elements/components/link'; 2 | import type { Meta, StoryObj } from '@storybook/react'; 3 | 4 | const meta: Meta = { 5 | title: 'Components/Link', 6 | component: Link, 7 | }; 8 | 9 | export default meta; 10 | type Story = StoryObj; 11 | 12 | export const Internal: Story = { 13 | args: { 14 | href: 'openmodeldb.info', 15 | children: 'Open Model DB', 16 | external: false, 17 | }, 18 | }; 19 | 20 | export const External: Story = { 21 | args: { 22 | ...Internal.args, 23 | external: true, 24 | }, 25 | }; 26 | -------------------------------------------------------------------------------- /src/stories/Switch.stories.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from 'react'; 2 | import { Switch } from '../elements/components/switch'; 3 | import type { Meta, StoryObj } from '@storybook/react'; 4 | 5 | const meta: Meta = { 6 | title: 'Components/Switch', 7 | component: Switch, 8 | }; 9 | 10 | export default meta; 11 | type Story = StoryObj; 12 | 13 | export const Primary: Story = { 14 | render: (args) => { 15 | const [state, setState] = useState(true); 16 | useEffect(() => setState(args.value), [args.value]); 17 | 18 | return ( 19 | 24 | ); 25 | }, 26 | }; 27 | -------------------------------------------------------------------------------- /src/stories/TextLink.stories.ts: -------------------------------------------------------------------------------- 1 | import { TextLink } from '../elements/components/link'; 2 | import type { Meta, StoryObj } from '@storybook/react'; 3 | 4 | const meta: Meta = { 5 | title: 'Components/TextLink', 6 | component: TextLink, 7 | }; 8 | 9 | export default meta; 10 | type Story = StoryObj; 11 | 12 | export const Internal: Story = { 13 | args: { 14 | href: 'openmodeldb.info', 15 | children: 'Open Model DB', 16 | external: false, 17 | }, 18 | }; 19 | 20 | export const External: Story = { 21 | args: { 22 | ...Internal.args, 23 | external: true, 24 | }, 25 | }; 26 | -------------------------------------------------------------------------------- /src/styles/colors.scss: -------------------------------------------------------------------------------- 1 | // LCh = 36 60 300 2 | $accent: #4d48a9; // 600 3 | $accent-50: #feeaff; 4 | $accent-100: #f8e4ff; 5 | $accent-200: #e9d6ff; 6 | $accent-300: #d8c5ff; 7 | $accent-400: #a394ff; 8 | $accent-500: #6e64ca; 9 | $accent-600: #4d48a9; 10 | $accent-700: #323391; 11 | $accent-800: #031c74; 12 | $accent-900: #000c60; 13 | 14 | // LCh = 36 60 300 15 | $accent-fade: #575170; // 600 16 | $accent-fade-50: #fdf4ff; 17 | $accent-fade-100: #f7efff; 18 | $accent-fade-200: #e9e0ff; 19 | $accent-fade-300: #d8cff5; 20 | $accent-fade-400: #a59ec1; 21 | $accent-fade-500: #746e8f; 22 | $accent-fade-600: #575170; 23 | $accent-fade-700: #413c5a; 24 | $accent-fade-800: #282440; 25 | $accent-fade-900: #17142f; /// #111018 26 | 27 | $fade-50: #f9f8ff; 28 | $fade-100: #f3f2fd; 29 | $fade-200: #e5e4ee; 30 | $fade-300: #d4d3dd; 31 | $fade-400: #a2a1ab; 32 | $fade-500: #72717a; 33 | $fade-600: #55545c; 34 | $fade-700: #403f47; 35 | $fade-800: #28272f; 36 | $fade-900: #17171e; 37 | 38 | // easy access to tailwind's neutral palette 39 | $n-50: #fafafa; 40 | $n-100: #f5f5f5; 41 | $n-200: #e5e5e5; 42 | $n-300: #d4d4d4; 43 | $n-400: #a3a3a3; 44 | $n-500: #737373; 45 | $n-600: #525252; 46 | $n-700: #404040; 47 | $n-800: #262626; 48 | $n-900: #171717; 49 | -------------------------------------------------------------------------------- /src/styles/theme.scss: -------------------------------------------------------------------------------- 1 | // re-export colors for easy access 2 | @import './colors'; 3 | 4 | @mixin themed { 5 | :root:not([data-theme='dark']) #{if(&, '&', '')} { 6 | @content (light); 7 | } 8 | 9 | :root[data-theme='dark'] #{if(&, '&', '')} { 10 | @content (dark); 11 | } 12 | } 13 | 14 | @function t($theme, $light, $dark) { 15 | @if $theme == dark { 16 | @return $dark; 17 | } 18 | @if $theme == light { 19 | @return $light; 20 | } 21 | @error "#{$theme} is not a valid theme. Only light and dark mode are supported."; 22 | } 23 | -------------------------------------------------------------------------------- /tests/search/condition.test.ts: -------------------------------------------------------------------------------- 1 | import { Condition, compileCondition } from '../../src/lib/search/logical-condition'; 2 | 3 | const { variable, and, or, not, stringify } = Condition; 4 | 5 | describe('compileCondition', () => { 6 | const [a, b, c, d] = [...'abcd'].map(variable); 7 | const conditions: Condition[] = [ 8 | a, 9 | not(a), 10 | not(not(not(not(a)))), 11 | and(), 12 | and(a), 13 | and(a, a), 14 | and(a, b, c, a, b, c), 15 | or(), 16 | or(a), 17 | or(a, a), 18 | or(a, b, c, a, b, c), 19 | and(a, or(b), and(d), or(and(a))), 20 | and(a, not(a)), 21 | or(a, not(a)), 22 | 23 | or(a, not(b), false), 24 | or(a, not(b), true), 25 | and(a, not(b), false), 26 | and(a, not(b), true), 27 | ]; 28 | 29 | for (const c of conditions) { 30 | test(stringify(c), () => { 31 | expect(compileCondition(c)).toMatchSnapshot(); 32 | }); 33 | } 34 | }); 35 | -------------------------------------------------------------------------------- /tests/search/token.test.ts: -------------------------------------------------------------------------------- 1 | import { tokenize } from '../../src/lib/search/token'; 2 | 3 | describe('tokenize', () => { 4 | const queries = [ 5 | '', 6 | 'foo', 7 | 'fooBar', 8 | 'FOO_BAR', 9 | 'Foo Bar', 10 | 'FooBar', 11 | '1x-AnimeUndeint-Compact', 12 | '1x-BleedOut-Compact', 13 | '1x-BroadcastToStudioLite', 14 | '1x-HurrDeblur-SuperUltraCompact', 15 | '1x-SpongeBC1-Lite', 16 | '2x-ATLA-KORRA', 17 | '2x-Bubble-AnimeScale-SwinIR-Small-v1', 18 | '2x-Byousoku-5-Centimeter', 19 | '2x-GT-evA', 20 | '2x-Loyaldk-LitePonyV2-0', 21 | '2x-SHARP-ANIME-V2', 22 | '2x-sudo-RealESRGAN-Dropout', 23 | '4x-BooruGan-650k', 24 | '2x-Waifaux-NL3-SuperLite', 25 | '1x-BaldrickVHSFixV0-2', 26 | '1x-BCGone-DetailedV2-40-60', 27 | '1x-BSChroma', 28 | '1x-GainRESV3-Natural', 29 | '1x-MangaJPEGLQ', 30 | '1x-ITF-SkinDiffDDS-v1', 31 | '1x-DEDXT', 32 | ]; 33 | 34 | for (const query of queries) { 35 | test(query, () => { 36 | expect(tokenize(query)).toMatchSnapshot(); 37 | }); 38 | } 39 | }); 40 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "noEmit": true, 10 | "esModuleInterop": true, 11 | "module": "esnext", 12 | "moduleResolution": "node", 13 | "resolveJsonModule": true, 14 | "isolatedModules": true, 15 | "jsx": "preserve", 16 | "incremental": true, 17 | "plugins": [{"name": "typescript-plugin-css-modules"}] 18 | }, 19 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", "src/"], 20 | "exclude": ["node_modules"] 21 | } 22 | --------------------------------------------------------------------------------