# jantic/deoldify architecture

> Architecture diagram of the GitHub repository jantic/deoldify, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jantic/deoldify
- Repository: https://github.com/jantic/deoldify

## Overview

DeOldify is a deep-learning image and film colorization project. Users submit still images for artistic or stable colorization, or video that is split into frames, colorized frame-by-frame, and rebuilt. Training support includes image-to-image GAN/NoGAN workflows; fastai supplies the underlying data, vision, and learning framework. The README also describes pretrained-model usage and video stability through NoGAN training. The excerpts show the visualization entry point and video tools, but not all filter, generator, or training implementations, so uncertain call wiring is omitted.

Main entry points: [`deoldify/visualize.py`](https://github.com/jantic/deoldify/blob/master/deoldify/visualize.py) (Image visualizer), [`deoldify/dataset.py`](https://github.com/jantic/deoldify/blob/master/deoldify/dataset.py) (Training datasets), [`deoldify/generators.py`](https://github.com/jantic/deoldify/blob/master/deoldify/generators.py) (Generator models), [`fastai/basic_train.py`](https://github.com/jantic/deoldify/blob/master/fastai/basic_train.py) (Learner and training)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_render["Colorization workflow"]
  node_visualizer["Image visualizer<br/>[visualize.py]"]
  node_video["Video colorizer<br/>[visualize.py]"]
  node_filters["Colorization filters<br/>[filters.py]"]
  node_save["Result saving<br/>[save.py]"]
end

subgraph group_models["Models and training"]
  node_dataset["Training datasets<br/>[dataset.py]"]
  node_generator["Generator models<br/>[generators.py]"]
  node_unet["U-Net architecture<br/>[unet.py]"]
  node_layers["Custom layers<br/>[layers.py]"]
  node_augment["Augmentations<br/>[augs.py]"]
  node_critic["GAN critics<br/>[critics.py]"]
  node_loss["Training losses<br/>[loss.py]"]
end

subgraph group_framework["Learning framework"]
  node_learner["Learner and training<br/>[basic_train.py]"]
  node_visiondata["Vision data pipeline<br/>[data.py]"]
  node_visionimage["Image transforms<br/>[image.py]"]
  node_trainloop["Training loop<br/>[train.py]"]
  node_callbacks["Training callbacks<br/>[callback.py]"]
end

subgraph group_evaluation["Evaluation"]
  node_fidscore["FID scoring<br/>[fid_score.py]"]
  node_inception["Inception features<br/>[inception.py]"]
end

node_user(("Image/video user"))
node_ffmpeg["FFmpeg"]

node_user -->|"submits image"| node_visualizer
node_user -->|"submits video"| node_video
node_visualizer -->|"applies filter"| node_filters
node_video -->|"colorizes frames"| node_visualizer
node_video -->|"extracts and rebuilds"| node_ffmpeg
node_visualizer -->|"saves result"| node_save
node_dataset -->|"provides data"| node_visiondata
node_visiondata -->|"transforms images"| node_visionimage
node_learner -->|"runs training"| node_trainloop
node_learner -->|"dispatches callbacks"| node_callbacks
node_generator -->|"uses architecture"| node_unet
node_generator -->|"uses layers"| node_layers
node_critic -->|"uses layers"| node_layers
node_dataset -->|"uses augmentation"| node_augment
node_fidscore -->|"extracts features"| node_inception

click node_visualizer "https://github.com/jantic/deoldify/blob/master/deoldify/visualize.py"
click node_video "https://github.com/jantic/deoldify/blob/master/deoldify/visualize.py"
click node_filters "https://github.com/jantic/deoldify/blob/master/deoldify/filters.py"
click node_save "https://github.com/jantic/deoldify/blob/master/deoldify/save.py"
click node_dataset "https://github.com/jantic/deoldify/blob/master/deoldify/dataset.py"
click node_generator "https://github.com/jantic/deoldify/blob/master/deoldify/generators.py"
click node_unet "https://github.com/jantic/deoldify/blob/master/deoldify/unet.py"
click node_layers "https://github.com/jantic/deoldify/blob/master/deoldify/layers.py"
click node_augment "https://github.com/jantic/deoldify/blob/master/deoldify/augs.py"
click node_critic "https://github.com/jantic/deoldify/blob/master/deoldify/critics.py"
click node_loss "https://github.com/jantic/deoldify/blob/master/deoldify/loss.py"
click node_learner "https://github.com/jantic/deoldify/blob/master/fastai/basic_train.py"
click node_visiondata "https://github.com/jantic/deoldify/blob/master/fastai/vision/data.py"
click node_visionimage "https://github.com/jantic/deoldify/blob/master/fastai/vision/image.py"
click node_trainloop "https://github.com/jantic/deoldify/blob/master/fastai/train.py"
click node_callbacks "https://github.com/jantic/deoldify/blob/master/fastai/callback.py"
click node_fidscore "https://github.com/jantic/deoldify/blob/master/fid/fid_score.py"
click node_inception "https://github.com/jantic/deoldify/blob/master/fid/inception.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_visualizer,node_video,node_filters,node_save,node_user toneBlue
class node_dataset,node_generator,node_unet,node_layers,node_augment,node_critic,node_loss toneAmber
class node_learner,node_visiondata,node_visionimage,node_trainloop,node_callbacks toneMint
class node_fidscore,node_inception toneRose
class node_ffmpeg toneIndigo
```

## Components

### Colorization workflow

- [Image visualizer](https://github.com/jantic/deoldify/blob/master/deoldify/visualize.py): `deoldify/visualize.py`
- [Video colorizer](https://github.com/jantic/deoldify/blob/master/deoldify/visualize.py): `deoldify/visualize.py`
- [Colorization filters](https://github.com/jantic/deoldify/blob/master/deoldify/filters.py): `deoldify/filters.py`
- [Result saving](https://github.com/jantic/deoldify/blob/master/deoldify/save.py): `deoldify/save.py`

### Models and training

- [Training datasets](https://github.com/jantic/deoldify/blob/master/deoldify/dataset.py): `deoldify/dataset.py`
- [Generator models](https://github.com/jantic/deoldify/blob/master/deoldify/generators.py): `deoldify/generators.py`
- [U-Net architecture](https://github.com/jantic/deoldify/blob/master/deoldify/unet.py): `deoldify/unet.py`
- [Custom layers](https://github.com/jantic/deoldify/blob/master/deoldify/layers.py): `deoldify/layers.py`
- [Augmentations](https://github.com/jantic/deoldify/blob/master/deoldify/augs.py): `deoldify/augs.py`
- [GAN critics](https://github.com/jantic/deoldify/blob/master/deoldify/critics.py): `deoldify/critics.py`
- [Training losses](https://github.com/jantic/deoldify/blob/master/deoldify/loss.py): `deoldify/loss.py`

### Learning framework

- [Learner and training](https://github.com/jantic/deoldify/blob/master/fastai/basic_train.py): `fastai/basic_train.py`
- [Vision data pipeline](https://github.com/jantic/deoldify/blob/master/fastai/vision/data.py): `fastai/vision/data.py`
- [Image transforms](https://github.com/jantic/deoldify/blob/master/fastai/vision/image.py): `fastai/vision/image.py`
- [Training loop](https://github.com/jantic/deoldify/blob/master/fastai/train.py): `fastai/train.py`
- [Training callbacks](https://github.com/jantic/deoldify/blob/master/fastai/callback.py): `fastai/callback.py`

### Evaluation

- [FID scoring](https://github.com/jantic/deoldify/blob/master/fid/fid_score.py): `fid/fid_score.py`
- [Inception features](https://github.com/jantic/deoldify/blob/master/fid/inception.py): `fid/inception.py`

### Other components

- **Image/video user**
- **FFmpeg**

## Connections

- Image/video user → Image visualizer: submits image
- Image/video user → Video colorizer: submits video
- Image visualizer → Colorization filters: applies filter
- Video colorizer → Image visualizer: colorizes frames
- Video colorizer → FFmpeg: extracts and rebuilds
- Image visualizer → Result saving: saves result
- Training datasets → Vision data pipeline: provides data
- Vision data pipeline → Image transforms: transforms images
- Learner and training → Training loop: runs training
- Learner and training → Training callbacks: dispatches callbacks
- Generator models → U-Net architecture: uses architecture
- Generator models → Custom layers: uses layers
- GAN critics → Custom layers: uses layers
- Training datasets → Augmentations: uses augmentation
- FID scoring → Inception features: extracts features
