# Train Sleep Detection Model

Download notebook View source Open in Colab

This page uses the repository notebook, whose saved training and export logs date to December 2025. The [previous documentation copy](https://ambiqai.github.io/sleepkit/notebooks/previous-docs-train-detect-model.ipynb) is retained as an archive; it contains the same code but mixes older saved outputs.

Before running, set `SK_DATASET_PATH` to your dataset directory. The fallback `../../datasets` is relative to the notebook kernel’s working directory, so it may need adjustment after downloading or opening in Colab.

This page displays saved notebook outputs; building the site does not run training.

__Date created:__ 2024/10/02

__Last Modified:__ 2024/10/02

__Description:__ Train a simple wrist-based sleep detection model using accelerometer data.

## Overview

In this guide, we will train a small TCN network to detect sleep and wake stages using accelerometer data collected from the wrist.

__Input__

- **Sensor**: IMU
- **Location**: Wrist
- **Sampling Rate**: 0.2 Hz
- **Frame Size**: 60 seconds

__Class Mapping__

Identify activity into one of two categories: SLEEP, AWAKE.

| Base Class     | Target Class | Label                     |
| -------------- | ------------ | ------------------------- |
| 0-WAKE         | 0            | WAKE                      |
| 1-SLEEP        | 1            | SLEEP                     |

__Datasets__

- **[CMIDSS](https://ambiqai.github.io/sleepkit/datasets/cmidss/)**: The Child Mind Institute - Detect Sleep States (CMIDSS) dataset comprises 300 subjects with over 500 multi-day recordings of wrist-worn accelerometer data annotated with two event types: onset, the beginning of sleep, and wakeup, the end of sleep.

## Setup

```python
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
import IPython
import contextlib
import tempfile
from pathlib import Path
import keras
import helia_edge as helia
import sleepkit as sk
```

```text
/workspaces/sleepkit/.venv/lib/python3.13/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html
  from .autonotebook import tqdm as notebook_tqdm
```

```python
# Be sure to set the dataset path to the correct location
datasets_dir = Path(os.getenv('SK_DATASET_PATH', '../../datasets'))

plot_theme = sk.utils.dark_theme
helia.utils.silence_tensorflow()
sk.utils.setup_plotting(plot_theme)
logger = helia.utils.setup_logger(__name__)
```

## Configure datasets

We are going to train our model using the [CMIDSS Dataset(https://ambiqai.github.io/sleepkit/datasets/cmidss/). This dataset uses the slug __cmidss__ within sleepKIT. We will download the dataset if it is not already available.

```python
datasets = [sk.NamedParams(
    name="cmidss",
    params=dict(
        path=datasets_dir / "cmidss",
    )
)]
```

## Target classes

For this task, we are going to simply classify the data into two classes: SLEEP and AWAKE.

```python
class_map = {
    sk.SleepStage.wake: 0,
    sk.SleepStage.stage1: 1,
    sk.SleepStage.stage2: 1,
    sk.SleepStage.stage3: 1,
    sk.SleepStage.stage4: 1,
    sk.SleepStage.rem: 1,
}

class_names = ["WAKE", "SLEEP"]
```

## Feature set

From the dataset, we will create a feature set using the [FS-W-A-5 features](https://ambiqai.github.io/sleepkit/features/fs_w_a_5/). This feature set computes 5 features over 60-second windows captured from the accelerometer sensor collected on the wrist. The **CMIDSS** dataset already provides accelerometer averaged over 5 secods (i.e. Fs=0.2 Hz). Therefore, we will use a frame size of 12 to capture 60 seconds of data (i.e. 6 samples at 0.2 Hz) with a 50% overlap.

```python
feature = dict(
    name="FS-W-A-5",
    sampling_rate=0.2,
    frame_size=12,
    loader="hdf5",
    feat_key="features",
    label_key="detect_labels",
    mask_key="mask",
    feat_cols=None,
    save_path=datasets_dir / "store" / "fs-w-a-5-60",
    params={},
)
```

## Define TCN model architecture

For this task, we are going to leverage a customized __TCN__ model architecture that is smaller and can handle 1D signals. The model consists of 4 TCN blocks with a depth of 1. Each block leverages dilated depthwise-separable convolutions along with inverted expansion and squeeze and excitation layers. The model is followed by a 1D convolutional layer and a final dense layer for regression. Unlike vision tasks, we leverage larger kernel sizes and strides to capture temporal dependencies in the signal.

```python
architecture = sk.NamedParams(
    name="tcn",
    params=dict(
        input_kernel=[1, 5],
        input_norm="batch",
        blocks=[
            dict(depth=1, branch=1, filters=16, kernel=(1, 5), dilation=[1, 1], dropout=0.10, ex_ratio=1, se_ratio=4, norm="batch"),
            dict(depth=1, branch=1, filters=32, kernel=(1, 5), dilation=[1, 2], dropout=0.10, ex_ratio=1, se_ratio=4, norm="batch"),
            dict(depth=1, branch=1, filters=48, kernel=(1, 5), dilation=[1, 4], dropout=0.10, ex_ratio=1, se_ratio=4, norm="batch"),
            dict(depth=1, branch=1, filters=64, kernel=(1, 5), dilation=[1, 8], dropout=0.10, ex_ratio=1, se_ratio=4, norm="batch")
        ],
        output_kernel=(1, 5),
        include_top=True,
        use_logits=True,
        model_name="tcn"
    )
)
```

## Task configuration

Here we provide the complete configuration for the task. This includes the dataset configuration, features, model architecture, and training parameters.

```python
params = sk.TaskParams(
    name="sk-detect",
    job_dir=Path(tempfile.gettempdir()) / "sk-detect",
    verbose=1,

    datasets=datasets,

    feature=feature,
    sampling_rate=0.0083333,
    frame_size=240,

    num_classes=len(class_names),
    class_map=class_map,
    class_names=class_names,

    samples_per_subject=100,
    val_samples_per_subject=100,
    test_samples_per_subject=50,

    val_size=4000,
    test_size=2500,

    val_subjects=0.20,
    batch_size=128,
    buffer_size=10000,
    epochs=200,
    steps_per_epoch=25,
    val_steps_per_epoch=25,
    val_metric="loss",
    lr_rate=1e-3,
    lr_cycles=1,
    label_smoothing=0,

    test_metric="f1",
    test_metric_threshold=0.02,
    tflm_var_name="sk_detect_flatbuffer",
    tflm_file="sk_detect_flatbuffer.h",

    backend="pc",
    display_report=False,

    model_file="model.keras",
    use_logits=False,
    architecture=architecture
)
```

## Load detect task

sleepKIT provides a __TaskFactory__ that includes a number ready-to-use tasks. Each task provides methods for training, evaluating, exporting, and demoing. We will grab the __detect__ task and configure it for our use case.

```python
task = sk.TaskFactory.get("detect")
```

## Download the datasets

We will download the datasets using the `sleepkit` library. If already downloaded, this step will be skipped.

```python
task.download(params=params)
```

## Generate the features

Next, we will generate the features from the given dataset. The features will be generated using the `fs_w_a_5` feature set.

Once the command finishes, the feature set will be saved in the `feature.save_path` directory. These features will be stored in HDF5 files with one file per subject. Each HDF5 file will include the following entries:

- `/features`: Time x Feature tensor (fp32). Features are computed over windows of sensor data.
- `/mask`: Time x Mask tensor (bool). Mask indicates valid feature values.
- `/detect_labels`: Time x Label (int). Labels are awake/sleep.

```python
task.feature(params=params)
```

```text
Gen features for cmidss: 100%|██████████| 277/277 [02:02<00:00,  2.27it/s]
```

## Visualize the model

Lets quickly instantiate and visualize the model.

```python
model = helia.models.tcn.TcnModel.model_from_params(
    inputs=keras.Input(shape=(params.frame_size, 5), name="inputs"),
    params=architecture.params,
    num_classes=len(class_names)
)
model.summary(layer_range=('inputs', model.layers[10].name))
```

```text
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
I0000 00:00:1765844770.008698    4340 gpu_device.cc:2020] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 15543 MB memory:  -> device: 0, name: NVIDIA GeForce RTX 4090, pci bus id: 0000:01:00.0, compute capability: 8.9
```

```text
Model: "functional"
```

Saved output

```text
┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓
┃ Layer (type)        ┃ Output Shape      ┃    Param # ┃ Connected to      ┃
┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩
│ inputs (InputLayer) │ (None, 240, 5)    │          0 │ -                 │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ reshape (Reshape)   │ (None, 1, 240, 5) │          0 │ inputs[0][0]      │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ ENC_CN              │ (None, 1, 240, 5) │         25 │ reshape[0][0]     │
│ (DepthwiseConv2D)   │                   │            │                   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ ENC_BN              │ (None, 1, 240, 5) │         20 │ ENC_CN[0][0]      │
│ (BatchNormalizatio… │                   │            │                   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ B1_D1_DW_B1_CN      │ (None, 1, 240, 5) │         25 │ ENC_BN[0][0]      │
│ (DepthwiseConv2D)   │                   │            │                   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ B1_D1_DW_B1_BN      │ (None, 1, 240, 5) │         20 │ B1_D1_DW_B1_CN[0… │
│ (BatchNormalizatio… │                   │            │                   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ B1_D1_DW_ACT        │ (None, 1, 240, 5) │          0 │ B1_D1_DW_B1_BN[0… │
│ (Activation)        │                   │            │                   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ B1_D1_SE_pool       │ (None, 1, 1, 5)   │          0 │ B1_D1_DW_ACT[0][… │
│ (GlobalAveragePool… │                   │            │                   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ B1_D1_SE_sq         │ (None, 1, 1, 1)   │          6 │ B1_D1_SE_pool[0]… │
│ (Conv2D)            │                   │            │                   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ B1_D1_SE_sq.act     │ (None, 1, 1, 1)   │          0 │ B1_D1_SE_sq[0][0] │
│ (Activation)        │                   │            │                   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ B1_D1_SE_ex         │ (None, 1, 1, 5)   │         10 │ B1_D1_SE_sq.act[… │
│ (Conv2D)            │                   │            │                   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ B1_D1_SE_ex.act     │ (None, 1, 1, 5)   │          0 │ B1_D1_SE_ex[0][0] │
│ (Activation)        │                   │            │                   │
├─────────────────────┼───────────────────┼────────────┼───────────────────┤
│ B1_D1_SE_ex.mul     │ (None, 1, 240, 5) │          0 │ B1_D1_DW_ACT[0][… │
│ (Multiply)          │                   │            │ B1_D1_SE_ex.act[… │
└─────────────────────┴───────────────────┴────────────┴───────────────────┘
```

```text
 Total params: 9,364 (36.58 KB)
```

```text
 Trainable params: 8,832 (34.50 KB)
```

```text
 Non-trainable params: 532 (2.08 KB)
```

## Train the model

At this point, we can train the model from the generated feature set for the sleep detect task. The model will be trained for 200 epochs with a batch size of 128 and a learning rate of 1e-3. The model will be fed a `frame_size` of 240 samples which equates to 120 minutes.

Using the task configuration, we will train the model on the dataset.

```python
task.train(params)
```

```text
Epoch 1/200
 6/25 ━━━━━━━━━━━━━━━━━━━━ 0s 30ms/step - acc: 0.4901 - f1: 0.5407 - iou: 0.2969 - loss: 0.4225
```

```text
I0000 00:00:1765844782.346690    5271 device_compiler.h:196] Compiled cluster using XLA!  This line is logged at most once for the lifetime of the process.
```

Saved output

```text
25/25 ━━━━━━━━━━━━━━━━━━━━ 12s 79ms/step - acc: 0.6108 - f1: 0.6250 - iou: 0.3657 - loss: 0.3908 - val_acc: 0.7313 - val_f1: 0.6215 - val_iou: 0.3675 - val_loss: 0.3326
Epoch 2/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 35ms/step - acc: 0.7354 - f1: 0.7398 - iou: 0.5071 - loss: 0.3144 - val_acc: 0.7313 - val_f1: 0.6215 - val_iou: 0.3675 - val_loss: 0.2935
Epoch 3/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 25ms/step - acc: 0.7997 - f1: 0.7968 - iou: 0.5850 - loss: 0.2693 - val_acc: 0.7332 - val_f1: 0.6204 - val_iou: 0.3666 - val_loss: 0.2586
Epoch 4/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - acc: 0.8198 - f1: 0.8157 - iou: 0.6216 - loss: 0.2346 - val_acc: 0.7313 - val_f1: 0.6215 - val_iou: 0.3676 - val_loss: 0.2293
Epoch 5/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.8415 - f1: 0.8413 - iou: 0.6644 - loss: 0.2039 - val_acc: 0.7332 - val_f1: 0.6204 - val_iou: 0.3666 - val_loss: 0.2039
Epoch 6/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - acc: 0.8495 - f1: 0.8511 - iou: 0.6896 - loss: 0.1785 - val_acc: 0.7332 - val_f1: 0.6204 - val_iou: 0.3666 - val_loss: 0.1816
Epoch 7/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.8554 - f1: 0.8563 - iou: 0.6810 - loss: 0.1568 - val_acc: 0.7313 - val_f1: 0.6215 - val_iou: 0.3675 - val_loss: 0.1636
Epoch 8/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.8667 - f1: 0.8686 - iou: 0.7055 - loss: 0.1378 - val_acc: 0.7293 - val_f1: 0.6225 - val_iou: 0.3684 - val_loss: 0.1487
Epoch 9/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.8810 - f1: 0.8833 - iou: 0.7373 - loss: 0.1212 - val_acc: 0.7293 - val_f1: 0.6225 - val_iou: 0.3684 - val_loss: 0.1361
Epoch 10/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.8683 - f1: 0.8737 - iou: 0.7114 - loss: 0.1084 - val_acc: 0.7293 - val_f1: 0.6224 - val_iou: 0.3684 - val_loss: 0.1246
Epoch 11/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.8885 - f1: 0.8911 - iou: 0.7491 - loss: 0.0956 - val_acc: 0.2804 - val_f1: 0.1464 - val_iou: 0.1456 - val_loss: 0.1162
Epoch 12/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9005 - f1: 0.9026 - iou: 0.7740 - loss: 0.0851 - val_acc: 0.2707 - val_f1: 0.1243 - val_iou: 0.1372 - val_loss: 0.1087
Epoch 13/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - acc: 0.9048 - f1: 0.9066 - iou: 0.7802 - loss: 0.0760 - val_acc: 0.2705 - val_f1: 0.1238 - val_iou: 0.1371 - val_loss: 0.1018
Epoch 14/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9021 - f1: 0.9040 - iou: 0.7788 - loss: 0.0691 - val_acc: 0.2685 - val_f1: 0.1178 - val_iou: 0.1351 - val_loss: 0.0988
Epoch 15/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9161 - f1: 0.9181 - iou: 0.8093 - loss: 0.0613 - val_acc: 0.2668 - val_f1: 0.1123 - val_iou: 0.1334 - val_loss: 0.0963
Epoch 16/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9056 - f1: 0.9083 - iou: 0.7943 - loss: 0.0572 - val_acc: 0.2668 - val_f1: 0.1123 - val_iou: 0.1334 - val_loss: 0.0929
Epoch 17/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9141 - f1: 0.9158 - iou: 0.8074 - loss: 0.0519 - val_acc: 0.2668 - val_f1: 0.1123 - val_iou: 0.1334 - val_loss: 0.0911
Epoch 18/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9094 - f1: 0.9121 - iou: 0.7962 - loss: 0.0479 - val_acc: 0.2668 - val_f1: 0.1123 - val_iou: 0.1334 - val_loss: 0.0858
Epoch 19/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - acc: 0.9229 - f1: 0.9247 - iou: 0.8155 - loss: 0.0421 - val_acc: 0.2668 - val_f1: 0.1123 - val_iou: 0.1334 - val_loss: 0.0884
Epoch 20/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9314 - f1: 0.9327 - iou: 0.8379 - loss: 0.0385 - val_acc: 0.2668 - val_f1: 0.1123 - val_iou: 0.1334 - val_loss: 0.0870
Epoch 21/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 25ms/step - acc: 0.9290 - f1: 0.9301 - iou: 0.8364 - loss: 0.0361 - val_acc: 0.2668 - val_f1: 0.1123 - val_iou: 0.1334 - val_loss: 0.0845
Epoch 22/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 29ms/step - acc: 0.9165 - f1: 0.9185 - iou: 0.8096 - loss: 0.0350 - val_acc: 0.2668 - val_f1: 0.1123 - val_iou: 0.1334 - val_loss: 0.0754
Epoch 23/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - acc: 0.9187 - f1: 0.9205 - iou: 0.8147 - loss: 0.0328 - val_acc: 0.2668 - val_f1: 0.1124 - val_iou: 0.1334 - val_loss: 0.0757
Epoch 24/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - acc: 0.9206 - f1: 0.9222 - iou: 0.8141 - loss: 0.0308 - val_acc: 0.2668 - val_f1: 0.1124 - val_iou: 0.1334 - val_loss: 0.0752
Epoch 25/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9141 - f1: 0.9166 - iou: 0.8018 - loss: 0.0305 - val_acc: 0.2668 - val_f1: 0.1123 - val_iou: 0.1334 - val_loss: 0.0772
Epoch 26/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9290 - f1: 0.9303 - iou: 0.8335 - loss: 0.0268 - val_acc: 0.2699 - val_f1: 0.1190 - val_iou: 0.1360 - val_loss: 0.0770
Epoch 27/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 25ms/step - acc: 0.9257 - f1: 0.9274 - iou: 0.8258 - loss: 0.0261 - val_acc: 0.3192 - val_f1: 0.2150 - val_iou: 0.1765 - val_loss: 0.0673
Epoch 28/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9379 - f1: 0.9390 - iou: 0.8517 - loss: 0.0234 - val_acc: 0.4665 - val_f1: 0.4474 - val_iou: 0.3029 - val_loss: 0.0585
Epoch 29/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - acc: 0.9311 - f1: 0.9328 - iou: 0.8428 - loss: 0.0229 - val_acc: 0.3966 - val_f1: 0.3459 - val_iou: 0.2419 - val_loss: 0.0659
Epoch 30/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 25ms/step - acc: 0.9308 - f1: 0.9319 - iou: 0.8344 - loss: 0.0226 - val_acc: 0.5803 - val_f1: 0.5886 - val_iou: 0.4081 - val_loss: 0.0507
Epoch 31/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9309 - f1: 0.9321 - iou: 0.8397 - loss: 0.0217 - val_acc: 0.5553 - val_f1: 0.5597 - val_iou: 0.3842 - val_loss: 0.0504
Epoch 32/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9331 - f1: 0.9347 - iou: 0.8404 - loss: 0.0202 - val_acc: 0.8345 - val_f1: 0.8435 - val_iou: 0.6954 - val_loss: 0.0350
Epoch 33/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - acc: 0.9336 - f1: 0.9352 - iou: 0.8452 - loss: 0.0198 - val_acc: 0.8003 - val_f1: 0.8112 - val_iou: 0.6445 - val_loss: 0.0371
Epoch 34/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9328 - f1: 0.9340 - iou: 0.8397 - loss: 0.0195 - val_acc: 0.6425 - val_f1: 0.6575 - val_iou: 0.4693 - val_loss: 0.0442
Epoch 35/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 26ms/step - acc: 0.9223 - f1: 0.9235 - iou: 0.8243 - loss: 0.0200 - val_acc: 0.8635 - val_f1: 0.8702 - val_iou: 0.7362 - val_loss: 0.0323
Epoch 36/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9264 - f1: 0.9283 - iou: 0.8289 - loss: 0.0187 - val_acc: 0.8344 - val_f1: 0.8435 - val_iou: 0.6954 - val_loss: 0.0310
Epoch 37/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - acc: 0.9289 - f1: 0.9308 - iou: 0.8280 - loss: 0.0179 - val_acc: 0.8805 - val_f1: 0.8854 - val_iou: 0.7603 - val_loss: 0.0309
Epoch 38/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9293 - f1: 0.9305 - iou: 0.8332 - loss: 0.0181 - val_acc: 0.8961 - val_f1: 0.9002 - val_iou: 0.7870 - val_loss: 0.0274
Epoch 39/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9172 - f1: 0.9186 - iou: 0.8061 - loss: 0.0189 - val_acc: 0.9336 - val_f1: 0.9348 - val_iou: 0.8512 - val_loss: 0.0218
Epoch 40/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9173 - f1: 0.9190 - iou: 0.8084 - loss: 0.0180 - val_acc: 0.9087 - val_f1: 0.9119 - val_iou: 0.8080 - val_loss: 0.0200
Epoch 41/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - acc: 0.9299 - f1: 0.9318 - iou: 0.8376 - loss: 0.0170 - val_acc: 0.9247 - val_f1: 0.9272 - val_iou: 0.8377 - val_loss: 0.0183
Epoch 42/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - acc: 0.9257 - f1: 0.9278 - iou: 0.8218 - loss: 0.0169 - val_acc: 0.8462 - val_f1: 0.8316 - val_iou: 0.6448 - val_loss: 0.0269
Epoch 43/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 26ms/step - acc: 0.9302 - f1: 0.9313 - iou: 0.8301 - loss: 0.0163 - val_acc: 0.9364 - val_f1: 0.9380 - val_iou: 0.8587 - val_loss: 0.0163
Epoch 44/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - acc: 0.9255 - f1: 0.9270 - iou: 0.8271 - loss: 0.0163 - val_acc: 0.9198 - val_f1: 0.9226 - val_iou: 0.8292 - val_loss: 0.0180
Epoch 45/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 26ms/step - acc: 0.9356 - f1: 0.9368 - iou: 0.8469 - loss: 0.0152 - val_acc: 0.9353 - val_f1: 0.9371 - val_iou: 0.8572 - val_loss: 0.0147
Epoch 46/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - acc: 0.9282 - f1: 0.9301 - iou: 0.8253 - loss: 0.0154 - val_acc: 0.9436 - val_f1: 0.9448 - val_iou: 0.8724 - val_loss: 0.0155
Epoch 47/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 27ms/step - acc: 0.9382 - f1: 0.9389 - iou: 0.8501 - loss: 0.0145 - val_acc: 0.9450 - val_f1: 0.9458 - val_iou: 0.8740 - val_loss: 0.0146
Epoch 48/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - acc: 0.9311 - f1: 0.9324 - iou: 0.8372 - loss: 0.0148 - val_acc: 0.9464 - val_f1: 0.9467 - val_iou: 0.8747 - val_loss: 0.0135
Epoch 49/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - acc: 0.9301 - f1: 0.9316 - iou: 0.8369 - loss: 0.0155 - val_acc: 0.9453 - val_f1: 0.9457 - val_iou: 0.8726 - val_loss: 0.0137
Epoch 50/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9338 - f1: 0.9350 - iou: 0.8425 - loss: 0.0147 - val_acc: 0.9469 - val_f1: 0.9472 - val_iou: 0.8757 - val_loss: 0.0140
Epoch 51/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 25ms/step - acc: 0.9367 - f1: 0.9375 - iou: 0.8475 - loss: 0.0143 - val_acc: 0.9470 - val_f1: 0.9470 - val_iou: 0.8747 - val_loss: 0.0131
Epoch 52/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - acc: 0.9360 - f1: 0.9375 - iou: 0.8457 - loss: 0.0138 - val_acc: 0.9232 - val_f1: 0.9212 - val_iou: 0.8170 - val_loss: 0.0155
Epoch 53/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9361 - f1: 0.9371 - iou: 0.8530 - loss: 0.0137 - val_acc: 0.9427 - val_f1: 0.9427 - val_iou: 0.8655 - val_loss: 0.0135
Epoch 54/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9255 - f1: 0.9271 - iou: 0.8304 - loss: 0.0149 - val_acc: 0.8588 - val_f1: 0.8441 - val_iou: 0.6648 - val_loss: 0.0221
Epoch 55/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9305 - f1: 0.9315 - iou: 0.8286 - loss: 0.0150 - val_acc: 0.9287 - val_f1: 0.9272 - val_iou: 0.8300 - val_loss: 0.0153
Epoch 56/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 27ms/step - acc: 0.9366 - f1: 0.9377 - iou: 0.8484 - loss: 0.0134 - val_acc: 0.9448 - val_f1: 0.9461 - val_iou: 0.8754 - val_loss: 0.0125
Epoch 57/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9335 - f1: 0.9347 - iou: 0.8441 - loss: 0.0138 - val_acc: 0.9500 - val_f1: 0.9507 - val_iou: 0.8845 - val_loss: 0.0117
Epoch 58/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - acc: 0.9370 - f1: 0.9383 - iou: 0.8529 - loss: 0.0134 - val_acc: 0.9498 - val_f1: 0.9497 - val_iou: 0.8804 - val_loss: 0.0122
Epoch 59/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9340 - f1: 0.9355 - iou: 0.8441 - loss: 0.0134 - val_acc: 0.9414 - val_f1: 0.9427 - val_iou: 0.8682 - val_loss: 0.0141
Epoch 60/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9350 - f1: 0.9361 - iou: 0.8412 - loss: 0.0133 - val_acc: 0.9491 - val_f1: 0.9501 - val_iou: 0.8838 - val_loss: 0.0123
Epoch 61/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 26ms/step - acc: 0.9368 - f1: 0.9381 - iou: 0.8507 - loss: 0.0129 - val_acc: 0.9523 - val_f1: 0.9529 - val_iou: 0.8891 - val_loss: 0.0111
Epoch 62/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - acc: 0.9412 - f1: 0.9422 - iou: 0.8595 - loss: 0.0120 - val_acc: 0.9458 - val_f1: 0.9469 - val_iou: 0.8767 - val_loss: 0.0130
Epoch 63/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9368 - f1: 0.9373 - iou: 0.8463 - loss: 0.0128 - val_acc: 0.9494 - val_f1: 0.9491 - val_iou: 0.8788 - val_loss: 0.0118
Epoch 64/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9349 - f1: 0.9363 - iou: 0.8462 - loss: 0.0141 - val_acc: 0.9430 - val_f1: 0.9444 - val_iou: 0.8721 - val_loss: 0.0116
Epoch 65/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 27ms/step - acc: 0.9350 - f1: 0.9364 - iou: 0.8520 - loss: 0.0137 - val_acc: 0.9559 - val_f1: 0.9562 - val_iou: 0.8956 - val_loss: 0.0106
Epoch 66/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - acc: 0.9357 - f1: 0.9369 - iou: 0.8453 - loss: 0.0129 - val_acc: 0.9503 - val_f1: 0.9501 - val_iou: 0.8814 - val_loss: 0.0114
Epoch 67/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9380 - f1: 0.9389 - iou: 0.8572 - loss: 0.0126 - val_acc: 0.9272 - val_f1: 0.9247 - val_iou: 0.8235 - val_loss: 0.0152
Epoch 68/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 26ms/step - acc: 0.9382 - f1: 0.9392 - iou: 0.8521 - loss: 0.0124 - val_acc: 0.9565 - val_f1: 0.9568 - val_iou: 0.8974 - val_loss: 0.0102
Epoch 69/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - acc: 0.9329 - f1: 0.9345 - iou: 0.8414 - loss: 0.0128 - val_acc: 0.9509 - val_f1: 0.9518 - val_iou: 0.8874 - val_loss: 0.0103
Epoch 70/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 26ms/step - acc: 0.9402 - f1: 0.9417 - iou: 0.8516 - loss: 0.0125 - val_acc: 0.9564 - val_f1: 0.9571 - val_iou: 0.8985 - val_loss: 0.0097
Epoch 71/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - acc: 0.9267 - f1: 0.9288 - iou: 0.8311 - loss: 0.0135 - val_acc: 0.9333 - val_f1: 0.9317 - val_iou: 0.8394 - val_loss: 0.0134
Epoch 72/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9325 - f1: 0.9341 - iou: 0.8330 - loss: 0.0124 - val_acc: 0.9546 - val_f1: 0.9547 - val_iou: 0.8921 - val_loss: 0.0104
Epoch 73/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9374 - f1: 0.9389 - iou: 0.8513 - loss: 0.0119 - val_acc: 0.9315 - val_f1: 0.9296 - val_iou: 0.8344 - val_loss: 0.0137
Epoch 74/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9357 - f1: 0.9366 - iou: 0.8468 - loss: 0.0126 - val_acc: 0.9107 - val_f1: 0.9062 - val_iou: 0.7842 - val_loss: 0.0151
Epoch 75/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9358 - f1: 0.9372 - iou: 0.8395 - loss: 0.0124 - val_acc: 0.9231 - val_f1: 0.9200 - val_iou: 0.8134 - val_loss: 0.0144
Epoch 76/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9351 - f1: 0.9362 - iou: 0.8478 - loss: 0.0122 - val_acc: 0.9539 - val_f1: 0.9541 - val_iou: 0.8906 - val_loss: 0.0106
Epoch 77/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9379 - f1: 0.9389 - iou: 0.8538 - loss: 0.0122 - val_acc: 0.9491 - val_f1: 0.9487 - val_iou: 0.8778 - val_loss: 0.0107
Epoch 78/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9406 - f1: 0.9417 - iou: 0.8576 - loss: 0.0118 - val_acc: 0.9564 - val_f1: 0.9568 - val_iou: 0.8972 - val_loss: 0.0098
Epoch 79/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - acc: 0.9475 - f1: 0.9482 - iou: 0.8704 - loss: 0.0105 - val_acc: 0.9566 - val_f1: 0.9572 - val_iou: 0.8984 - val_loss: 0.0095
Epoch 80/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - acc: 0.9284 - f1: 0.9301 - iou: 0.8341 - loss: 0.0127 - val_acc: 0.9578 - val_f1: 0.9581 - val_iou: 0.9002 - val_loss: 0.0096
Epoch 81/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9366 - f1: 0.9377 - iou: 0.8476 - loss: 0.0123 - val_acc: 0.9316 - val_f1: 0.9296 - val_iou: 0.8345 - val_loss: 0.0129
Epoch 82/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9497 - f1: 0.9501 - iou: 0.8798 - loss: 0.0105 - val_acc: 0.9452 - val_f1: 0.9448 - val_iou: 0.8691 - val_loss: 0.0114
Epoch 83/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9425 - f1: 0.9436 - iou: 0.8598 - loss: 0.0117 - val_acc: 0.9484 - val_f1: 0.9480 - val_iou: 0.8763 - val_loss: 0.0111
Epoch 84/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9421 - f1: 0.9430 - iou: 0.8656 - loss: 0.0120 - val_acc: 0.9221 - val_f1: 0.9189 - val_iou: 0.8108 - val_loss: 0.0148
Epoch 85/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9302 - f1: 0.9315 - iou: 0.8310 - loss: 0.0123 - val_acc: 0.9387 - val_f1: 0.9377 - val_iou: 0.8528 - val_loss: 0.0128
Epoch 86/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9348 - f1: 0.9363 - iou: 0.8439 - loss: 0.0127 - val_acc: 0.9537 - val_f1: 0.9537 - val_iou: 0.8896 - val_loss: 0.0100
Epoch 87/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9435 - f1: 0.9446 - iou: 0.8600 - loss: 0.0112 - val_acc: 0.9463 - val_f1: 0.9456 - val_iou: 0.8702 - val_loss: 0.0108
Epoch 88/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9451 - f1: 0.9458 - iou: 0.8619 - loss: 0.0109 - val_acc: 0.9500 - val_f1: 0.9497 - val_iou: 0.8801 - val_loss: 0.0104
Epoch 89/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9377 - f1: 0.9386 - iou: 0.8552 - loss: 0.0124 - val_acc: 0.9537 - val_f1: 0.9538 - val_iou: 0.8898 - val_loss: 0.0102
Epoch 90/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9421 - f1: 0.9431 - iou: 0.8570 - loss: 0.0115 - val_acc: 0.9370 - val_f1: 0.9359 - val_iou: 0.8489 - val_loss: 0.0121
Epoch 91/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9383 - f1: 0.9392 - iou: 0.8517 - loss: 0.0122 - val_acc: 0.9415 - val_f1: 0.9406 - val_iou: 0.8594 - val_loss: 0.0117
Epoch 92/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9324 - f1: 0.9339 - iou: 0.8383 - loss: 0.0122 - val_acc: 0.9504 - val_f1: 0.9500 - val_iou: 0.8806 - val_loss: 0.0109
Epoch 93/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - acc: 0.9322 - f1: 0.9323 - iou: 0.8339 - loss: 0.0130 - val_acc: 0.9561 - val_f1: 0.9566 - val_iou: 0.8973 - val_loss: 0.0099
Epoch 94/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9473 - f1: 0.9480 - iou: 0.8750 - loss: 0.0107 - val_acc: 0.9522 - val_f1: 0.9519 - val_iou: 0.8849 - val_loss: 0.0110
Epoch 95/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9326 - f1: 0.9340 - iou: 0.8331 - loss: 0.0123 - val_acc: 0.9549 - val_f1: 0.9553 - val_iou: 0.8940 - val_loss: 0.0101
Epoch 96/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9418 - f1: 0.9425 - iou: 0.8579 - loss: 0.0116 - val_acc: 0.9432 - val_f1: 0.9424 - val_iou: 0.8632 - val_loss: 0.0111
Epoch 97/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 25ms/step - acc: 0.9328 - f1: 0.9338 - iou: 0.8401 - loss: 0.0120 - val_acc: 0.9584 - val_f1: 0.9585 - val_iou: 0.9003 - val_loss: 0.0092
Epoch 98/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - acc: 0.9504 - f1: 0.9511 - iou: 0.8772 - loss: 0.0100 - val_acc: 0.9574 - val_f1: 0.9577 - val_iou: 0.8990 - val_loss: 0.0094
Epoch 99/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - acc: 0.9486 - f1: 0.9492 - iou: 0.8793 - loss: 0.0110 - val_acc: 0.9565 - val_f1: 0.9572 - val_iou: 0.8986 - val_loss: 0.0097
Epoch 100/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 25ms/step - acc: 0.9380 - f1: 0.9394 - iou: 0.8477 - loss: 0.0121 - val_acc: 0.9570 - val_f1: 0.9574 - val_iou: 0.8988 - val_loss: 0.0092
Epoch 101/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9371 - f1: 0.9384 - iou: 0.8433 - loss: 0.0127 - val_acc: 0.9560 - val_f1: 0.9561 - val_iou: 0.8951 - val_loss: 0.0092
Epoch 102/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - acc: 0.9333 - f1: 0.9344 - iou: 0.8387 - loss: 0.0126 - val_acc: 0.9503 - val_f1: 0.9497 - val_iou: 0.8796 - val_loss: 0.0108
Epoch 103/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9385 - f1: 0.9403 - iou: 0.8499 - loss: 0.0114 - val_acc: 0.9562 - val_f1: 0.9561 - val_iou: 0.8948 - val_loss: 0.0097
Epoch 104/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9477 - f1: 0.9483 - iou: 0.8708 - loss: 0.0103 - val_acc: 0.9516 - val_f1: 0.9511 - val_iou: 0.8828 - val_loss: 0.0104
Epoch 105/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9360 - f1: 0.9373 - iou: 0.8469 - loss: 0.0119 - val_acc: 0.9468 - val_f1: 0.9461 - val_iou: 0.8716 - val_loss: 0.0107
Epoch 106/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9383 - f1: 0.9389 - iou: 0.8573 - loss: 0.0117 - val_acc: 0.9363 - val_f1: 0.9347 - val_iou: 0.8455 - val_loss: 0.0119
Epoch 107/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - acc: 0.9364 - f1: 0.9374 - iou: 0.8418 - loss: 0.0119 - val_acc: 0.9483 - val_f1: 0.9478 - val_iou: 0.8756 - val_loss: 0.0105
Epoch 108/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9368 - f1: 0.9379 - iou: 0.8481 - loss: 0.0116 - val_acc: 0.9597 - val_f1: 0.9597 - val_iou: 0.9031 - val_loss: 0.0095
Epoch 109/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9315 - f1: 0.9332 - iou: 0.8336 - loss: 0.0120 - val_acc: 0.9505 - val_f1: 0.9501 - val_iou: 0.8808 - val_loss: 0.0100
Epoch 110/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9418 - f1: 0.9428 - iou: 0.8565 - loss: 0.0112 - val_acc: 0.9407 - val_f1: 0.9394 - val_iou: 0.8563 - val_loss: 0.0117
Epoch 111/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - acc: 0.9356 - f1: 0.9373 - iou: 0.8380 - loss: 0.0120 - val_acc: 0.9542 - val_f1: 0.9540 - val_iou: 0.8900 - val_loss: 0.0097
Epoch 112/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9438 - f1: 0.9447 - iou: 0.8622 - loss: 0.0113 - val_acc: 0.9574 - val_f1: 0.9574 - val_iou: 0.8977 - val_loss: 0.0094
Epoch 113/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9464 - f1: 0.9471 - iou: 0.8689 - loss: 0.0114 - val_acc: 0.9552 - val_f1: 0.9557 - val_iou: 0.8948 - val_loss: 0.0094
Epoch 114/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9497 - f1: 0.9502 - iou: 0.8774 - loss: 0.0100 - val_acc: 0.9524 - val_f1: 0.9525 - val_iou: 0.8870 - val_loss: 0.0101
Epoch 115/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9349 - f1: 0.9357 - iou: 0.8399 - loss: 0.0117 - val_acc: 0.9525 - val_f1: 0.9526 - val_iou: 0.8873 - val_loss: 0.0104
Epoch 116/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9482 - f1: 0.9486 - iou: 0.8757 - loss: 0.0110 - val_acc: 0.9575 - val_f1: 0.9575 - val_iou: 0.8983 - val_loss: 0.0096
Epoch 117/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9370 - f1: 0.9381 - iou: 0.8431 - loss: 0.0118 - val_acc: 0.9505 - val_f1: 0.9501 - val_iou: 0.8810 - val_loss: 0.0105
Epoch 118/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9477 - f1: 0.9484 - iou: 0.8716 - loss: 0.0108 - val_acc: 0.9563 - val_f1: 0.9563 - val_iou: 0.8954 - val_loss: 0.0095
Epoch 119/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9495 - f1: 0.9502 - iou: 0.8776 - loss: 0.0102 - val_acc: 0.9579 - val_f1: 0.9584 - val_iou: 0.9011 - val_loss: 0.0095
Epoch 120/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9426 - f1: 0.9436 - iou: 0.8632 - loss: 0.0110 - val_acc: 0.9518 - val_f1: 0.9514 - val_iou: 0.8835 - val_loss: 0.0100
Epoch 121/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9465 - f1: 0.9469 - iou: 0.8653 - loss: 0.0103 - val_acc: 0.9543 - val_f1: 0.9540 - val_iou: 0.8896 - val_loss: 0.0094
Epoch 122/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9388 - f1: 0.9393 - iou: 0.8528 - loss: 0.0115 - val_acc: 0.9485 - val_f1: 0.9478 - val_iou: 0.8752 - val_loss: 0.0099
Epoch 123/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 28ms/step - acc: 0.9431 - f1: 0.9440 - iou: 0.8602 - loss: 0.0111 - val_acc: 0.9582 - val_f1: 0.9585 - val_iou: 0.9010 - val_loss: 0.0090
Epoch 124/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9406 - f1: 0.9415 - iou: 0.8536 - loss: 0.0110 - val_acc: 0.9587 - val_f1: 0.9586 - val_iou: 0.9005 - val_loss: 0.0090
Epoch 125/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - acc: 0.9455 - f1: 0.9463 - iou: 0.8622 - loss: 0.0104 - val_acc: 0.9471 - val_f1: 0.9464 - val_iou: 0.8721 - val_loss: 0.0108
Epoch 126/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9474 - f1: 0.9483 - iou: 0.8671 - loss: 0.0103 - val_acc: 0.9468 - val_f1: 0.9460 - val_iou: 0.8710 - val_loss: 0.0107
Epoch 127/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9398 - f1: 0.9407 - iou: 0.8503 - loss: 0.0110 - val_acc: 0.9564 - val_f1: 0.9562 - val_iou: 0.8947 - val_loss: 0.0093
Epoch 128/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9343 - f1: 0.9356 - iou: 0.8421 - loss: 0.0121 - val_acc: 0.9510 - val_f1: 0.9504 - val_iou: 0.8811 - val_loss: 0.0101
Epoch 129/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 25ms/step - acc: 0.9445 - f1: 0.9451 - iou: 0.8684 - loss: 0.0104 - val_acc: 0.9573 - val_f1: 0.9571 - val_iou: 0.8969 - val_loss: 0.0089
Epoch 130/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9454 - f1: 0.9457 - iou: 0.8718 - loss: 0.0115 - val_acc: 0.9597 - val_f1: 0.9596 - val_iou: 0.9025 - val_loss: 0.0086
Epoch 131/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - acc: 0.9475 - f1: 0.9481 - iou: 0.8715 - loss: 0.0100 - val_acc: 0.9484 - val_f1: 0.9478 - val_iou: 0.8754 - val_loss: 0.0103
Epoch 132/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9502 - f1: 0.9510 - iou: 0.8743 - loss: 0.0095 - val_acc: 0.9529 - val_f1: 0.9527 - val_iou: 0.8869 - val_loss: 0.0096
Epoch 133/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9489 - f1: 0.9495 - iou: 0.8765 - loss: 0.0103 - val_acc: 0.9563 - val_f1: 0.9561 - val_iou: 0.8947 - val_loss: 0.0090
Epoch 134/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9438 - f1: 0.9445 - iou: 0.8651 - loss: 0.0111 - val_acc: 0.9596 - val_f1: 0.9596 - val_iou: 0.9027 - val_loss: 0.0090
Epoch 135/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9468 - f1: 0.9477 - iou: 0.8732 - loss: 0.0106 - val_acc: 0.9559 - val_f1: 0.9558 - val_iou: 0.8940 - val_loss: 0.0096
Epoch 136/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9532 - f1: 0.9538 - iou: 0.8852 - loss: 0.0098 - val_acc: 0.9569 - val_f1: 0.9567 - val_iou: 0.8961 - val_loss: 0.0095
Epoch 137/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9493 - f1: 0.9500 - iou: 0.8770 - loss: 0.0103 - val_acc: 0.9589 - val_f1: 0.9589 - val_iou: 0.9012 - val_loss: 0.0090
Epoch 138/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9462 - f1: 0.9472 - iou: 0.8666 - loss: 0.0104 - val_acc: 0.9544 - val_f1: 0.9540 - val_iou: 0.8895 - val_loss: 0.0098
Epoch 139/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9497 - f1: 0.9504 - iou: 0.8763 - loss: 0.0097 - val_acc: 0.9593 - val_f1: 0.9592 - val_iou: 0.9017 - val_loss: 0.0089
Epoch 140/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9389 - f1: 0.9403 - iou: 0.8516 - loss: 0.0114 - val_acc: 0.9546 - val_f1: 0.9543 - val_iou: 0.8902 - val_loss: 0.0099
Epoch 141/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9479 - f1: 0.9487 - iou: 0.8650 - loss: 0.0098 - val_acc: 0.9595 - val_f1: 0.9596 - val_iou: 0.9030 - val_loss: 0.0088
Epoch 142/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9490 - f1: 0.9498 - iou: 0.8756 - loss: 0.0102 - val_acc: 0.9407 - val_f1: 0.9395 - val_iou: 0.8566 - val_loss: 0.0112
Epoch 143/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9424 - f1: 0.9433 - iou: 0.8566 - loss: 0.0109 - val_acc: 0.9544 - val_f1: 0.9541 - val_iou: 0.8901 - val_loss: 0.0095
Epoch 144/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - acc: 0.9512 - f1: 0.9520 - iou: 0.8795 - loss: 0.0102 - val_acc: 0.9598 - val_f1: 0.9598 - val_iou: 0.9033 - val_loss: 0.0087
Epoch 145/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9444 - f1: 0.9453 - iou: 0.8646 - loss: 0.0105 - val_acc: 0.9577 - val_f1: 0.9577 - val_iou: 0.8983 - val_loss: 0.0088
Epoch 146/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9463 - f1: 0.9472 - iou: 0.8671 - loss: 0.0107 - val_acc: 0.9516 - val_f1: 0.9512 - val_iou: 0.8831 - val_loss: 0.0099
Epoch 147/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9560 - f1: 0.9566 - iou: 0.8860 - loss: 0.0093 - val_acc: 0.9551 - val_f1: 0.9549 - val_iou: 0.8918 - val_loss: 0.0091
Epoch 148/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9442 - f1: 0.9450 - iou: 0.8620 - loss: 0.0111 - val_acc: 0.9555 - val_f1: 0.9553 - val_iou: 0.8927 - val_loss: 0.0092
Epoch 149/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9470 - f1: 0.9475 - iou: 0.8688 - loss: 0.0101 - val_acc: 0.9591 - val_f1: 0.9590 - val_iou: 0.9012 - val_loss: 0.0088
Epoch 150/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9515 - f1: 0.9520 - iou: 0.8834 - loss: 0.0108 - val_acc: 0.9583 - val_f1: 0.9583 - val_iou: 0.8998 - val_loss: 0.0089
Epoch 151/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 27ms/step - acc: 0.9444 - f1: 0.9450 - iou: 0.8654 - loss: 0.0107 - val_acc: 0.9606 - val_f1: 0.9605 - val_iou: 0.9049 - val_loss: 0.0085
Epoch 152/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 18ms/step - acc: 0.9520 - f1: 0.9526 - iou: 0.8814 - loss: 0.0095 - val_acc: 0.9536 - val_f1: 0.9532 - val_iou: 0.8878 - val_loss: 0.0094
Epoch 153/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 25ms/step - acc: 0.9408 - f1: 0.9413 - iou: 0.8554 - loss: 0.0107 - val_acc: 0.9619 - val_f1: 0.9620 - val_iou: 0.9084 - val_loss: 0.0083
Epoch 154/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 21ms/step - acc: 0.9508 - f1: 0.9516 - iou: 0.8788 - loss: 0.0100 - val_acc: 0.9557 - val_f1: 0.9555 - val_iou: 0.8931 - val_loss: 0.0093
Epoch 155/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9465 - f1: 0.9469 - iou: 0.8695 - loss: 0.0101 - val_acc: 0.9598 - val_f1: 0.9598 - val_iou: 0.9035 - val_loss: 0.0086
Epoch 156/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9566 - f1: 0.9570 - iou: 0.8941 - loss: 0.0094 - val_acc: 0.9575 - val_f1: 0.9574 - val_iou: 0.8978 - val_loss: 0.0089
Epoch 157/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9494 - f1: 0.9500 - iou: 0.8766 - loss: 0.0104 - val_acc: 0.9590 - val_f1: 0.9591 - val_iou: 0.9016 - val_loss: 0.0088
Epoch 158/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9506 - f1: 0.9513 - iou: 0.8779 - loss: 0.0095 - val_acc: 0.9547 - val_f1: 0.9544 - val_iou: 0.8904 - val_loss: 0.0093
Epoch 159/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9489 - f1: 0.9493 - iou: 0.8759 - loss: 0.0108 - val_acc: 0.9578 - val_f1: 0.9577 - val_iou: 0.8983 - val_loss: 0.0089
Epoch 160/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9574 - f1: 0.9580 - iou: 0.8917 - loss: 0.0093 - val_acc: 0.9561 - val_f1: 0.9559 - val_iou: 0.8940 - val_loss: 0.0090
Epoch 161/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9450 - f1: 0.9456 - iou: 0.8683 - loss: 0.0106 - val_acc: 0.9502 - val_f1: 0.9496 - val_iou: 0.8792 - val_loss: 0.0099
Epoch 162/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9445 - f1: 0.9454 - iou: 0.8579 - loss: 0.0102 - val_acc: 0.9553 - val_f1: 0.9550 - val_iou: 0.8920 - val_loss: 0.0094
Epoch 163/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9397 - f1: 0.9407 - iou: 0.8538 - loss: 0.0111 - val_acc: 0.9573 - val_f1: 0.9572 - val_iou: 0.8971 - val_loss: 0.0090
Epoch 164/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - acc: 0.9475 - f1: 0.9485 - iou: 0.8685 - loss: 0.0100 - val_acc: 0.9575 - val_f1: 0.9575 - val_iou: 0.8978 - val_loss: 0.0090
Epoch 165/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9491 - f1: 0.9496 - iou: 0.8777 - loss: 0.0102 - val_acc: 0.9558 - val_f1: 0.9557 - val_iou: 0.8937 - val_loss: 0.0092
Epoch 166/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9523 - f1: 0.9530 - iou: 0.8792 - loss: 0.0093 - val_acc: 0.9550 - val_f1: 0.9548 - val_iou: 0.8916 - val_loss: 0.0091
Epoch 167/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9495 - f1: 0.9503 - iou: 0.8690 - loss: 0.0094 - val_acc: 0.9579 - val_f1: 0.9579 - val_iou: 0.8989 - val_loss: 0.0087
Epoch 168/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9498 - f1: 0.9501 - iou: 0.8801 - loss: 0.0101 - val_acc: 0.9571 - val_f1: 0.9570 - val_iou: 0.8969 - val_loss: 0.0088
Epoch 169/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9451 - f1: 0.9459 - iou: 0.8696 - loss: 0.0104 - val_acc: 0.9561 - val_f1: 0.9560 - val_iou: 0.8942 - val_loss: 0.0089
Epoch 170/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9530 - f1: 0.9536 - iou: 0.8844 - loss: 0.0094 - val_acc: 0.9552 - val_f1: 0.9549 - val_iou: 0.8917 - val_loss: 0.0091
Epoch 171/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9436 - f1: 0.9442 - iou: 0.8629 - loss: 0.0107 - val_acc: 0.9553 - val_f1: 0.9550 - val_iou: 0.8919 - val_loss: 0.0092
Epoch 172/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9533 - f1: 0.9539 - iou: 0.8827 - loss: 0.0095 - val_acc: 0.9581 - val_f1: 0.9579 - val_iou: 0.8987 - val_loss: 0.0088
Epoch 173/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9518 - f1: 0.9523 - iou: 0.8841 - loss: 0.0101 - val_acc: 0.9577 - val_f1: 0.9575 - val_iou: 0.8976 - val_loss: 0.0089
Epoch 174/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9511 - f1: 0.9518 - iou: 0.8803 - loss: 0.0097 - val_acc: 0.9569 - val_f1: 0.9567 - val_iou: 0.8959 - val_loss: 0.0089
Epoch 175/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9529 - f1: 0.9533 - iou: 0.8848 - loss: 0.0095 - val_acc: 0.9587 - val_f1: 0.9586 - val_iou: 0.9005 - val_loss: 0.0085
Epoch 176/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9474 - f1: 0.9483 - iou: 0.8707 - loss: 0.0105 - val_acc: 0.9564 - val_f1: 0.9561 - val_iou: 0.8945 - val_loss: 0.0090
Epoch 177/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9524 - f1: 0.9531 - iou: 0.8807 - loss: 0.0094 - val_acc: 0.9560 - val_f1: 0.9558 - val_iou: 0.8938 - val_loss: 0.0090
Epoch 178/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9564 - f1: 0.9570 - iou: 0.8858 - loss: 0.0088 - val_acc: 0.9562 - val_f1: 0.9561 - val_iou: 0.8945 - val_loss: 0.0089
Epoch 179/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9532 - f1: 0.9537 - iou: 0.8804 - loss: 0.0096 - val_acc: 0.9556 - val_f1: 0.9554 - val_iou: 0.8929 - val_loss: 0.0091
Epoch 180/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9484 - f1: 0.9492 - iou: 0.8707 - loss: 0.0103 - val_acc: 0.9559 - val_f1: 0.9557 - val_iou: 0.8937 - val_loss: 0.0090
Epoch 181/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9481 - f1: 0.9486 - iou: 0.8731 - loss: 0.0105 - val_acc: 0.9567 - val_f1: 0.9565 - val_iou: 0.8954 - val_loss: 0.0089
Epoch 182/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9560 - f1: 0.9565 - iou: 0.8888 - loss: 0.0084 - val_acc: 0.9579 - val_f1: 0.9578 - val_iou: 0.8985 - val_loss: 0.0087
Epoch 183/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 25ms/step - acc: 0.9462 - f1: 0.9469 - iou: 0.8683 - loss: 0.0102 - val_acc: 0.9574 - val_f1: 0.9572 - val_iou: 0.8971 - val_loss: 0.0088
Epoch 184/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - acc: 0.9529 - f1: 0.9535 - iou: 0.8811 - loss: 0.0098 - val_acc: 0.9570 - val_f1: 0.9568 - val_iou: 0.8961 - val_loss: 0.0089
Epoch 185/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9539 - f1: 0.9545 - iou: 0.8825 - loss: 0.0096 - val_acc: 0.9564 - val_f1: 0.9562 - val_iou: 0.8946 - val_loss: 0.0090
Epoch 186/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9498 - f1: 0.9509 - iou: 0.8714 - loss: 0.0097 - val_acc: 0.9564 - val_f1: 0.9562 - val_iou: 0.8946 - val_loss: 0.0090
Epoch 187/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9533 - f1: 0.9538 - iou: 0.8850 - loss: 0.0092 - val_acc: 0.9565 - val_f1: 0.9563 - val_iou: 0.8950 - val_loss: 0.0090
Epoch 188/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9451 - f1: 0.9456 - iou: 0.8674 - loss: 0.0104 - val_acc: 0.9569 - val_f1: 0.9568 - val_iou: 0.8960 - val_loss: 0.0089
Epoch 189/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9476 - f1: 0.9484 - iou: 0.8714 - loss: 0.0099 - val_acc: 0.9573 - val_f1: 0.9571 - val_iou: 0.8968 - val_loss: 0.0088
Epoch 190/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9514 - f1: 0.9520 - iou: 0.8815 - loss: 0.0093 - val_acc: 0.9580 - val_f1: 0.9579 - val_iou: 0.8987 - val_loss: 0.0087
Epoch 191/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9591 - f1: 0.9593 - iou: 0.9002 - loss: 0.0088 - val_acc: 0.9580 - val_f1: 0.9579 - val_iou: 0.8986 - val_loss: 0.0087
Epoch 192/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9532 - f1: 0.9538 - iou: 0.8819 - loss: 0.0092 - val_acc: 0.9581 - val_f1: 0.9580 - val_iou: 0.8989 - val_loss: 0.0087
Epoch 193/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9504 - f1: 0.9511 - iou: 0.8762 - loss: 0.0095 - val_acc: 0.9582 - val_f1: 0.9581 - val_iou: 0.8993 - val_loss: 0.0087
Epoch 194/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 24ms/step - acc: 0.9509 - f1: 0.9517 - iou: 0.8770 - loss: 0.0097 - val_acc: 0.9584 - val_f1: 0.9582 - val_iou: 0.8995 - val_loss: 0.0087
Epoch 195/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 19ms/step - acc: 0.9505 - f1: 0.9509 - iou: 0.8819 - loss: 0.0101 - val_acc: 0.9578 - val_f1: 0.9577 - val_iou: 0.8981 - val_loss: 0.0087
Epoch 196/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 0s 20ms/step - acc: 0.9522 - f1: 0.9526 - iou: 0.8827 - loss: 0.0096 - val_acc: 0.9577 - val_f1: 0.9575 - val_iou: 0.8978 - val_loss: 0.0088
Epoch 197/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 23ms/step - acc: 0.9533 - f1: 0.9539 - iou: 0.8851 - loss: 0.0098 - val_acc: 0.9576 - val_f1: 0.9575 - val_iou: 0.8976 - val_loss: 0.0088
Epoch 198/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9455 - f1: 0.9466 - iou: 0.8675 - loss: 0.0105 - val_acc: 0.9573 - val_f1: 0.9571 - val_iou: 0.8968 - val_loss: 0.0088
Epoch 199/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 21ms/step - acc: 0.9528 - f1: 0.9536 - iou: 0.8824 - loss: 0.0095 - val_acc: 0.9576 - val_f1: 0.9574 - val_iou: 0.8975 - val_loss: 0.0088
Epoch 200/200
25/25 ━━━━━━━━━━━━━━━━━━━━ 1s 22ms/step - acc: 0.9470 - f1: 0.9476 - iou: 0.8696 - loss: 0.0099 - val_acc: 0.9575 - val_f1: 0.9573 - val_iou: 0.8972 - val_loss: 0.0088
31/31 ━━━━━━━━━━━━━━━━━━━━ 1s 1ms/step
31/31 ━━━━━━━━━━━━━━━━━━━━ 0s 1ms/step - acc: 0.9635 - f1: 0.9637 - iou: 0.9116 - loss: 0.0083
```

```text
INFO     [TEST SET] acc=96.19%, f1=96.20%, iou=90.84%, loss=0.83%                                      train.py:222
```

![Saved figure from notebook cell 25](https://ambiqai.github.io/sleepkit/notebooks/train-detect-model-24-5.png)

## Model evaluation

Now that we have trained the model, we will evaluate the model on the test dataset. Similar to training, we will provide the high-level configuration to the task process.

```python
task.evaluate(params)
```

```text
Subject: 100%|██████████| 56/56 [00:19<00:00,  2.90it/s]
```

```text
INFO     Testing Results                                                                            evaluate.py:130
```

```text
19/19 ━━━━━━━━━━━━━━━━━━━━ 2s 27ms/step - acc: 0.9654 - f1: 0.9657 - iou: 0.9123 - loss: 0.0076
```

```text
INFO     [TEST SET] acc=95.87%, f1=95.91%, iou=89.27%, loss=0.85%                                   evaluate.py:132
```

## Confusion matrix

Let's visualize the confusion matrix to understand the model's performance on each class.

```python
IPython.display.Image(filename=params.job_dir / "confusion_matrix_test.png", width=500)
```

![Saved figure from notebook cell 29](https://ambiqai.github.io/sleepkit/notebooks/train-detect-model-28-0.png)

## Export model to TF Lite / TFLM

Once we have trained and evaluated the model, we need to export the model into a format that can be used for inference on the edge. Currently, we export the model to TensorFlow Lite flatbuffer format. This will also generate a C header file that can be used with TensorFlow Lite for Microcontrollers (TFLM).

### Apply post-training quantization (PTQ)

For running on bare metal, we will perform post-training quantization to convert the model to an 8-bit integer model. The weights and activations will be quantized to 8-bits and biases will be quantized to 32-bits. This will reduce the model size and improve the inference speed.

```python
quantization = sk.QuantizationParams(
    enabled=True,
    format="FP32",
    io_type="float32",
    conversion="CONCRETE",
)
params.quantization = quantization
```

```python
# TF dumps a lot of info to stdout, so we redirect it to /dev/null
with open(os.devnull, 'w') as devnull:
    with contextlib.redirect_stdout(devnull), contextlib.redirect_stderr(devnull):
        task.export(params)
```

```text
[12/16/25 00:29:04] WARNING  WARNING:absl:Please consider providing the trackable_obj argument in the  lite.py:2203
                             from_concrete_functions. Providing without the trackable_obj argument is
                             deprecated and it will use the deprecated conversion path.
```

```text
I0000 00:00:1765844944.016353    4340 devices.cc:67] Number of eligible GPUs (core count >= 8, compute capability >= 0.0): 1
I0000 00:00:1765844944.016431    4340 single_machine.cc:376] Starting new session
I0000 00:00:1765844944.019835    4340 gpu_device.cc:2020] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 15543 MB memory:  -> device: 0, name: NVIDIA GeForce RTX 4090, pci bus id: 0000:01:00.0, compute capability: 8.9
W0000 00:00:1765844944.106038    4340 tf_tfl_flatbuffer_helpers.cc:364] Ignored output_format.
W0000 00:00:1765844944.106051    4340 tf_tfl_flatbuffer_helpers.cc:367] Ignored drop_control_dependency.
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
```

```text
INFO     [TF METRICS] LOSS=0.2055 ACC=0.9500 F1=0.9506                                                export.py:111
```

```text
INFO     [TFL METRICS] LOSS=0.2055 ACC=0.9500 F1=0.9506                                               export.py:112
```

```text
INFO     Validation passed (0.00%)                                                                    export.py:120
```

## Run inference demo

We will run a demo on the PC to verify that the model is working as expected. The demo will load the model and run inferences across a randomly selected subject. The demo will also provide the model's prediction and the corresponding class name.

```python
task.demo(params=params)
```

```text
Inference: 100%|██████████| 425/425 [00:14<00:00, 28.87it/s]
```

![Saved figure from notebook cell 34](https://ambiqai.github.io/sleepkit/notebooks/train-detect-model-33-1.png)

```python

```
