# zelma4/ontology_classifier architecture

> Architecture diagram of the GitHub repository zelma4/ontology_classifier, 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/zelma4/ontology_classifier
- Repository: https://github.com/zelma4/ontology_classifier

## Overview

Це Python-додаток для класифікації зображень військового транспорту на Tank, BMP, Bradley або Unknown. Основний сценарій: користувач вибирає зображення в tkinter GUI, програма завантажує ResNet18 checkpoint, обробляє зображення, виконує inference та показує клас і ймовірності. Окремий сценарій тренує модель на розмічених даних, а консольний режим виконує прогноз. README описує також формати зображень і асинхронне завантаження моделі; граф спирається на показані файли й не припускає окремого сховища чи неперевірених зв’язків.

Main entry points: [`app_gui.py`](https://github.com/zelma4/ontology_classifier/blob/main/app_gui.py) (Tkinter GUI), [`train.py`](https://github.com/zelma4/ontology_classifier/blob/main/train.py) (Навчання й оцінка), [`predict.py`](https://github.com/zelma4/ontology_classifier/blob/main/predict.py) (CLI прогноз), [`data_utils.py`](https://github.com/zelma4/ontology_classifier/blob/main/data_utils.py) (Dataset loader)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["Інтерфейс"]
  node_gui["Tkinter GUI<br/>[app_gui.py]"]
end

subgraph group_inference["Класифікація"]
  node_predict["Модель і transforms<br/>[predict.py]"]
  node_checkpoint["Model checkpoint"]
  node_console["CLI прогноз<br/>[predict.py]"]
end

subgraph group_training["Тренування"]
  node_trainer["Навчання й оцінка<br/>[train.py]"]
  node_artifacts["Модель і метадані"]
end

subgraph group_data["Підготовка даних"]
  node_data_utils["Індекс і розбиття<br/>[data_utils.py]"]
  node_dataset["Dataset loader<br/>[data_utils.py]"]
end

node_user(("Користувач"))
node_image_data["Розмічені зображення"]

node_user -->|"вибирає зображення"| node_gui
node_gui -->|"завантажує модель"| node_predict
node_predict -->|"читає checkpoint"| node_checkpoint
node_gui -->|"обробляє й класифікує"| node_gui
node_gui -->|"показує прогноз"| node_user
node_user -->|"передає зображення"| node_console
node_console -->|"завантажує модель"| node_predict
node_console -->|"читає checkpoint"| node_checkpoint
node_console -->|"виводить ймовірності"| node_user
node_image_data -->|"сканує файли"| node_data_utils
node_trainer -->|"індексує й ділить"| node_data_utils
node_trainer -->|"створює набори"| node_dataset
node_dataset -->|"читає зображення"| node_image_data
node_trainer -->|"записує checkpoint і метадані"| node_artifacts
node_trainer -->|"записує історію"| node_artifacts

click node_gui "https://github.com/zelma4/ontology_classifier/blob/main/app_gui.py"
click node_predict "https://github.com/zelma4/ontology_classifier/blob/main/predict.py"
click node_console "https://github.com/zelma4/ontology_classifier/blob/main/predict.py"
click node_trainer "https://github.com/zelma4/ontology_classifier/blob/main/train.py"
click node_data_utils "https://github.com/zelma4/ontology_classifier/blob/main/data_utils.py"
click node_dataset "https://github.com/zelma4/ontology_classifier/blob/main/data_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_gui toneBlue
class node_predict,node_checkpoint,node_console toneAmber
class node_trainer,node_artifacts toneMint
class node_data_utils,node_dataset toneRose
class node_user,node_image_data toneIndigo
```

## Components

### Інтерфейс

- [Tkinter GUI](https://github.com/zelma4/ontology_classifier/blob/main/app_gui.py): `app_gui.py`

### Класифікація

- [Модель і transforms](https://github.com/zelma4/ontology_classifier/blob/main/predict.py): `predict.py`
- **Model checkpoint**
- [CLI прогноз](https://github.com/zelma4/ontology_classifier/blob/main/predict.py): `predict.py`

### Тренування

- [Навчання й оцінка](https://github.com/zelma4/ontology_classifier/blob/main/train.py): `train.py`
- **Модель і метадані**

### Підготовка даних

- [Індекс і розбиття](https://github.com/zelma4/ontology_classifier/blob/main/data_utils.py): `data_utils.py`
- [Dataset loader](https://github.com/zelma4/ontology_classifier/blob/main/data_utils.py): `data_utils.py`

### Other components

- **Користувач**
- **Розмічені зображення**

## Connections

- Користувач → Tkinter GUI: вибирає зображення
- Tkinter GUI → Модель і transforms: завантажує модель
- Модель і transforms → Model checkpoint: читає checkpoint
- Tkinter GUI → Tkinter GUI: обробляє й класифікує
- Tkinter GUI → Користувач: показує прогноз
- Користувач → CLI прогноз: передає зображення
- CLI прогноз → Модель і transforms: завантажує модель
- CLI прогноз → Model checkpoint: читає checkpoint
- CLI прогноз → Користувач: виводить ймовірності
- Розмічені зображення → Індекс і розбиття: сканує файли
- Навчання й оцінка → Індекс і розбиття: індексує й ділить
- Навчання й оцінка → Dataset loader: створює набори
- Dataset loader → Розмічені зображення: читає зображення
- Навчання й оцінка → Модель і метадані: записує checkpoint і метадані
- Навчання й оцінка → Модель і метадані: записує історію
