# tomer-gal/deep-learning-for-computer-vision architecture

> Architecture diagram of the GitHub repository tomer-gal/deep-learning-for-computer-vision, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/tomer-gal/deep-learning-for-computer-vision
- Repository: https://github.com/tomer-gal/deep-learning-for-computer-vision

## Overview

This is an educational computer-vision course platform: learners encounter theory, interactive demonstrations, and hands-on notebooks. The main interactive path is through the Streamlit lesson sections, which use shared `dlcv` utilities for image handling, convolution, model construction, and visualization. The README documents MkDocs and Jupyter as separate learning tools that also use the shared library. Several lesson implementations are unsampled; their capabilities and links are included only where the README or SOURCE INDEX supports them.

Main entry points: [`app/Home.py`](https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/app/Home.py) (Streamlit app), [`app/pages/lesson01/s8_tooling_demo.py`](https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/app/pages/lesson01/s8_tooling_demo.py) (Tooling demo), [`app/pages/lesson01/s6_convolution.py`](https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/app/pages/lesson01/s6_convolution.py) (Convolution demo), [`src/dlcv/viz.py`](https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/src/dlcv/viz.py) (Plot utilities)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_lesson_ui["Interactive lessons"]
  node_streamlit["Streamlit app<br/>[Home.py]"]
  node_overview["Course overview"]
  node_cv_problem["Vision problem<br/>[s2_cv_problem.py]"]
  node_image_lesson["Images as data"]
  node_mlp_lesson["Neural network primer<br/>[s4_nn_primer.py]"]
  node_fc_lesson["FC limitations<br/>[s5_why_fc_fails.py]"]
  node_conv_lesson["Convolution demo<br/>[s6_convolution.py]"]
  node_cnn_lesson["CNN architecture"]
  node_tooling_lesson["Tooling demo<br/>[s8_tooling_demo.py]"]
end

subgraph group_shared["Shared learning library"]
  node_image_ops["Image utilities<br/>[images.py]"]
  node_asset_paths["Sample image assets<br/>[assets.py]"]
  node_conv_ops["Convolution operations<br/>[convolution.py]"]
  node_network_builders["Network builders<br/>[networks.py]"]
  node_dataset_samples["Dataset samples<br/>[datasets.py]"]
  node_visualization["Plot utilities<br/>[viz.py]"]
  node_device_select["Device detection<br/>[device.py]"]
end

subgraph group_materials["Course materials"]
  node_course_docs["Theory and notes<br/>[lesson_01.md]"]
  node_notebooks["Hands-on labs"]
end

subgraph group_runtime["Learning access"]
  node_streamlit_cloud(("Streamlit Cloud"))
  node_github_pages(("GitHub Pages"))
  node_colab(("Google Colab"))
end

node_learner(("Learner"))

node_learner -->|"opens lessons"| node_streamlit
node_streamlit -->|"presents sections"| node_overview
node_streamlit -->|"presents sections"| node_cv_problem
node_streamlit -->|"presents sections"| node_image_lesson
node_streamlit -->|"presents sections"| node_mlp_lesson
node_streamlit -->|"presents sections"| node_fc_lesson
node_streamlit -->|"presents sections"| node_conv_lesson
node_streamlit -->|"presents sections"| node_cnn_lesson
node_streamlit -->|"presents sections"| node_tooling_lesson
node_learner -->|"studies theory"| node_course_docs
node_learner -->|"works exercises"| node_notebooks
node_streamlit -->|"hosted on"| node_streamlit_cloud
node_course_docs -->|"published on"| node_github_pages
node_notebooks -->|"run on"| node_colab
node_image_lesson -->|"uses"| node_image_ops
node_image_lesson -->|"resolves images"| node_asset_paths
node_cv_problem -->|"uses"| node_image_ops
node_cv_problem -->|"resolves images"| node_asset_paths
node_cv_problem -->|"uses"| node_visualization
node_mlp_lesson -->|"uses"| node_network_builders
node_mlp_lesson -->|"uses"| node_visualization
node_fc_lesson -->|"counts parameters"| node_network_builders
node_fc_lesson -->|"compares parameters"| node_conv_ops
node_conv_lesson -->|"loads and converts"| node_image_ops
node_conv_lesson -->|"resolves images"| node_asset_paths
node_conv_lesson -->|"applies kernels"| node_conv_ops
node_conv_lesson -->|"plots filters"| node_visualization
node_cnn_lesson -->|"uses"| node_network_builders
node_cnn_lesson -->|"uses"| node_visualization
node_tooling_lesson -->|"loads sample"| node_dataset_samples
node_tooling_lesson -->|"builds and traces"| node_network_builders
node_tooling_lesson -->|"checks output size"| node_conv_ops
node_tooling_lesson -->|"converts sample"| node_image_ops
node_tooling_lesson -->|"plots shapes"| node_visualization

click node_streamlit "https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/app/Home.py"
click node_overview "https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/app/pages/lesson01/s1_course_overview.py"
click node_cv_problem "https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/app/pages/lesson01/s2_cv_problem.py"
click node_image_lesson "https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/app/pages/lesson01/s3_images_as_data.py"
click node_mlp_lesson "https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/app/pages/lesson01/s4_nn_primer.py"
click node_fc_lesson "https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/app/pages/lesson01/s5_why_fc_fails.py"
click node_conv_lesson "https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/app/pages/lesson01/s6_convolution.py"
click node_cnn_lesson "https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/app/pages/lesson01/s7_cnn_architecture.py"
click node_tooling_lesson "https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/app/pages/lesson01/s8_tooling_demo.py"
click node_image_ops "https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/src/dlcv/images.py"
click node_asset_paths "https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/src/dlcv/assets.py"
click node_conv_ops "https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/src/dlcv/convolution.py"
click node_network_builders "https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/src/dlcv/networks.py"
click node_dataset_samples "https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/src/dlcv/datasets.py"
click node_visualization "https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/src/dlcv/viz.py"
click node_device_select "https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/src/dlcv/device.py"
click node_course_docs "https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/docs/lessons/lesson_01.md"
click node_notebooks "https://github.com/tomer-gal/deep-learning-for-computer-vision/tree/main/notebooks/lesson01"

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_streamlit,node_overview,node_cv_problem,node_image_lesson,node_mlp_lesson,node_fc_lesson,node_conv_lesson,node_cnn_lesson,node_tooling_lesson toneBlue
class node_image_ops,node_asset_paths,node_conv_ops,node_network_builders,node_dataset_samples,node_visualization,node_device_select toneAmber
class node_course_docs,node_notebooks toneMint
class node_streamlit_cloud,node_github_pages,node_colab toneRose
class node_learner toneIndigo
```

## Components

### Interactive lessons

- [Streamlit app](https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/app/Home.py): `app/Home.py`
- [Course overview](https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/app/pages/lesson01/s1_course_overview.py): `app/pages/lesson01/s1_course_overview.py`
- [Vision problem](https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/app/pages/lesson01/s2_cv_problem.py): `app/pages/lesson01/s2_cv_problem.py`
- [Images as data](https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/app/pages/lesson01/s3_images_as_data.py): `app/pages/lesson01/s3_images_as_data.py`
- [Neural network primer](https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/app/pages/lesson01/s4_nn_primer.py): `app/pages/lesson01/s4_nn_primer.py`
- [FC limitations](https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/app/pages/lesson01/s5_why_fc_fails.py): `app/pages/lesson01/s5_why_fc_fails.py`
- [Convolution demo](https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/app/pages/lesson01/s6_convolution.py): `app/pages/lesson01/s6_convolution.py`
- [CNN architecture](https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/app/pages/lesson01/s7_cnn_architecture.py): `app/pages/lesson01/s7_cnn_architecture.py`
- [Tooling demo](https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/app/pages/lesson01/s8_tooling_demo.py): `app/pages/lesson01/s8_tooling_demo.py`

### Shared learning library

- [Image utilities](https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/src/dlcv/images.py): `src/dlcv/images.py`
- [Sample image assets](https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/src/dlcv/assets.py): `src/dlcv/assets.py`
- [Convolution operations](https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/src/dlcv/convolution.py): `src/dlcv/convolution.py`
- [Network builders](https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/src/dlcv/networks.py): `src/dlcv/networks.py`
- [Dataset samples](https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/src/dlcv/datasets.py): `src/dlcv/datasets.py`
- [Plot utilities](https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/src/dlcv/viz.py): `src/dlcv/viz.py`
- [Device detection](https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/src/dlcv/device.py): `src/dlcv/device.py`

### Course materials

- [Theory and notes](https://github.com/tomer-gal/deep-learning-for-computer-vision/blob/main/docs/lessons/lesson_01.md): `docs/lessons/lesson_01.md`
- [Hands-on labs](https://github.com/tomer-gal/deep-learning-for-computer-vision/tree/main/notebooks/lesson01): `notebooks/lesson01`

### Learning access

- **Streamlit Cloud**
- **GitHub Pages**
- **Google Colab**

### Other components

- **Learner**

## Connections

- Learner → Streamlit app: opens lessons (evidence: `README.md`)
- Streamlit app → Course overview: presents sections (evidence: `README.md`)
- Streamlit app → Vision problem: presents sections (evidence: `README.md`)
- Streamlit app → Images as data: presents sections (evidence: `README.md`)
- Streamlit app → Neural network primer: presents sections (evidence: `README.md`)
- Streamlit app → FC limitations: presents sections (evidence: `README.md`)
- Streamlit app → Convolution demo: presents sections (evidence: `README.md`)
- Streamlit app → CNN architecture: presents sections (evidence: `README.md`)
- Streamlit app → Tooling demo: presents sections (evidence: `README.md`)
- Learner → Theory and notes: studies theory (evidence: `README.md`)
- Learner → Hands-on labs: works exercises (evidence: `README.md`)
- Streamlit app → Streamlit Cloud: hosted on (evidence: `README.md`)
- Theory and notes → GitHub Pages: published on (evidence: `README.md`)
- Hands-on labs → Google Colab: run on (evidence: `README.md`)
- Images as data → Image utilities: uses (evidence: `app/pages/lesson01/s3_images_as_data.py`)
- Images as data → Sample image assets: resolves images (evidence: `app/pages/lesson01/s3_images_as_data.py`)
- Vision problem → Image utilities: uses (evidence: `app/pages/lesson01/s2_cv_problem.py`)
- Vision problem → Sample image assets: resolves images (evidence: `app/pages/lesson01/s2_cv_problem.py`)
- Vision problem → Plot utilities: uses (evidence: `app/pages/lesson01/s2_cv_problem.py`)
- Neural network primer → Network builders: uses (evidence: `app/pages/lesson01/s4_nn_primer.py`)
- Neural network primer → Plot utilities: uses (evidence: `app/pages/lesson01/s4_nn_primer.py`)
- FC limitations → Network builders: counts parameters (evidence: `app/pages/lesson01/s5_why_fc_fails.py`)
- FC limitations → Convolution operations: compares parameters (evidence: `app/pages/lesson01/s5_why_fc_fails.py`)
- Convolution demo → Image utilities: loads and converts (evidence: `app/pages/lesson01/s6_convolution.py`)
- Convolution demo → Sample image assets: resolves images (evidence: `app/pages/lesson01/s6_convolution.py`)
- Convolution demo → Convolution operations: applies kernels (evidence: `app/pages/lesson01/s6_convolution.py`)
- Convolution demo → Plot utilities: plots filters (evidence: `app/pages/lesson01/s6_convolution.py`)
- CNN architecture → Network builders: uses (evidence: `app/pages/lesson01/s7_cnn_architecture.py`)
- CNN architecture → Plot utilities: uses (evidence: `app/pages/lesson01/s7_cnn_architecture.py`)
- Tooling demo → Dataset samples: loads sample (evidence: `app/pages/lesson01/s8_tooling_demo.py`)
- Tooling demo → Network builders: builds and traces (evidence: `app/pages/lesson01/s8_tooling_demo.py`)
- Tooling demo → Convolution operations: checks output size (evidence: `app/pages/lesson01/s8_tooling_demo.py`)
- Tooling demo → Image utilities: converts sample (evidence: `app/pages/lesson01/s8_tooling_demo.py`)
- Tooling demo → Plot utilities: plots shapes (evidence: `app/pages/lesson01/s8_tooling_demo.py`)
