Train Sleep Detection Model
This page uses the repository notebook, whose saved training and export logs date to December 2025. The previous documentation copy 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
Section titled “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: 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.
import osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'import IPythonimport contextlibimport tempfilefrom pathlib import Pathimport kerasimport helia_edge as heliaimport sleepkit as sk/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# Be sure to set the dataset path to the correct locationdatasets_dir = Path(os.getenv('SK_DATASET_PATH', '../../datasets'))
plot_theme = sk.utils.dark_themehelia.utils.silence_tensorflow()sk.utils.setup_plotting(plot_theme)logger = helia.utils.setup_logger(__name__)Configure datasets
Section titled “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.
datasets = [sk.NamedParams( name="cmidss", params=dict( path=datasets_dir / "cmidss", ))]Target classes
Section titled “Target classes”For this task, we are going to simply classify the data into two classes: SLEEP and AWAKE.
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
Section titled “Feature set”From the dataset, we will create a feature set using the FS-W-A-5 features. 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.
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
Section titled “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.
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
Section titled “Task configuration”Here we provide the complete configuration for the task. This includes the dataset configuration, features, model architecture, and training parameters.
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
Section titled “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.
task = sk.TaskFactory.get("detect")Download the datasets
Section titled “Download the datasets”We will download the datasets using the sleepkit library. If already downloaded, this step will be skipped.
task.download(params=params)Generate the features
Section titled “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.
task.feature(params=params)Gen features for cmidss: 100%|██████████| 277/277 [02:02<00:00, 2.27it/s]Visualize the model
Section titled “Visualize the model”Lets quickly instantiate and visualize the model.
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))WARNING: All log messages before absl::InitializeLog() is called are written to STDERRI0000 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.9Model: "functional"Saved output
┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓┃ 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[… │└─────────────────────┴───────────────────┴────────────┴───────────────────┘ Total params: 9,364 (36.58 KB) Trainable params: 8,832 (34.50 KB) Non-trainable params: 532 (2.08 KB)Train the model
Section titled “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.
task.train(params)Epoch 1/200 6/25 ━━━━━━━━━━━━━━━━━━━━ 0s 30ms/step - acc: 0.4901 - f1: 0.5407 - iou: 0.2969 - loss: 0.4225I0000 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
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.3326Epoch 2/20025/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.2935Epoch 3/20025/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.2586Epoch 4/20025/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.2293Epoch 5/20025/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.2039Epoch 6/20025/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.1816Epoch 7/20025/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.1636Epoch 8/20025/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.1487Epoch 9/20025/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.1361Epoch 10/20025/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.1246Epoch 11/20025/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.1162Epoch 12/20025/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.1087Epoch 13/20025/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.1018Epoch 14/20025/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.0988Epoch 15/20025/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.0963Epoch 16/20025/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.0929Epoch 17/20025/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.0911Epoch 18/20025/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.0858Epoch 19/20025/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.0884Epoch 20/20025/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.0870Epoch 21/20025/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.0845Epoch 22/20025/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.0754Epoch 23/20025/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.0757Epoch 24/20025/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.0752Epoch 25/20025/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.0772Epoch 26/20025/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.0770Epoch 27/20025/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.0673Epoch 28/20025/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.0585Epoch 29/20025/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.0659Epoch 30/20025/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.0507Epoch 31/20025/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.0504Epoch 32/20025/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.0350Epoch 33/20025/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.0371Epoch 34/20025/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.0442Epoch 35/20025/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.0323Epoch 36/20025/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.0310Epoch 37/20025/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.0309Epoch 38/20025/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.0274Epoch 39/20025/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.0218Epoch 40/20025/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.0200Epoch 41/20025/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.0183Epoch 42/20025/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.0269Epoch 43/20025/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.0163Epoch 44/20025/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.0180Epoch 45/20025/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.0147Epoch 46/20025/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.0155Epoch 47/20025/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.0146Epoch 48/20025/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.0135Epoch 49/20025/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.0137Epoch 50/20025/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.0140Epoch 51/20025/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.0131Epoch 52/20025/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.0155Epoch 53/20025/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.0135Epoch 54/20025/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.0221Epoch 55/20025/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.0153Epoch 56/20025/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.0125Epoch 57/20025/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.0117Epoch 58/20025/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.0122Epoch 59/20025/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.0141Epoch 60/20025/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.0123Epoch 61/20025/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.0111Epoch 62/20025/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.0130Epoch 63/20025/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.0118Epoch 64/20025/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.0116Epoch 65/20025/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.0106Epoch 66/20025/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.0114Epoch 67/20025/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.0152Epoch 68/20025/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.0102Epoch 69/20025/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.0103Epoch 70/20025/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.0097Epoch 71/20025/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.0134Epoch 72/20025/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.0104Epoch 73/20025/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.0137Epoch 74/20025/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.0151Epoch 75/20025/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.0144Epoch 76/20025/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.0106Epoch 77/20025/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.0107Epoch 78/20025/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.0098Epoch 79/20025/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.0095Epoch 80/20025/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.0096Epoch 81/20025/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.0129Epoch 82/20025/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.0114Epoch 83/20025/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.0111Epoch 84/20025/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.0148Epoch 85/20025/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.0128Epoch 86/20025/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.0100Epoch 87/20025/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.0108Epoch 88/20025/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.0104Epoch 89/20025/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.0102Epoch 90/20025/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.0121Epoch 91/20025/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.0117Epoch 92/20025/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.0109Epoch 93/20025/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.0099Epoch 94/20025/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.0110Epoch 95/20025/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.0101Epoch 96/20025/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.0111Epoch 97/20025/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.0092Epoch 98/20025/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.0094Epoch 99/20025/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.0097Epoch 100/20025/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.0092Epoch 101/20025/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.0092Epoch 102/20025/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.0108Epoch 103/20025/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.0097Epoch 104/20025/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.0104Epoch 105/20025/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.0107Epoch 106/20025/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.0119Epoch 107/20025/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.0105Epoch 108/20025/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.0095Epoch 109/20025/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.0100Epoch 110/20025/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.0117Epoch 111/20025/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.0097Epoch 112/20025/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.0094Epoch 113/20025/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.0094Epoch 114/20025/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.0101Epoch 115/20025/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.0104Epoch 116/20025/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.0096Epoch 117/20025/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.0105Epoch 118/20025/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.0095Epoch 119/20025/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.0095Epoch 120/20025/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.0100Epoch 121/20025/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.0094Epoch 122/20025/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.0099Epoch 123/20025/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.0090Epoch 124/20025/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.0090Epoch 125/20025/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.0108Epoch 126/20025/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.0107Epoch 127/20025/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.0093Epoch 128/20025/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.0101Epoch 129/20025/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.0089Epoch 130/20025/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.0086Epoch 131/20025/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.0103Epoch 132/20025/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.0096Epoch 133/20025/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.0090Epoch 134/20025/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.0090Epoch 135/20025/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.0096Epoch 136/20025/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.0095Epoch 137/20025/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.0090Epoch 138/20025/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.0098Epoch 139/20025/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.0089Epoch 140/20025/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.0099Epoch 141/20025/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.0088Epoch 142/20025/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.0112Epoch 143/20025/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.0095Epoch 144/20025/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.0087Epoch 145/20025/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.0088Epoch 146/20025/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.0099Epoch 147/20025/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.0091Epoch 148/20025/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.0092Epoch 149/20025/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.0088Epoch 150/20025/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.0089Epoch 151/20025/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.0085Epoch 152/20025/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.0094Epoch 153/20025/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.0083Epoch 154/20025/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.0093Epoch 155/20025/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.0086Epoch 156/20025/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.0089Epoch 157/20025/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.0088Epoch 158/20025/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.0093Epoch 159/20025/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.0089Epoch 160/20025/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.0090Epoch 161/20025/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.0099Epoch 162/20025/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.0094Epoch 163/20025/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.0090Epoch 164/20025/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.0090Epoch 165/20025/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.0092Epoch 166/20025/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.0091Epoch 167/20025/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.0087Epoch 168/20025/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.0088Epoch 169/20025/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.0089Epoch 170/20025/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.0091Epoch 171/20025/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.0092Epoch 172/20025/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.0088Epoch 173/20025/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.0089Epoch 174/20025/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.0089Epoch 175/20025/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.0085Epoch 176/20025/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.0090Epoch 177/20025/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.0090Epoch 178/20025/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.0089Epoch 179/20025/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.0091Epoch 180/20025/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.0090Epoch 181/20025/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.0089Epoch 182/20025/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.0087Epoch 183/20025/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.0088Epoch 184/20025/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.0089Epoch 185/20025/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.0090Epoch 186/20025/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.0090Epoch 187/20025/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.0090Epoch 188/20025/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.0089Epoch 189/20025/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.0088Epoch 190/20025/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.0087Epoch 191/20025/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.0087Epoch 192/20025/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.0087Epoch 193/20025/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.0087Epoch 194/20025/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.0087Epoch 195/20025/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.0087Epoch 196/20025/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.0088Epoch 197/20025/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.0088Epoch 198/20025/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.0088Epoch 199/20025/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.0088Epoch 200/20025/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.008831/31 ━━━━━━━━━━━━━━━━━━━━ 1s 1ms/step31/31 ━━━━━━━━━━━━━━━━━━━━ 0s 1ms/step - acc: 0.9635 - f1: 0.9637 - iou: 0.9116 - loss: 0.0083INFO [TEST SET] acc=96.19%, f1=96.20%, iou=90.84%, loss=0.83% train.py:222
Model evaluation
Section titled “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.
task.evaluate(params)Subject: 100%|██████████| 56/56 [00:19<00:00, 2.90it/s]INFO Testing Results evaluate.py:13019/19 ━━━━━━━━━━━━━━━━━━━━ 2s 27ms/step - acc: 0.9654 - f1: 0.9657 - iou: 0.9123 - loss: 0.0076INFO [TEST SET] acc=95.87%, f1=95.91%, iou=89.27%, loss=0.85% evaluate.py:132Confusion matrix
Section titled “Confusion matrix”Let’s visualize the confusion matrix to understand the model’s performance on each class.
IPython.display.Image(filename=params.job_dir / "confusion_matrix_test.png", width=500)
Export model to TF Lite / TFLM
Section titled “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)
Section titled “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.
quantization = sk.QuantizationParams( enabled=True, format="FP32", io_type="float32", conversion="CONCRETE",)params.quantization = quantization# TF dumps a lot of info to stdout, so we redirect it to /dev/nullwith open(os.devnull, 'w') as devnull: with contextlib.redirect_stdout(devnull), contextlib.redirect_stderr(devnull): task.export(params)[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.I0000 00:00:1765844944.016353 4340 devices.cc:67] Number of eligible GPUs (core count >= 8, compute capability >= 0.0): 1I0000 00:00:1765844944.016431 4340 single_machine.cc:376] Starting new sessionI0000 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.9W0000 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.INFO [TF METRICS] LOSS=0.2055 ACC=0.9500 F1=0.9506 export.py:111INFO [TFL METRICS] LOSS=0.2055 ACC=0.9500 F1=0.9506 export.py:112INFO Validation passed (0.00%) export.py:120Run inference demo
Section titled “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.
task.demo(params=params)Inference: 100%|██████████| 425/425 [00:14<00:00, 28.87it/s]