# sumitlaha/haar-attention-dehazing architecture

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

- Interactive diagram: https://gitdiagram.com/sumitlaha/haar-attention-dehazing
- Repository: https://github.com/sumitlaha/haar-attention-dehazing

## Overview

This repository implements a TensorFlow image-dehazing research workflow: datasets are loaded or synthesized into hazy/clear pairs, HaarNet learns to reconstruct clear images, and evaluation reports image-quality metrics and displays examples. The model’s documented core is multi-scale Haar decomposition with channel and spatial attention. Training and testing are coordinated by main.py, with callbacks handling summaries, checkpoints, and qualitative display. The graph follows the sampled calls; dataset and model internals are represented at their enclosing module paths.

Main entry points: [`main.py`](https://github.com/sumitlaha/haar-attention-dehazing/blob/main/main.py) (Train/test runner), [`models/haarnet.py`](https://github.com/sumitlaha/haar-attention-dehazing/blob/main/models/haarnet.py) (HaarNet), [`callbacks.py`](https://github.com/sumitlaha/haar-attention-dehazing/blob/main/callbacks.py) (Training callback), [`losses.py`](https://github.com/sumitlaha/haar-attention-dehazing/blob/main/losses.py) (Composite loss)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Training workflow"]
  node_main["Train/test runner<br/>[main.py]"]
  node_callback["Training callback<br/>[callbacks.py]"]
  node_checkpoint[("Model checkpoints")]
  node_logs[("Training summaries")]
end

subgraph group_data["Data preparation"]
  node_loader["Dataset loader<br/>[dataloader.py]"]
  node_dataset_sources[("Image datasets")]
  node_pairs["Hazy/clear batches<br/>[dataloader.py]"]
end

subgraph group_network["Dehazing network"]
  node_model["HaarNet<br/>[haarnet.py]"]
  node_main_module["Haar encoder-decoder<br/>[layers.py]"]
  node_attention["Wavelet attention<br/>[layers.py]"]
end

subgraph group_evaluation["Loss and evaluation"]
  node_loss["Composite loss<br/>[losses.py]"]
  node_perceptual["Perceptual loss<br/>[losses.py]"]
  node_vgg["Frozen VGG features<br/>[vgg.py]"]
  node_haar_loss["Wavelet loss<br/>[losses.py]"]
  node_metrics["PSNR and SSIM<br/>[metrics.py]"]
  node_utils["Image utilities<br/>[utils.py]"]
end

node_user(("Researcher"))
node_wavelet["Haar transforms"]
node_output["Dehazed images"]

node_user -->|"starts"| node_main
node_main -->|"loads datasets"| node_loader
node_dataset_sources -->|"provides images"| node_loader
node_loader -->|"prepares batches"| node_pairs
node_main -->|"constructs and runs"| node_model
node_main -->|"configures loss"| node_loss
node_main -->|"registers"| node_callback
node_main -->|"restores"| node_checkpoint
node_pairs -->|"supplies batches"| node_model
node_model -->|"forwards images"| node_main_module
node_main_module -->|"uses attention blocks"| node_attention
node_main_module -->|"uses Haar transforms"| node_wavelet
node_model -->|"computes training loss"| node_loss
node_loss -->|"includes"| node_perceptual
node_perceptual -->|"compares features"| node_vgg
node_loss -->|"includes"| node_haar_loss
node_haar_loss -->|"transforms images"| node_wavelet
node_model -->|"updates quality metrics"| node_metrics
node_metrics -->|"standardizes images"| node_utils
node_main -->|"evaluates predictions"| node_output
node_callback -->|"writes summaries"| node_logs
node_callback -->|"saves checkpoints"| node_checkpoint
node_callback -->|"predicts examples"| node_model
node_callback -->|"displays examples"| node_utils
node_model -->|"returns predictions"| node_output

click node_main "https://github.com/sumitlaha/haar-attention-dehazing/blob/main/main.py"
click node_callback "https://github.com/sumitlaha/haar-attention-dehazing/blob/main/callbacks.py"
click node_checkpoint "https://github.com/sumitlaha/haar-attention-dehazing/tree/main/tf_ckpts"
click node_loader "https://github.com/sumitlaha/haar-attention-dehazing/blob/main/dataloader.py"
click node_pairs "https://github.com/sumitlaha/haar-attention-dehazing/blob/main/dataloader.py"
click node_model "https://github.com/sumitlaha/haar-attention-dehazing/blob/main/models/haarnet.py"
click node_main_module "https://github.com/sumitlaha/haar-attention-dehazing/blob/main/models/layers.py"
click node_attention "https://github.com/sumitlaha/haar-attention-dehazing/blob/main/models/layers.py"
click node_loss "https://github.com/sumitlaha/haar-attention-dehazing/blob/main/losses.py"
click node_perceptual "https://github.com/sumitlaha/haar-attention-dehazing/blob/main/losses.py"
click node_vgg "https://github.com/sumitlaha/haar-attention-dehazing/blob/main/models/vgg.py"
click node_haar_loss "https://github.com/sumitlaha/haar-attention-dehazing/blob/main/losses.py"
click node_metrics "https://github.com/sumitlaha/haar-attention-dehazing/blob/main/metrics.py"
click node_utils "https://github.com/sumitlaha/haar-attention-dehazing/blob/main/utils.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_main,node_callback,node_checkpoint,node_logs toneBlue
class node_loader,node_dataset_sources,node_pairs toneAmber
class node_model,node_main_module,node_attention toneMint
class node_loss,node_perceptual,node_vgg,node_haar_loss,node_metrics,node_utils toneRose
class node_user,node_wavelet,node_output toneIndigo
```

## Components

### Training workflow

- [Train/test runner](https://github.com/sumitlaha/haar-attention-dehazing/blob/main/main.py): `main.py`
- [Training callback](https://github.com/sumitlaha/haar-attention-dehazing/blob/main/callbacks.py): `callbacks.py`
- [Model checkpoints](https://github.com/sumitlaha/haar-attention-dehazing/tree/main/tf_ckpts): `tf_ckpts`
- **Training summaries**

### Data preparation

- [Dataset loader](https://github.com/sumitlaha/haar-attention-dehazing/blob/main/dataloader.py): `dataloader.py`
- **Image datasets**
- [Hazy/clear batches](https://github.com/sumitlaha/haar-attention-dehazing/blob/main/dataloader.py): `dataloader.py`

### Dehazing network

- [HaarNet](https://github.com/sumitlaha/haar-attention-dehazing/blob/main/models/haarnet.py): `models/haarnet.py`
- [Haar encoder-decoder](https://github.com/sumitlaha/haar-attention-dehazing/blob/main/models/layers.py): `models/layers.py`
- [Wavelet attention](https://github.com/sumitlaha/haar-attention-dehazing/blob/main/models/layers.py): `models/layers.py`

### Loss and evaluation

- [Composite loss](https://github.com/sumitlaha/haar-attention-dehazing/blob/main/losses.py): `losses.py`
- [Perceptual loss](https://github.com/sumitlaha/haar-attention-dehazing/blob/main/losses.py): `losses.py`
- [Frozen VGG features](https://github.com/sumitlaha/haar-attention-dehazing/blob/main/models/vgg.py): `models/vgg.py`
- [Wavelet loss](https://github.com/sumitlaha/haar-attention-dehazing/blob/main/losses.py): `losses.py`
- [PSNR and SSIM](https://github.com/sumitlaha/haar-attention-dehazing/blob/main/metrics.py): `metrics.py`
- [Image utilities](https://github.com/sumitlaha/haar-attention-dehazing/blob/main/utils.py): `utils.py`

### Other components

- **Researcher**
- **Haar transforms**
- **Dehazed images**

## Connections

- Researcher → Train/test runner: starts
- Train/test runner → Dataset loader: loads datasets
- Image datasets → Dataset loader: provides images
- Dataset loader → Hazy/clear batches: prepares batches
- Train/test runner → HaarNet: constructs and runs
- Train/test runner → Composite loss: configures loss
- Train/test runner → Training callback: registers
- Train/test runner → Model checkpoints: restores
- Hazy/clear batches → HaarNet: supplies batches
- HaarNet → Haar encoder-decoder: forwards images
- Haar encoder-decoder → Wavelet attention: uses attention blocks
- Haar encoder-decoder → Haar transforms: uses Haar transforms
- HaarNet → Composite loss: computes training loss
- Composite loss → Perceptual loss: includes
- Perceptual loss → Frozen VGG features: compares features
- Composite loss → Wavelet loss: includes
- Wavelet loss → Haar transforms: transforms images
- HaarNet → PSNR and SSIM: updates quality metrics
- PSNR and SSIM → Image utilities: standardizes images
- Train/test runner → Dehazed images: evaluates predictions
- Training callback → Training summaries: writes summaries
- Training callback → Model checkpoints: saves checkpoints
- Training callback → HaarNet: predicts examples
- Training callback → Image utilities: displays examples
- HaarNet → Dehazed images: returns predictions
