{
"cells": [
{
"cell_type": "markdown",
"id": "28f36efa-b9f8-4935-a403-a4010cdbad8e",
"metadata": {},
"source": [
""
]
},
{
"cell_type": "markdown",
"id": "fa0ee592-705e-49c5-a26c-dd7cacfbb545",
"metadata": {},
"source": [
"# Computer Vision for Industrial Inspection #"
]
},
{
"cell_type": "markdown",
"id": "17a48909-8799-4b25-bd11-91cc92fb46a1",
"metadata": {
"jp-MarkdownHeadingCollapsed": true
},
"source": [
"## Part 2 - Model Training with Transfer Learning ##\n",
"In this notebook, you will learn how to train a classification model with the TAO Toolkit using pre-trained ResNet50 weights. \n",
"\n",
"**Table of Contents**\n",
" \n",
"This notebook covers the below sections: \n",
"1. [Introduction to TAO Toolkit](#s2-1)\n",
" * [Transfer Learning](#s2-1.1)\n",
" * [Vision AI Pre-Trained Models Supported](#s2-1.2)\n",
" * [TAO Toolkit Workflow](#s2-1.3)\n",
" * [TAO Launcher, CLI (Command Line Interface), and Spec Files](#s2-1.4)\n",
" * [Set Up Environment Variables](#s2-1.5)\n",
" * [Exercise #1 - Explore TAO Toolkit CLI](#s2-e1)\n",
"2. [Training a Classification Model](#s2-2)\n",
" * [Preparation for Model Training](#s2-2.1)\n",
" * [Download Pre-Trained Model](#s2-2.2)\n",
" * [Prepare Dataset](#s2-2.3)\n",
" * [Model Training](#s2-2.4)\n",
" * [Exercise #2 - Modify Model Config](#s2-e2)\n",
" * [Exercise #3 - Modify Train Config](#s2-e3)\n",
" * [Combine Configuration Files and Initiate Model Training](#s2-2.5)\n",
" * [Model Evaluation](#s2-2.6)\n",
" * [Exercise #4 - Modify Eval Config](#s2-e4)\n",
" * [Combine Configuration Files and Evaluate Model](#s2-2.7)\n",
"4. [Model Tuning](#s2-3)\n",
" * [Data Augmentation](#s2-3.1)\n",
" * [Exercise #5 - Retrain Model](#s2-e5)\n",
" * [Model Inference](#s2-3.2)\n",
" * [Precision and Recall](#s2-3.3)\n",
" * [Adjusting the Threshold](#s2-3.4)"
]
},
{
"cell_type": "markdown",
"id": "c4ae3a29-df70-4396-a6f4-d1d8d164d5ff",
"metadata": {},
"source": [
"\n",
"## Introduction to the TAO Toolkit ##\n",
"The TAO Toolkit, Train Adapt Optimize, is a framework that simplifies the AI/ML model development workflow. It lets developers fine-tune pre-trained models with custom data to produce highly accurate computer vision models efficiently, eliminating the need for large training runs and deep AI expertise. In addition, it also enables model optimization for inference performance. You can learn more about the TAO Toolkit [here](https://developer.nvidia.com/tao-toolkit) or read the documentation [here](https://docs.nvidia.com/tao/tao-toolkit/index.html#). \n",
"
\n",
"\n",
"The TAO Toolkit uses pre-trained models to accelerate the AI development process and reduce costs associated with large scale data collection, labeling, and training models from scratch. Transfer learning with pre-trained models can be used for classification, object detection, and image segmentation tasks. The TAO Toolkit offers useful features such as: \n",
"* Low-coding approach that requires no AI framework expertise, reducing the barrier of entry for anyone who wants to get started building AI-based applications\n",
"* Flexible configurations that allow customization to help advance users prototype faster\n",
"* Large catalogue of production-ready pre-trained models for common CV tasks that can also be customized with users' own data\n",
"* Easy to use interface for model optimization such as pruning and quantization-aware training\n",
"* Integration with the Triton Inference Server\n",
"\n",
"_Note: The TAO Toolkit comes with a set of reference scripts and configuration specifications with default parameter values that enable developers to kick-start training and fine-tuning. This lowers the bar and enables users without a deep understanding of models, expertise in deep learning, or beginning coding skills to be able to train new models and fine-tune the pretrained ones._"
]
},
{
"cell_type": "markdown",
"id": "ad8aca25-bc7a-4dc7-a4d3-b903cbdf13f4",
"metadata": {},
"source": [
"\n",
"### Transfer Learning ###\n",
"In practice, it is rare and inefficient to initiate the learning task on a network with randomly initialized weights due to factors like data scarcity (inadequate number of training samples) or prolonged training times. One of the most common techniques to overcome this is to use transfer learning. Transfer learning is the process of transferring learned features from one application to another. It is a commonly used training technique where developers use a model trained on one task and re-train to use it on a different task. This works surprisingly well as many of the early layers in a neural network are the same for similar tasks. For example, many of the early layers in a convolutional neural network used for a Computer Vision (CV) model are primarily used to identify outlines, curves, and other features in an image. The network formed by these layers are referred to as the **backbone** of a more complex model. Also known as feature extractors, they take as input the image and extracts the feature map upon which the rest of the network is based. The learned features from these layers can be applied to similar tasks carrying out the same identification in other domains. Transfer learning enables adaptation (fine-tuning) of an existing neural network to a new one, which requires significantly less domain-specific data. In most cases, fine-tuning takes significantly less time (a reduction by x10 factor is common), saving time and resources. As it relates to vision AI, transfer learning can be used for adding new classification by transferring weights from one application to another. \n",
"\n",
"
\n",
"\n",
"More information about transfer learning can be found in this [blog](https://blogs.nvidia.com/blog/2019/02/07/what-is-transfer-learning/)."
]
},
{
"cell_type": "markdown",
"id": "afb01061-8a05-4c4f-96aa-28926278b503",
"metadata": {},
"source": [
"\n",
"### Vision AI Pre-Trained Models Supported ###\n",
"Developers, system builders, and software partners building optical inspection systems can bring their own custom data to train with and fine-tune pre-trained models quickly instead of going through significant effort in large data collection and training from scratch. **General purpose vision models** provide pre-trained weights for popular network architectures to train an image classification model, an object detection model, or a segmentation model. This gives users the flexibility and control to build AI models for any number of applications, from smaller lightweight models for edge deployment to larger models for more complex tasks. They are trained on the [Open Images](https://opensource.google/projects/open-images-dataset) dataset and provide a much better starting point for training versus training from scratch or starting from random weights. \n",
"\n",
"The TAO Toolkit adapts popular network architectures and backbones to custom data, allowing developers to train, fine tune, prune, and export highly optimized and accurate AI models. When working with TAO, first choose the model architecture to be built, then choose one of the supported backbones. \n",
"
\n",
"\n",
"_Note: The pre-trained weights from each feature extraction network merely act as a starting point and may not be used without re-training. In addition, the pre-trained weights are network specific and shouldn't be shared across models that use different architectures._"
]
},
{
"cell_type": "markdown",
"id": "0319ca49-760b-4aa1-b2f5-8c31657c125c",
"metadata": {},
"source": [
"\n",
"### TAO Toolkit Workflow ###\n",
"Building optical inspection systems is hard. And tailoring even a single component to the needs of the enterprise for deployment is even harder. Deployment for a domain-specific application typically requires several cycles of re-training, fine-tuning, and deploying the model until it satisfies the requirements. As a starting point, model development with the TAO Toolkit typically follows the below steps: \n",
"\n",
"0. Configuration\n",
"1. Download a pre-trained model from NGC\n",
"2. Prepare the data for training\n",
"3. Train the model using transfer learning\n",
"4. Evaluate the model for target predictions\n",
"5. Export the model\n",
"* Steps to optimize the model for improved inference performance\n",
"\n",
"
"
]
},
{
"cell_type": "markdown",
"id": "bcb69288-90df-455f-b53a-0a32adf74dbc",
"metadata": {},
"source": [
"\n",
"### TAO Launcher, CLI (Command Line Interface), and Spec Files ###\n",
"The TAO Toolkit is a low-coding framework that makes it easy to get started. It uses a **launcher** to pull from NGC registry and instantiate the appropriate TAO container that performs the desired subtasks such as convert data, train, evaluate, or export. The TAO launcher is a python package distributed as a python wheel listed in the `nvidia-pyindex` python index, which has been prepared for you already. \n",
"\n",
"Users interact with the launcher with its **Command Line Interface** that is configured using simple [**Protocol Buffer**](https://developers.google.com/protocol-buffers) **specification files** to include parameters such as the dataset parameters, model parameters, and optimizer and training hyperparameters. More information about the TAO Toolkit Launcher can be found in the [TAO Docs](https://docs.nvidia.com/tao/tao-toolkit/text/tao_launcher.html#tao-launcher). \n",
"\n",
"The tasks can be invoked from the TAO Toolkit Launcher using the convention `tao `, where `` are the arguments required for a given subtask. Once the container is launched, the subtasks are run by the TAO Toolkit containers using the appropriate hardware resources. \n",
"
\n",
"Since the TAO Toolkit uses the launcher to pull containers, the first time running a task may take extra time to load. "
]
},
{
"cell_type": "markdown",
"id": "65f7f4ec-1826-499f-b001-28d1eb0d71a1",
"metadata": {},
"source": [
"\n",
"### Set Up Environment Variables ###\n",
"We set up a couple of environment variables to help us mount the local directories to the TAO container. Specifically, we want to set paths for the `$LOCAL_TRAINING_DATA`, `$LOCAL_SPEC_DIR`, and `$LOCAL_PROJECT_DIR` for the output of the TAO experiment with their respective paths in the TAO container. In doing so, we can make sure that the TAO experiment generated collaterals such as checkpoints, model files (e.g. `.hdf5`, `.tlt`, or `.etlt`), and logs are output to `$LOCAL_PROJECT_DIR/classification`. \n",
"\n",
"_Note that users will be able to define their own export encryption key when training from a general-purpose model. This is to protect proprietary IP and used to decrypt the `.etlt` model during deployment._"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "446943db-e633-4b5b-9997-c767a849085d",
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"env: KEY=my_model_key\n",
"env: LOCAL_PROJECT_DIR=/dli/task/tao_project\n",
"env: LOCAL_DATA_DIR=/dli/task/tao_project/data\n",
"env: LOCAL_SPECS_DIR=/dli/task/tao_project/spec_files\n",
"env: TAO_PROJECT_DIR=/workspace/tao-experiments\n",
"env: TAO_DATA_DIR=/workspace/tao-experiments/data\n",
"env: TAO_SPECS_DIR=/workspace/tao-experiments/spec_files\n"
]
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# set environment variables\n",
"import os\n",
"import pandas as pd\n",
"import time\n",
"import shutil\n",
"import json\n",
"import numpy as np\n",
"import matplotlib.image as mpimg\n",
"import matplotlib.pyplot as plt\n",
"import math\n",
"\n",
"%set_env KEY=my_model_key\n",
"\n",
"%set_env LOCAL_PROJECT_DIR=/dli/task/tao_project\n",
"%set_env LOCAL_DATA_DIR=/dli/task/tao_project/data\n",
"%set_env LOCAL_SPECS_DIR=/dli/task/tao_project/spec_files\n",
"os.environ[\"LOCAL_EXPERIMENT_DIR\"]=os.path.join(os.getenv(\"LOCAL_PROJECT_DIR\"), \"classification\")\n",
"\n",
"%set_env TAO_PROJECT_DIR=/workspace/tao-experiments\n",
"%set_env TAO_DATA_DIR=/workspace/tao-experiments/data\n",
"%set_env TAO_SPECS_DIR=/workspace/tao-experiments/spec_files\n",
"os.environ['TAO_EXPERIMENT_DIR']=os.path.join(os.getenv(\"TAO_PROJECT_DIR\"), \"classification\")\n",
"\n",
"# make the data directory\n",
"!mkdir -p $LOCAL_DATA_DIR\n",
"\n",
"# unzip\n",
"!unzip -qq data/viz_BYD_new.zip -d data\n",
"\n",
"# remove zip file\n",
"!rm data/viz_BYD_new.zip"
]
},
{
"cell_type": "markdown",
"id": "abe38326-8dc7-438f-b392-913166d3a185",
"metadata": {},
"source": [
"The cell below maps the project directory on your local host to a workspace directory in the TAO docker instance, so that the data and the results are mapped from in and out of the docker. This is done by creating a `.tao_mounts.json` file. For more information, please refer to the [launcher instance](https://docs.nvidia.com/tao/tao-toolkit/tao_launcher.html) in the user guide. Setting the `DockerOptions` ensures that you don't have permission issues when writing data into folders created by the TAO docker."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "e0a30e1d-a66d-4752-85d7-6676f31c3431",
"metadata": {},
"outputs": [],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# mapping up the local directories to the TAO docker\n",
"mounts_file = os.path.expanduser(\"~/.tao_mounts.json\")\n",
"\n",
"drive_map = {\n",
" \"Mounts\": [\n",
" # Mapping the project directory\n",
" {\n",
" \"source\": os.environ[\"LOCAL_PROJECT_DIR\"],\n",
" \"destination\": \"/workspace/tao-experiments\"\n",
" },\n",
" # Mapping the specs directory.\n",
" {\n",
" \"source\": os.environ[\"LOCAL_SPECS_DIR\"],\n",
" \"destination\": os.environ[\"TAO_SPECS_DIR\"]\n",
" },\n",
" # Mapping the data directory.\n",
" {\n",
" \"source\": os.environ[\"LOCAL_DATA_DIR\"],\n",
" \"destination\": os.environ[\"TAO_DATA_DIR\"]\n",
" },\n",
" ],\n",
" \"DockerOptions\": {\n",
" \"user\": \"{}:{}\".format(os.getuid(), os.getgid())\n",
" }\n",
"}\n",
"\n",
"# writing the mounts file\n",
"with open(mounts_file, \"w\") as mfile:\n",
" json.dump(drive_map, mfile, indent=4)"
]
},
{
"cell_type": "markdown",
"id": "0926eb3b-695f-41c7-b6ea-1372a0e3b7fb",
"metadata": {},
"source": [
"To see the usage of different functionality that are supported, use the `-h` or `--help` option. For more information, see the [TAO Toolkit Quick Start Guide](https://docs.nvidia.com/tao/tao-toolkit/text/tao_toolkit_quick_start_guide.html). \n",
"Here is the **sample output**: "
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "0d2c2ed9-6c06-4e74-aa9e-1dc3034228c9",
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"usage: tao [-h] {list,stop,info,dataset,deploy,model} ...\n",
"\n",
"Launcher for TAO Toolkit.\n",
"\n",
"options:\n",
" -h, --help show this help message and exit\n",
"\n",
"task_groups:\n",
" {list,stop,info,dataset,deploy,model}\n"
]
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"!tao -h"
]
},
{
"cell_type": "markdown",
"id": "0a24d50a-f760-483c-90e0-680a45869b26",
"metadata": {},
"source": [
"With the TAO Toolkit, users can train models for object detection, classification, segmentation, optical character recognition, facial landmark estimation, gaze estimation, and more. In TAO's terminology, these would be the **tasks**, which support **subtasks** such as `train`, `prune`, `evaluate`, `export`, etc. Each task/subtask requires different combinations of configuration files to accommodate for different parameters, such as the dataset parameters, model parameters, and optimizer and training hyperparameters. Part of what makes TAO Toolkit so easy to use is that most of those parameters are hidden away in the form of experiment specification files (spec files). They are detailed in the [documentation](https://docs.nvidia.com/tao/tao-toolkit/#tao-toolkit) for reference. It's very helpful to have these resources handy when working with the TAO Toolkit. In addition, there are several specific tasks that help with handling the launched commands. \n",
"\n",
"Below are the tasks available in the TAO Toolkit, organized by their respective computer vision objectives. We grayed out the tasks for Conversational AI as they are out of scope for this course. \n",
"\n",
""
]
},
{
"cell_type": "markdown",
"id": "9d81e20c-14fa-4b8f-a630-ed8d9a509b59",
"metadata": {},
"source": [
"\n",
"### Exercise #1 - Explore TAO Toolkit CLI ###\n",
"Let's explore some TAO Toolkit tasks. \n",
"\n",
"**Instructions**: \n",
"* Modify the ``s only and execute the cell, choosing a task from options such as: `[classification_tf1, detectnet_v2, mask_rcnn, etc.]`, follow by a subtask from options such as: `[calibration_tensorfile, dataset_convert, evaluate, export, inference, prune, train]`. "
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "d1746850-d5d9-466c-ad58-fb54c561859a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2026-02-02 17:24:37,597 [TAO Toolkit] [INFO] root 160: Registry: ['nvcr.io']\n",
"2026-02-02 17:24:37,686 [TAO Toolkit] [INFO] nvidia_tao_cli.components.instance_handler.local_instance 360: Running command in container: nvcr.io/nvidia/tao/tao-toolkit:5.0.0-tf1.15.5\n",
"2026-02-02 17:24:37,697 [TAO Toolkit] [INFO] nvidia_tao_cli.components.docker_handler.docker_handler 301: Printing tty value True\n",
"Using TensorFlow backend.\n",
"2026-02-02 17:24:38.586200: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudart.so.12\n",
"2026-02-02 17:24:38,637 [TAO Toolkit] [WARNING] tensorflow 40: Deprecation warnings have been disabled. Set TF_ENABLE_DEPRECATION_WARNINGS=1 to re-enable them.\n",
"2026-02-02 17:24:39,665 [TAO Toolkit] [WARNING] tensorflow 43: TensorFlow will not use sklearn by default. This improves performance in some cases. To enable sklearn export the environment variable TF_ALLOW_IOLIBS=1.\n",
"2026-02-02 17:24:39,703 [TAO Toolkit] [WARNING] tensorflow 42: TensorFlow will not use Dask by default. This improves performance in some cases. To enable Dask export the environment variable TF_ALLOW_IOLIBS=1.\n",
"2026-02-02 17:24:39,707 [TAO Toolkit] [WARNING] tensorflow 43: TensorFlow will not use Pandas by default. This improves performance in some cases. To enable Pandas export the environment variable TF_ALLOW_IOLIBS=1.\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:150: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_hue(img, max_delta=10.0):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:173: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_saturation(img, max_shift):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:183: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_contrast(img, center, max_contrast_scale):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:192: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_shift(x_img, shift_stddev):\n",
"2026-02-02 17:24:41.505021: I tensorflow/core/platform/profile_utils/cpu_utils.cc:109] CPU Frequency: 2499995000 Hz\n",
"2026-02-02 17:24:41.505418: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x7dfc810 initialized for platform Host (this does not guarantee that XLA will be used). Devices:\n",
"2026-02-02 17:24:41.505449: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version\n",
"2026-02-02 17:24:41.506922: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcuda.so.1\n",
"2026-02-02 17:24:41.698915: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 17:24:41.700950: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x7c17bc0 initialized for platform CUDA (this does not guarantee that XLA will be used). Devices:\n",
"2026-02-02 17:24:41.700982: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Tesla T4, Compute Capability 7.5\n",
"2026-02-02 17:24:41.701280: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 17:24:41.703162: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1674] Found device 0 with properties: \n",
"name: Tesla T4 major: 7 minor: 5 memoryClockRate(GHz): 1.59\n",
"pciBusID: 0000:00:1e.0\n",
"2026-02-02 17:24:41.703224: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudart.so.12\n",
"2026-02-02 17:24:41.703347: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcublas.so.12\n",
"2026-02-02 17:24:41.705488: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcufft.so.11\n",
"2026-02-02 17:24:41.705602: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcurand.so.10\n",
"2026-02-02 17:24:41.709366: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcusolver.so.11\n",
"2026-02-02 17:24:41.710531: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcusparse.so.12\n",
"2026-02-02 17:24:41.710607: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudnn.so.8\n",
"2026-02-02 17:24:41.710735: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 17:24:41.712693: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 17:24:41.714496: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1802] Adding visible gpu devices: 0\n",
"2026-02-02 17:24:41.714545: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudart.so.12\n",
"2026-02-02 17:24:41.723305: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1214] Device interconnect StreamExecutor with strength 1 edge matrix:\n",
"2026-02-02 17:24:41.723332: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1220] 0 \n",
"2026-02-02 17:24:41.723343: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1233] 0: N \n",
"2026-02-02 17:24:41.723551: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 17:24:41.725533: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 17:24:41.727377: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1359] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 13496 MB memory) -> physical GPU (device: 0, name: Tesla T4, pci bus id: 0000:00:1e.0, compute capability: 7.5)\n",
"usage: classification train [-h] [--num_processes NUM_PROCESSES] [--gpus GPUS]\n",
" [--gpu_index GPU_INDEX [GPU_INDEX ...]]\n",
" [--use_amp] [--log_file LOG_FILE] -e\n",
" EXPERIMENT_SPEC_FILE -r RESULTS_DIR [-k KEY]\n",
" [--init_epoch INIT_EPOCH] [-v] [-c CLASSMAP]\n",
" {train,prune,inference,export,evaluate,calibration_tensorfile}\n",
" ...\n",
"\n",
"optional arguments:\n",
" -h, --help show this help message and exit\n",
" --num_processes NUM_PROCESSES, -np NUM_PROCESSES\n",
" The number of horovod child processes to be spawned.\n",
" Default is -1(equal to --gpus).\n",
" --gpus GPUS The number of GPUs to be used for the job.\n",
" --gpu_index GPU_INDEX [GPU_INDEX ...]\n",
" The indices of the GPU's to be used.\n",
" --use_amp Flag to enable Auto Mixed Precision.\n",
" --log_file LOG_FILE Path to the output log file.\n",
" -e EXPERIMENT_SPEC_FILE, --experiment_spec_file EXPERIMENT_SPEC_FILE\n",
" Path to the experiment spec file.\n",
" -r RESULTS_DIR, --results_dir RESULTS_DIR\n",
" Path to a folder where experiment outputs should be\n",
" written.\n",
" -k KEY, --key KEY Key to save or load a .tlt model.\n",
" --init_epoch INIT_EPOCH\n",
" Set resume epoch.\n",
" -v, --verbose Include this flag in command line invocation for\n",
" verbose logs.\n",
" -c CLASSMAP, --classmap CLASSMAP\n",
" Class map file to set the class indices of the model.\n",
"\n",
"tasks:\n",
" {train,prune,inference,export,evaluate,calibration_tensorfile}\n",
"2026-02-02 17:24:42,405 [TAO Toolkit] [INFO] nvidia_tao_cli.components.docker_handler.docker_handler 363: Stopping container.\n"
]
}
],
"source": [
"!tao model classification_tf1 train --help"
]
},
{
"cell_type": "markdown",
"id": "55f19dad-30cb-4d12-a15d-7268743ab2b3",
"metadata": {},
"source": [
"
\n",
"\n",
"Did you get the below error message? This is likely due to a bad NGC configuration. Please check the NGC CLI and Docker Registry section of the [introduction notebook](00_introduction.ipynb)."
]
},
{
"cell_type": "raw",
"id": "ff968ed5-77ee-4237-8709-f55e96cc70b0",
"metadata": {},
"source": [
"AssertionError: Config path must be a valid unix path. No file found at: /root/.docker/config.json. Did you run docker login?"
]
},
{
"cell_type": "markdown",
"id": "2f932728-0ae0-40bf-82b7-32f7b935cf8d",
"metadata": {},
"source": [
"\n",
"## Training a Classification Model ##\n",
"[Image Classification](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/models/pretrained_classification) is a popular computer vision technique in which an image is classified into one of the designated classes based on the image features. We want to train a classification model in order to label each image as either `defect` or `notdefect`. With the TAO Toolkit, we can choose the desired ResNet50 backbone as a feature extractor. As such, we will use the `classification_tf1` task, which supports the following subtasks: \n",
"* `train`\n",
"* `evaluate`\n",
"* `inference`\n",
"* `prune`\n",
"* `export`\n",
"\n",
"
\n",
" \n",
"These subtasks can be invoked using the convention `tao model classification_tf1 ` on the command-line, where `args_per_subtask` are the arguments required for a given subtask. Additionally, we can always find more information about these subtasks with `tao classification_tf1 -h` or `tao classification_tf1 --help`. "
]
},
{
"cell_type": "markdown",
"id": "281849b7-b93b-4d41-9437-8e34a2953087",
"metadata": {
"tags": []
},
"source": [
"\n",
"### Preparation for Model Training ###\n",
"For the remaining of the lab, we will use the TAO Toolkit to train a classification model. Below is what the model development workflow looks like. We start by preparing a pre-trained model and the data. Next, we prepare the configuration file(s) and begin to train the model with new data and evaluate its performance. We will export the model once its satisfactory. Note that this notebook does not include inference optimization steps, which is important for optical inspection systems that are deployed on edge devices. \n",
"
"
]
},
{
"cell_type": "markdown",
"id": "1f0bde40-85ba-472c-9984-6222fbf4d3d9",
"metadata": {},
"source": [
"\n",
"### Download Pre-Trained Model ###\n",
"Developers typically begin by choosing and downloading a pre-trained model from [NGC](https://ngc.nvidia.com/) which contains pre-trained weights of the architecture of their choice. It's difficult to immediately identify which model/architecture will work best for a specific use case as there is often a tradeoff between time to train, accuracy, and inference performance. It is common to compare across multiple models before picking the best candidate.\n",
"\n",
"Here are some pointers that will help choose an appropriate model: \n",
"* Look at the model inputs/outputs to decide if it will fit your use case. \n",
"* Input format is also an important consideration. For example, some models expect the input to be 0-1 normalized with input channels in RGB order. Some models that use a different input order may require input preprocessing/mean subtraction that might result in suboptimal performance. \n",
"\n",
"We can use the `ngc registry model list ` command to get a list of models that are hosted on the NGC model registry. For example, we can use `ngc registry model list nvidia/tao/*` to list all available models. The `--column` option identifies the columns of interest. More information about the NGC Registry CLI can be found in the [User Guide](https://docs.nvidia.com/dgx/pdf/ngc-registry-cli-user-guide.pdf). The `ngc registry model download-version /[/]` command will download the model from the registry. It has a `--dest` option to specify the path to download directory. Alternatively, a catalog of support models can also be found [here](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/tao/collections/tao_computervision). "
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "bc6a84c4-b633-41d1-a34d-7cd70282f348",
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[{\n",
" \"accuracyReached\": 77.56,\n",
" \"batchSize\": 1,\n",
" \"createdByUser\": \"n90fe0en2gvll5957fel7u75sg\",\n",
" \"createdDate\": \"2021-08-18T20:15:41.146Z\",\n",
" \"description\": \"\",\n",
" \"gpuModel\": \"V100\",\n",
" \"memoryFootprint\": \"153.7\",\n",
" \"numberOfEpochs\": 80,\n",
" \"status\": \"UPLOAD_COMPLETE\",\n",
" \"totalFileCount\": 1,\n",
" \"totalSizeInBytes\": 161183816,\n",
" \"versionId\": \"vgg19\"\n",
"},{\n",
" \"accuracyReached\": 77.17,\n",
" \"batchSize\": 1,\n",
" \"createdByUser\": \"n90fe0en2gvll5957fel7u75sg\",\n",
" \"createdDate\": \"2021-08-18T20:15:13.258Z\",\n",
" \"description\": \"\",\n",
" \"gpuModel\": \"V100\",\n",
" \"memoryFootprint\": \"113.2\",\n",
" \"numberOfEpochs\": 80,\n",
" \"status\": \"UPLOAD_COMPLETE\",\n",
" \"totalFileCount\": 1,\n",
" \"totalSizeInBytes\": 118655144,\n",
" \"versionId\": \"vgg16\"\n",
"},{\n",
" \"accuracyReached\": 65.13,\n",
" \"batchSize\": 1,\n",
" \"createdByUser\": \"n90fe0en2gvll5957fel7u75sg\",\n",
" \"createdDate\": \"2021-08-18T20:18:00.942Z\",\n",
" \"description\": \"\",\n",
" \"gpuModel\": \"V100\",\n",
" \"memoryFootprint\": \"6.5\",\n",
" \"numberOfEpochs\": 80,\n",
" \"status\": \"UPLOAD_COMPLETE\",\n",
" \"totalFileCount\": 1,\n",
" \"totalSizeInBytes\": 6776712,\n",
" \"versionId\": \"squeezenet\"\n",
"},{\n",
" \"accuracyReached\": 77.91,\n",
" \"batchSize\": 1,\n",
" \"createdByUser\": \"n90fe0en2gvll5957fel7u75sg\",\n",
" \"createdDate\": \"2021-08-18T20:13:07.831Z\",\n",
" \"description\": \"\",\n",
" \"gpuModel\": \"V100\",\n",
" \"memoryFootprint\": \"294.2\",\n",
" \"numberOfEpochs\": 80,\n",
" \"status\": \"UPLOAD_COMPLETE\",\n",
" \"totalFileCount\": 1,\n",
" \"totalSizeInBytes\": 308488496,\n",
" \"versionId\": \"resnet50\"\n",
"},{\n",
" \"accuracyReached\": 77.04,\n",
" \"batchSize\": 1,\n",
" \"createdByUser\": \"n90fe0en2gvll5957fel7u75sg\",\n",
" \"createdDate\": \"2021-08-18T20:12:37.468Z\",\n",
" \"description\": \"\",\n",
" \"gpuModel\": \"V100\",\n",
" \"memoryFootprint\": \"170.7\",\n",
" \"numberOfEpochs\": 80,\n",
" \"status\": \"UPLOAD_COMPLETE\",\n",
" \"totalFileCount\": 1,\n",
" \"totalSizeInBytes\": 178944632,\n",
" \"versionId\": \"resnet34\"\n",
"},{\n",
" \"accuracyReached\": 76.74,\n",
" \"batchSize\": 1,\n",
" \"createdByUser\": \"n90fe0en2gvll5957fel7u75sg\",\n",
" \"createdDate\": \"2021-08-18T20:12:15.403Z\",\n",
" \"description\": \"\",\n",
" \"gpuModel\": \"V100\",\n",
" \"memoryFootprint\": \"89.0\",\n",
" \"numberOfEpochs\": 80,\n",
" \"status\": \"UPLOAD_COMPLETE\",\n",
" \"totalFileCount\": 1,\n",
" \"totalSizeInBytes\": 93278448,\n",
" \"versionId\": \"resnet18\"\n",
"},{\n",
" \"accuracyReached\": 77.78,\n",
" \"batchSize\": 1,\n",
" \"createdByUser\": \"n90fe0en2gvll5957fel7u75sg\",\n",
" \"createdDate\": \"2021-08-18T20:13:50.368Z\",\n",
" \"description\": \"\",\n",
" \"gpuModel\": \"V100\",\n",
" \"memoryFootprint\": \"576.3\",\n",
" \"numberOfEpochs\": 80,\n",
" \"status\": \"UPLOAD_COMPLETE\",\n",
" \"totalFileCount\": 1,\n",
" \"totalSizeInBytes\": 604328880,\n",
" \"versionId\": \"resnet101\"\n",
"},{\n",
" \"accuracyReached\": 74.38,\n",
" \"batchSize\": 1,\n",
" \"createdByUser\": \"n90fe0en2gvll5957fel7u75sg\",\n",
" \"createdDate\": \"2021-08-18T20:11:58.954Z\",\n",
" \"description\": \"\",\n",
" \"gpuModel\": \"V100\",\n",
" \"memoryFootprint\": \"38.3\",\n",
" \"numberOfEpochs\": 80,\n",
" \"status\": \"UPLOAD_COMPLETE\",\n",
" \"totalFileCount\": 1,\n",
" \"totalSizeInBytes\": 40173128,\n",
" \"versionId\": \"resnet10\"\n",
"},{\n",
" \"accuracyReached\": 72.75,\n",
" \"batchSize\": 1,\n",
" \"createdByUser\": \"n90fe0en2gvll5957fel7u75sg\",\n",
" \"createdDate\": \"2021-08-18T20:17:47.567Z\",\n",
" \"description\": \"\",\n",
" \"gpuModel\": \"V100\",\n",
" \"memoryFootprint\": \"5.0\",\n",
" \"numberOfEpochs\": 80,\n",
" \"status\": \"UPLOAD_COMPLETE\",\n",
" \"totalFileCount\": 1,\n",
" \"totalSizeInBytes\": 5258048,\n",
" \"versionId\": \"mobilenet_v2\"\n",
"},{\n",
" \"accuracyReached\": 79.5,\n",
" \"batchSize\": 1,\n",
" \"createdByUser\": \"n90fe0en2gvll5957fel7u75sg\",\n",
" \"createdDate\": \"2021-08-18T20:17:32.202Z\",\n",
" \"description\": \"\",\n",
" \"gpuModel\": \"V100\",\n",
" \"memoryFootprint\": \"26.2\",\n",
" \"numberOfEpochs\": 80,\n",
" \"status\": \"UPLOAD_COMPLETE\",\n",
" \"totalFileCount\": 1,\n",
" \"totalSizeInBytes\": 27489360,\n",
" \"versionId\": \"mobilenet_v1\"\n",
"},{\n",
" \"accuracyReached\": 77.11,\n",
" \"batchSize\": 1,\n",
" \"createdByUser\": \"n90fe0en2gvll5957fel7u75sg\",\n",
" \"createdDate\": \"2021-08-18T20:18:15.980Z\",\n",
" \"description\": \"\",\n",
" \"gpuModel\": \"V100\",\n",
" \"memoryFootprint\": \"47.6\",\n",
" \"numberOfEpochs\": 80,\n",
" \"status\": \"UPLOAD_COMPLETE\",\n",
" \"totalFileCount\": 1,\n",
" \"totalSizeInBytes\": 49958952,\n",
" \"versionId\": \"googlenet\"\n",
"},{\n",
" \"accuracyReached\": 77.11,\n",
" \"batchSize\": 1,\n",
" \"createdByUser\": \"n90fe0en2gvll5957fel7u75sg\",\n",
" \"createdDate\": \"2021-08-18T20:12:16.039Z\",\n",
" \"description\": \"\",\n",
" \"gpuModel\": \"V100\",\n",
" \"memoryFootprint\": \"26.8\",\n",
" \"numberOfEpochs\": 80,\n",
" \"status\": \"UPLOAD_COMPLETE\",\n",
" \"totalFileCount\": 1,\n",
" \"totalSizeInBytes\": 28082680,\n",
" \"versionId\": \"efficientnet_b1_swish\"\n",
"},{\n",
" \"accuracyReached\": 77.11,\n",
" \"batchSize\": 1,\n",
" \"createdByUser\": \"n90fe0en2gvll5957fel7u75sg\",\n",
" \"createdDate\": \"2021-08-18T20:11:59.218Z\",\n",
" \"description\": \"\",\n",
" \"gpuModel\": \"V100\",\n",
" \"memoryFootprint\": \"26.8\",\n",
" \"numberOfEpochs\": 80,\n",
" \"status\": \"UPLOAD_COMPLETE\",\n",
" \"totalFileCount\": 1,\n",
" \"totalSizeInBytes\": 28082608,\n",
" \"versionId\": \"efficientnet_b1_relu\"\n",
"},{\n",
" \"accuracyReached\": 76.44,\n",
" \"batchSize\": 1,\n",
" \"createdByUser\": \"n90fe0en2gvll5957fel7u75sg\",\n",
" \"createdDate\": \"2021-08-18T20:16:13.324Z\",\n",
" \"description\": \"\",\n",
" \"gpuModel\": \"V100\",\n",
" \"memoryFootprint\": \"311.7\",\n",
" \"numberOfEpochs\": 80,\n",
" \"status\": \"UPLOAD_COMPLETE\",\n",
" \"totalFileCount\": 1,\n",
" \"totalSizeInBytes\": 326824240,\n",
" \"versionId\": \"darknet53\"\n",
"},{\n",
" \"accuracyReached\": 77.52,\n",
" \"batchSize\": 1,\n",
" \"createdByUser\": \"n90fe0en2gvll5957fel7u75sg\",\n",
" \"createdDate\": \"2021-08-18T20:17:01.785Z\",\n",
" \"description\": \"\",\n",
" \"gpuModel\": \"V100\",\n",
" \"memoryFootprint\": \"152.8\",\n",
" \"numberOfEpochs\": 80,\n",
" \"status\": \"UPLOAD_COMPLETE\",\n",
" \"totalFileCount\": 1,\n",
" \"totalSizeInBytes\": 160242408,\n",
" \"versionId\": \"darknet19\"\n",
"},{\n",
" \"accuracyReached\": 77.1,\n",
" \"batchSize\": 1,\n",
" \"createdByUser\": \"n90fe0en2gvll5957fel7u75sg\",\n",
" \"createdDate\": \"2021-11-23T07:40:58.540Z\",\n",
" \"description\": \"\",\n",
" \"gpuModel\": \"V100\",\n",
" \"memoryFootprint\": \"28.6\",\n",
" \"numberOfEpochs\": 80,\n",
" \"status\": \"UPLOAD_COMPLETE\",\n",
" \"totalFileCount\": 1,\n",
" \"totalSizeInBytes\": 29955696,\n",
" \"versionId\": \"cspdarknet_tiny\"\n",
"},{\n",
" \"accuracyReached\": 76.44,\n",
" \"batchSize\": 1,\n",
" \"createdByUser\": \"n90fe0en2gvll5957fel7u75sg\",\n",
" \"createdDate\": \"2021-09-10T00:55:19.867Z\",\n",
" \"description\": \"\",\n",
" \"gpuModel\": \"V100\",\n",
" \"memoryFootprint\": \"103.0\",\n",
" \"numberOfEpochs\": 80,\n",
" \"status\": \"UPLOAD_COMPLETE\",\n",
" \"totalFileCount\": 1,\n",
" \"totalSizeInBytes\": 107993624,\n",
" \"versionId\": \"cspdarknet53\"\n",
"},{\n",
" \"accuracyReached\": 77.52,\n",
" \"batchSize\": 1,\n",
" \"createdByUser\": \"n90fe0en2gvll5957fel7u75sg\",\n",
" \"createdDate\": \"2021-09-10T00:55:09.123Z\",\n",
" \"description\": \"\",\n",
" \"gpuModel\": \"V100\",\n",
" \"memoryFootprint\": \"62.9\",\n",
" \"numberOfEpochs\": 80,\n",
" \"status\": \"UPLOAD_COMPLETE\",\n",
" \"totalFileCount\": 1,\n",
" \"totalSizeInBytes\": 65913984,\n",
" \"versionId\": \"cspdarknet19\"\n",
"}]\n"
]
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# list all available models\n",
"!ngc registry model list nvidia/tao/pretrained_classification:*"
]
},
{
"cell_type": "markdown",
"id": "9334806b-5dd7-4c36-b1a4-b2bfe2620ffe",
"metadata": {},
"source": [
"
\n",
"\n",
"Did you get the below error message? This is likely due to a bad NGC CLI configuration. Please check the NGC CLI and Docker Registry section of the [introduction notebook](00_introduction.ipynb)."
]
},
{
"cell_type": "raw",
"id": "3d0d9d37-d76a-420e-bfea-f1a05e902488",
"metadata": {},
"source": [
"{\n",
" \"error\": \"Error: Invalid apikey\"\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "5dd94e07-ae7f-47a1-9955-7b4415fa0a79",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{\n",
" \"download_end\": \"2026-02-02 17:30:53\",\n",
" \"download_start\": \"2026-02-02 17:30:47\",\n",
" \"download_time\": \"6s\",\n",
" \"files_downloaded\": 1,\n",
" \"local_path\": \"/dli/task/tao_project/classification/pretrained_resnet50/pretrained_classification_vresnet50\",\n",
" \"size_downloaded\": \"294.2 MB\",\n",
" \"status\": \"COMPLETED\"\n",
"}\n"
]
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# create directory to store the pre-trained model\n",
"!mkdir -p $LOCAL_EXPERIMENT_DIR/pretrained_resnet50/\n",
"\n",
"# download the pre-trained classification model from NGC\n",
"!ngc registry model download-version nvidia/tao/pretrained_classification:resnet50 --dest $LOCAL_EXPERIMENT_DIR/pretrained_resnet50 "
]
},
{
"cell_type": "markdown",
"id": "e127c885-3369-443c-8187-03c67f426d73",
"metadata": {},
"source": [
"
\n",
"\n",
"We designated the model to be downloaded locally to `tao_project/classification/pretrained_resnet50`, which is mapped to `/workspace/tao-experiments/classification/pretrained_resnet50` in the TAO container based on the mapping of `LOCAL_EXPERIMENT_DIR` to `TAO_EXPERIMENT_DIR`. Looking at the `local_path` and `transfer_id` keys of the output JSON, we can gather that the path of the pre-trained model should be in the `tao_project/classification/pretrained_resnet50/pretrained_classification_vresnet50` directory. When referencing paths for the TAO Toolkit, it's important to use paths based on the TAO container. In this case it would be `/workspace/tao-experiments/classification/pretrained_resnet50/pretrained_classification_vresnet50`. "
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "622a82e1-3809-41cf-8e56-3267e9459474",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"total 301272\n",
"drwxr-xr-x 2 root root 4096 Feb 2 17:30 .\n",
"drwxr-xr-x 3 root root 4096 Feb 2 17:30 ..\n",
"-rw-r--r-- 1 root root 308488496 Feb 2 17:30 resnet_50.hdf5\n"
]
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"!ls -al tao_project/classification/pretrained_resnet50/pretrained_classification_vresnet50"
]
},
{
"cell_type": "markdown",
"id": "ab9e1652-fe1f-4a17-9307-0d2353ab1945",
"metadata": {
"tags": []
},
"source": [
"\n",
"### Prepare Dataset ###\n",
"The TAO Toolkit expects the training data for the `classification_tf1` task to be in the format described in the [documentation](https://docs.nvidia.com/tao/tao-toolkit/text/data_annotation_format.html#id8). The `classification_tf1` models expect the images to be within the directories of the respective classes. "
]
},
{
"cell_type": "raw",
"id": "b618ccd5-3821-4550-8255-f39448a43187",
"metadata": {},
"source": [
"|--dataset_root: \n",
" |--train\n",
" |--defect: \n",
" |--DX_CX.jpg\n",
" |--DX_CX.jpg\n",
" |--notdefect: \n",
" |--DX_CX.jpg\n",
" |--DX_CX.jpg\n",
" |--val\n",
" |--defect: \n",
" |--DX_CX.jpg\n",
" |--DX_CX.jpg\n",
" |--notdefect: \n",
" |--DX_CX.jpg\n",
" |--DX_CX.jpg\n",
" |--test\n",
" |--defect: \n",
" |--DX_CX.jpg\n",
" |--DX_CX.jpg\n",
" |--notdefect: \n",
" |--DX_CX.jpg\n",
" |--DX_CX.jpg"
]
},
{
"cell_type": "markdown",
"id": "f788cc67-59d7-4391-b114-e62fa44176aa",
"metadata": {},
"source": [
"_The `test` folder in the above directory structure is optional; any folder can be used for inference._\n",
"\n",
"We start by loading the manifest of images in our dataset. "
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "5eca268c-cf0d-4517-a968-db1d13ccd571",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
true_defect
\n",
"
defect_img_path
\n",
"
date
\n",
"
board
\n",
"
comp_id
\n",
"
img_shape
\n",
"
defect_image_name
\n",
"
comp_type
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
notdefect
\n",
"
/dli/task/data/AOI_DL_data_0908/0423318026324/...
\n",
"
908
\n",
"
423318026324
\n",
"
C1090
\n",
"
[54, 27, 3]
\n",
"
D0_C1090.jpg
\n",
"
C
\n",
"
\n",
"
\n",
"
1
\n",
"
notdefect
\n",
"
/dli/task/data/AOI_DL_data_0908/0423318026269/...
\n",
"
908
\n",
"
423318026269
\n",
"
C1090
\n",
"
[54, 27, 3]
\n",
"
D1_C1090.jpg
\n",
"
C
\n",
"
\n",
"
\n",
"
2
\n",
"
notdefect
\n",
"
/dli/task/data/AOI_DL_data_0908/0423318026523/...
\n",
"
908
\n",
"
423318026523
\n",
"
C1090
\n",
"
[54, 27, 3]
\n",
"
D1_C1090.jpg
\n",
"
C
\n",
"
\n",
"
\n",
"
3
\n",
"
notdefect
\n",
"
/dli/task/data/AOI_DL_data_0908/0423318026331/...
\n",
"
908
\n",
"
423318026331
\n",
"
C1090
\n",
"
[54, 27, 3]
\n",
"
D1_C1090.jpg
\n",
"
C
\n",
"
\n",
"
\n",
"
4
\n",
"
notdefect
\n",
"
/dli/task/data/AOI_DL_data_0908/0423318026211/...
\n",
"
908
\n",
"
423318026211
\n",
"
C1090
\n",
"
[53, 27, 3]
\n",
"
D1_C1090.jpg
\n",
"
C
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" true_defect defect_img_path date \\\n",
"0 notdefect /dli/task/data/AOI_DL_data_0908/0423318026324/... 908 \n",
"1 notdefect /dli/task/data/AOI_DL_data_0908/0423318026269/... 908 \n",
"2 notdefect /dli/task/data/AOI_DL_data_0908/0423318026523/... 908 \n",
"3 notdefect /dli/task/data/AOI_DL_data_0908/0423318026331/... 908 \n",
"4 notdefect /dli/task/data/AOI_DL_data_0908/0423318026211/... 908 \n",
"\n",
" board comp_id img_shape defect_image_name comp_type \n",
"0 423318026324 C1090 [54, 27, 3] D0_C1090.jpg C \n",
"1 423318026269 C1090 [54, 27, 3] D1_C1090.jpg C \n",
"2 423318026523 C1090 [54, 27, 3] D1_C1090.jpg C \n",
"3 423318026331 C1090 [54, 27, 3] D1_C1090.jpg C \n",
"4 423318026211 C1090 [53, 27, 3] D1_C1090.jpg C "
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# export csv file as dataframe\n",
"capacitor_df=pd.read_csv('capacitor_df.csv', converters={'img_shape': pd.eval})\n",
"capacitor_df.head()"
]
},
{
"cell_type": "markdown",
"id": "c536dcd8-6890-4503-879b-9409429fc98c",
"metadata": {},
"source": [
"Below we will split the data into `train` set and `validation` set and copy the images into their respective folder. "
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "96b5ee50-6c69-4b9a-95bd-980323feaa4b",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/tmp/ipykernel_3011/4020387363.py:6: DeprecationWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n",
" val_set=capacitor_df.groupby('true_defect', group_keys=False).apply(lambda x: x.sample(frac=0.3))\n"
]
},
{
"data": {
"text/plain": [
"dataset true_defect\n",
"train defect 69\n",
" notdefect 1263\n",
"val defect 30\n",
" notdefect 541\n",
"dtype: int64"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# set default as training set\n",
"capacitor_df['dataset']='train'\n",
"\n",
"# sample 30% and set as validation set\n",
"val_set=capacitor_df.groupby('true_defect', group_keys=False).apply(lambda x: x.sample(frac=0.3))\n",
"capacitor_df.loc[val_set.index, 'dataset']='val'\n",
"capacitor_df.groupby(['dataset', 'true_defect']).size()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "9e959942-b69c-41aa-accc-1443b10b5e08",
"metadata": {},
"outputs": [],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# remove existing data from previous experiment (if any)\n",
"!rm -rf $LOCAL_DATA_DIR/*\n",
"\n",
"!mkdir -p $LOCAL_DATA_DIR/train/defect\n",
"!mkdir -p $LOCAL_DATA_DIR/train/notdefect\n",
"!mkdir -p $LOCAL_DATA_DIR/val/defect\n",
"!mkdir -p $LOCAL_DATA_DIR/val/notdefect"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "fd4be461-0ec1-4b50-8d68-912840f42f8e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"It took 1.9 seconds to copy 1903 images.\n"
]
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# time the process\n",
"start=time.time()\n",
"\n",
"# iterate through the capacitors\n",
"for idx, row in capacitor_df.iterrows(): \n",
" shutil.copyfile(row['defect_img_path'], f\"{os.environ['LOCAL_DATA_DIR']}/{row['dataset']}/{row['true_defect']}/{row['date']}_{row['board']}_{row['defect_image_name']}\")\n",
"\n",
"print('It took {} seconds to copy {} images.'.format(round(time.time()-start, 2), len(capacitor_df)))"
]
},
{
"cell_type": "markdown",
"id": "a1a34fb6-3cb3-41a0-be9f-6cc09dc74437",
"metadata": {},
"source": [
"Let's take a quick look at the size of the images. "
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "121ce22c-6a6b-4651-9193-77a3a7ff2a81",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The median dimension is 56.0 x 27.0.\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAbsAAAGsCAYAAABEugk9AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAL6lJREFUeJzt3Xl8VPW9//F3FrJAmIkBsgkBXK6Qsois49ZfJRAgbgXvT3tR8WrxisEKeKlAVbBehZ/trdW60NJWtEhp7RUUFGwKGuQSFpHIEsUtGBRCkEiGLQnJfH9/YKYMZJlJZj15PR+PPHTO+ZzJZ86D5J2zfM83yhhjBACAhUWHugEAAAKNsAMAWB5hBwCwPMIOAGB5hB0AwPIIOwCA5RF2AADLiw11A63hcrm0f/9+de7cWVFRUaFuBwAQIsYYHT16VJmZmYqObvr4LSLDbv/+/erRo0eo2wAAhIl9+/ape/fuTa6PyLDr3LmzpNMfzmazhbgbAECoOJ1O9ejRw50LTYnIsGs4dWmz2Qg7AECLl7S4QQUAYHmEHQDA8gg7AIDlEXYAAMsj7AAAlkfYAQAsj7ADAFgeYQcAsDzCDgBgeYQdAMDyIvJxYQCAyHWytl5PvFWivYdPqFeXjpozLluJcTEB/Z6EHQAgaCa/vFUFJRXu1+99Kv1pU5lGZadq0e1DA/Z9OY0JAAiKs4PuTAUlFZr88taAfW/CDgAQcCdr65sMugYFJRU6WVsfkO9P2AEAAu6Jt0r8Wucrwg4AEHB7D5/wa52vCDsAQMD16tLRr3W+IuwAAAE3Z1y2X+t8RdgBAAIuMS5Go7JTm60ZlZ0asPF2hB0AICgW3T60ycAL9Dg7BpUDAIJm0e1DeYIKAMD6EuNi9NiN/YP6PTmNCQCwPMIOAGB5hB0AwPK4Zod251h1ne7/8zbt+Nqp+NgY/dvwLP34qgsUF8vffoBVRRljTKib8JXT6ZTdbldVVZVsNluo20EEuf7Z97TjK2ej6/7j6t6aHaABrQACw9s84E9ZtBvNBZ0k/XZ9qeYH6CG0AEKLsEO7cKy6rtmga7DovVLV1rmC0BGAYCLs0C5M/8t2r+pcRvpT0d7ANgMg6Ag7tAtl3570uvbLysBMMQIgdAg7tAtZ5yV6XdszJTBTjAAIHcIO7cJTNw/yqi46SrrN0SuwzQAIOsIO7UJSQqwGdG95mMrkq3oz3g6wIH6q0W68MfWqZgOPcXaAdfEEFbQrb0y9iieoAO0QYYd2peybExrzdKFOnnIpsUO0/ueeK5TVlRtSAKsj7NBuXDTnTZ05XvzEKZeu/uU7io2WPnsiL3SNAQg4ztugXTg76M5U5zq9HoB1EXawvLJvTjQZdA3qXKfrAFgTYQfLG/3UO36tAxB5CDtYXnW9f+sARB7CDgBgeYQdLC+tk3c3HXtbByDytCnsFixYoKioKE2bNs29rLq6Wvn5+erSpYuSkpI0YcIEHTx40GO7srIy5eXlqWPHjkpNTdXMmTNVV1fXllaAJq26///4tQ5A5Gl12G3dulW//e1vNWDAAI/l06dP18qVK/Xqq6+qsLBQ+/fv1/jx493r6+vrlZeXp9raWm3cuFEvvfSSFi9erEceeaT1nwJoRjdbvGwJzR+12RJi1c0WH6SOAARbq8Lu2LFjmjhxohYtWqTzzjvPvbyqqkp/+MMf9Ktf/UrXXHONBg8erBdffFEbN27Upk2bJEl///vfVVJSoiVLlujSSy/V2LFj9dhjj+m5555TbW2tfz4VcJYd83KbDDxbQqx2zMsNckcAgqlVYZefn6+8vDzl5OR4LN+2bZtOnTrlsbxPnz7KyspSUVGRJKmoqEj9+/dXWlqauyY3N1dOp1O7d+9u9PvV1NTI6XR6fAG+2jEvV1vn5Kh7coI6dohR9+QEbZ2TQ9AB7YDPV+SXLVumDz74QFu3bj1nXXl5ueLi4pScnOyxPC0tTeXl5e6aM4OuYX3DusbMnz9fjz76qK+tAufoZovXhlkjQ90GgCDz6chu3759uv/++/XKK68oISEhUD2dY/bs2aqqqnJ/7du3L2jfGwAQ+XwKu23btqmiokKXXXaZYmNjFRsbq8LCQj3zzDOKjY1VWlqaamtrdeTIEY/tDh48qPT0dElSenr6OXdnNrxuqDlbfHy8bDabxxcAAN7yKexGjhypnTt3qri42P01ZMgQTZw40f3/HTp00Nq1a93b7NmzR2VlZXI4HJIkh8OhnTt3qqKiwl1TUFAgm82m7GwmzgQA+J9P1+w6d+6sfv36eSzr1KmTunTp4l5+1113acaMGUpJSZHNZtN9990nh8OhESNGSJJGjx6t7Oxs3XbbbXryySdVXl6uhx56SPn5+YqP59ZvAID/+f2REU899ZSio6M1YcIE1dTUKDc3V88//7x7fUxMjFatWqUpU6bI4XCoU6dOmjRpkn7+85/7uxUAACRJUcYYE+omfOV0OmW321VVVcX1OwBox7zNA56NCQCwPMIOAGB5hB0AwPIIOwCA5RF2AADLI+wAAJZH2AEALI+wAwBYHmEHALA8wg4AYHmEHQDA8gg7AIDlEXYAAMsj7AAAlkfYAQAsj7ADAFgeYQcAsDzCDgBgeYQdAMDyCDsAgOURdgAAyyPsAACWR9gBACyPsAMAWB5hBwCwPMIOAGB5hB0AwPIIOwCA5RF2AADLI+wAAJZH2AEALI+wAwBYHmEHALA8wg4AYHmEHQDA8gg7AIDlEXYAAMsj7AAAlkfYAQAsj7ADAFgeYQcAsDzCDgBgeYQdAMDyCDsAgOURdgAAyyPsAACWR9gBACyPsAMAWB5hBwCwPMIOAGB5hB0AwPIIOwCA5RF2AADLI+wAAJZH2AEALI+wAwBYHmEHALA8wg4AYHmEHQDA8gg7AIDlEXYAAMuLDXUDAHxX7zLaUlqpiqPVSu2coGG9UxQTHRXqtoCwRdgBEWbNrgN6dGWJDlRVu5dl2BM097psjemXEcLOgPBF2AFhqvxIta79zXo5q+tkS4jVqvuuVvFX32rKkg9kzq6tqtaUJR/ohVsvI/CARkQZY87+uQl7TqdTdrtdVVVVstlsoW4H8Lu+D6/WyVMun7aJkpRuT9CGB6/hlCbaDW/zgBtUgDDTmqCTJCPpQFW1tpRW+r8pIMIRdkAYKT9S3aqgO1PF0eqWi4B2hrADwshVC9a2+T1SOyf4oRPAWrhBBQgjp9qwbcM1u2G9U/zVDmAZHNkBFtBwO8rc67K5OQVoBEd2gAWkM84OaBZhB4SRJ6/tq5+u+qjFugV5fdQzM5knqABeIuyAMPJ/r7zAq7C75aoLg9ANYB0+XbN74YUXNGDAANlsNtlsNjkcDq1evdq9vrq6Wvn5+erSpYuSkpI0YcIEHTx40OM9ysrKlJeXp44dOyo1NVUzZ85UXV2dfz4NYAF7F+S1aT2Ac/kUdt27d9eCBQu0bds2vf/++7rmmmt0ww03aPfu3ZKk6dOna+XKlXr11VdVWFio/fv3a/z48e7t6+vrlZeXp9raWm3cuFEvvfSSFi9erEceecS/nwqIcHsX5OnJa/t6LHvy2r4EHdBKbX5cWEpKin7xi1/opptuUrdu3bR06VLddNNNkqSPP/5Yffv2VVFRkUaMGKHVq1fr2muv1f79+5WWliZJWrhwoR588EEdOnRIcXFxjX6Pmpoa1dTUuF87nU716NGDx4UBQDsX8MeF1dfXa9myZTp+/LgcDoe2bdumU6dOKScnx13Tp08fZWVlqaioSJJUVFSk/v37u4NOknJzc+V0Ot1Hh42ZP3++7Ha7+6tHjx6tbRtABKh3GRV9flivF3+tos8Pq94VcY/wRZjx+QaVnTt3yuFwqLq6WklJSVq+fLmys7NVXFysuLg4JScne9SnpaWpvLxcklReXu4RdA3rG9Y1Zfbs2ZoxY4b7dcORHQDrYQojBILPYXfJJZeouLhYVVVV+tvf/qZJkyapsLAwEL25xcfHKz4+PqDfA0Dordl1gCmMEBA+n8aMi4vTRRddpMGDB2v+/PkaOHCgnn76aaWnp6u2tlZHjhzxqD948KDS09MlSenp6efcndnwuqEGQPtU7zJ6dGXJOUEnyb3s0ZUlnNJEq7T5cWEul0s1NTUaPHiwOnTooLVr//kg2z179qisrEwOh0OS5HA4tHPnTlVUVLhrCgoKZLPZlJ2d3dZWAESwLaWVHqcuz8YURmgLn05jzp49W2PHjlVWVpaOHj2qpUuX6t1339Xbb78tu92uu+66SzNmzFBKSopsNpvuu+8+ORwOjRgxQpI0evRoZWdn67bbbtOTTz6p8vJyPfTQQ8rPz+c0JdDOeTs1EVMYoTV8CruKigrdfvvtOnDggOx2uwYMGKC3335bo0aNkiQ99dRTio6O1oQJE1RTU6Pc3Fw9//zz7u1jYmK0atUqTZkyRQ6HQ506ddKkSZP085//3L+fCkDE8XZqIqYwQmu0eZxdKHg7rgJA5Kh3GV35/9apvKq60et2DVMYbXjwGp4DCreAj7MDAH+KiY7S3OtOX7s/O8qYwghtRdgBCBtj+mXohVsvU7rd81Rluj2BYQdoE2Y9ABBWxvTL0KjsdG0prWQKI/gNYYc22VlWpeuf3yCj06ea3rj3SvXPsoe6LUS4mOgoOS7sEuo2YCGEHVqt16w3PV4bSdc9v0ES09AACC9cs0OrnB10vq4HgGAi7OCznWVVfq0DgEAj7OCz6787VemvOgAINMIOPvP2KQQR97QCAJZF2MFn3t4Azo3iAMIFYQefvXHvlX6tA4BAI+zgM2/H0THeDkC4IOzQKqOyU5tdzzg7AOGEsIPPJr+8VQUlFU2ubykIASDYCDv45GRtfbNBJ0kFJRU6WVsfpI4AoGWEHXzyxFslfq0DgGAg7OCTvYdP+LUOAIKBsINPenXp6Nc6AAgGwg4+mTMu2691ABAMhB18khgX0+LdlqOyU5UYFxOkjgCgZYQdfLbo9qFNBt6o7FQtun1okDsCgOYxeStaZdHtQ3Wytl5PvFWivYdPqFeXjpozLpsjOgBhibBDqyXGxeixG/uHug0AaBGnMQEAlkfYAQAsj7ADAFge1+wsgptFAKBphJ0FnD0LwXufSn/aVMYwAAD4DqcxI1xz0+0UlFRo8stbg9wRAIQfwi6CMd0OAHiHsItgTLcDAN4h7CIY0+0AgHcIuwjGdDsA4B3CLoIx3Q4AeIewi2BMtwMA3iHsIhzT7QBAyxhUbgFMtwMAzSPsLILpdgCgaZzGBABYHmEHALA8wg4AYHmEHQDA8gg7AIDlEXYAAMsj7AAAlkfYAQAsj7ADAFgeYQcAsDzCDgBgeYQdAMDyCDsAgOURdgAAyyPsAACWR9gBACyPsAMAWB5hBwCwPMIOAGB5hB0AwPIIOwCA5RF2AADLI+wAAJZH2AEALI+wAwBYHmEHALC82FA30F7Vu4y2lFaq7PAxLdtapn2V1UroEKOJw3rorqsvVFwsf4d447PyYxr7TKFOuaQO0dLqn3xfF6UnhbotAGEmyhhjQt2Er5xOp+x2u6qqqmSz2ULdjs/W7DqgR1eW6EBVdZM1/3F1b80elx3EriJP71lvqrF/vFGSShfkBbsdACHgbR5w+BBka3Yd0JQlHzQbdJL02/Wlmv9WSZC6ihzHqus0+aWt6tVE0EmS0ekgBIAGnMYMsI0ff6N/W7zZ/bqD1OQv6bP9bn2pHhjdh1Oa37n+2fe04yunV7VGp09xckoTgMSRXUD1mvWmR9BJ0ikftjeSXtq4158tRSxfgq7B6F8XBqgbAJGGsAuQXn46jbZ1b6Vf3ieSHauu8znoJMkVgF4ARCbCLgA2fvyN396rY1yM394rUk3/y/ZQtwAgwhF2AXD2qcu2mDCou9/eK1KVfXuyVdt168g/bwCn8dsgjCV2iNblF3cNdRshl3VeYqu2e2vaNX7uBECk8ins5s+fr6FDh6pz585KTU3VjTfeqD179njUVFdXKz8/X126dFFSUpImTJiggwcPetSUlZUpLy9PHTt2VGpqqmbOnKm6urq2fxqLeermSxUTHRXqNkLuqZsH+byNLSFW3WzxAegGQCTyKewKCwuVn5+vTZs2qaCgQKdOndLo0aN1/Phxd8306dO1cuVKvfrqqyosLNT+/fs1fvx49/r6+nrl5eWptrZWGzdu1EsvvaTFixfrkUce8d+niiCNXZOzJ8Rq4a2XaUy/jBB0FH6SEmI1oLv3Dw+wJcRqx7zcAHYEINK06Qkqhw4dUmpqqgoLC3X11VerqqpK3bp109KlS3XTTTdJkj7++GP17dtXRUVFGjFihFavXq1rr71W+/fvV1pamiRp4cKFevDBB3Xo0CHFxcWd831qampUU1Pjfu10OtWjR4+wfYLKW1u+0r2vfdhi3fPjByp3yPna9MVhFX1+WJKR44KuGnFhF47oGtHU8IPYaCkuJkYpnTpo+b1XckQHtCPePkGlTYPKq6qqJEkpKSmSpG3btunUqVPKyclx1/Tp00dZWVnusCsqKlL//v3dQSdJubm5mjJlinbv3q1Bg849ZTV//nw9+uijbWk1qMYN6y55EXbjhp2++eSKi7rqiou4NteSN6ZepWPVdZr+l+0q+/akss5L1FM3D1JSAs9GANC8Vv+WcLlcmjZtmq644gr169dPklReXq64uDglJyd71Kalpam8vNxdc2bQNaxvWNeY2bNna8aMGe7XDUd24Wzvgrxmx9rt5dmNrZKUEKtFk4aGug0AEabVYZefn69du3Zpw4YN/uynUfHx8YqPj7xTU3sX5J1zSvP58QPdR3QAgOBoVdhNnTpVq1at0vr169W9+z9/caenp6u2tlZHjhzxOLo7ePCg0tPT3TVbtmzxeL+GuzUbaqxk3LDu2ku4AUBI+XQ3pjFGU6dO1fLly7Vu3Tr17t3bY/3gwYPVoUMHrV271r1sz549Kisrk8PhkCQ5HA7t3LlTFRUV7pqCggLZbDZlZzOlDQDA/3w6ssvPz9fSpUv1+uuvq3Pnzu5rbHa7XYmJibLb7brrrrs0Y8YMpaSkyGaz6b777pPD4dCIESMkSaNHj1Z2drZuu+02PfnkkyovL9dDDz2k/Pz8iDxVCQAIfz4NPYiKavx2+BdffFF33HGHpNODyh944AH9+c9/Vk1NjXJzc/X88897nKL88ssvNWXKFL377rvq1KmTJk2apAULFig21rvsjfTJWwEA/uFtHjBTOQAgYjFTOQAA3yHsAACWR9gBACyPsAMAWB5hBwCwPMIOAGB5hB0AwPIIOwCA5TERWAisKPpS017f5X59fb9k/fIWh+Ji+dsDAAKBJ6gEWXNz3P3H1b01exwPwwYAb/EElTDUXNBJ0m/Xl2r+WyVB6gYA2g/CLkhWFH3pVd1v15eqts4V4G4Qaidr6/Xwip267Q+b9fCKnTpZWx/qlgBL45pdkJx5ja4lL20s1eSrLwxgNwilyS9vVUHJP+dzfO9T6U+byjQqO1WLbh8aws4A6+LILgxt3fttqFtAgJwddGcqKKnQ5Je3BrkjoH0g7MJQp7iYULeAADhZW99k0DUoKKnglCYQAIRdkPz6hn5e146/rHsAO0GoPLx8h1/rAHiPsAuSGx09varrFB+jyy/qGuBuEApv7Djg1zoA3iPsgmjvgrwWa/77XwcqJjoqCN0g2Opd3g1p9bYOgPcIuyDbuyBPtw05/5zlGfYELbz1Mo3plxGCrhAMaZ3j/FoHwHs8QSVE6l1GW0orVXG0WqmdEzSsdwpHdBZ3yFmjoU/8o8W6rXNy1M0WH4SOgMjnbR4wzi5EYqKj5LiwS6jbQBB1s8XLlhArZ3VdkzW2hFiCDggATmMCQbRjXq5sCY3/jWlLiNWOeblB7ghoHziyA4Jsx7xcHXLW6IfPb1Dl8VNK6dRBy++9kiM6IIAIOyAEutnitWHWyFC3AbQbnMYEAFgeYQcAsDzCDgBgeYQdAMDyCDsAgOURdgAAyyPsAACWR9gBACyPsAMAWB5hBwCwPMIOAGB5hB0AwPIIOwCA5RF2AADLI+wAAJbHfHZ+UO8y2lJaqYqj1UrtnKBhvVMUEx0V6rYAAN8h7Hx0drB9e7xWj71ZogNV1e6aDHuC5l6XrTH9MkLYKQCgAWHngzW7DmjeGyUqd1Y3W1deVa0pSz7QC7deRuABQBjgmp2X1uw6oHuWfNBi0EmS+e6/j64sUb3LNFsLAAg8ws4L9S6jWa/t9GkbI+lAVbW2lFYGpikAgNcIOy9s+uKwjpw41aptK462fCQIAAgsws4LRZ8fbvW2qZ0T/NgJAKA1uEHFK75fd4uSlG4/PQwBABBaHNl54dl3PvepvmGE3dzrshlvBwBhgLBrQa9Zb/q8TUqnOIYdAEAYIeyasbOsqlXbPZTXl6ADgDBC2DXj+uc3tGq7dHuinzsBALQFYdeM1gwHz+CmFAAIO4Sdn3FTCgCEH8KuGfOv7+NT/U3DkrlWBwBhiLBrRlY3u0/1vxx/RYA6AQC0BWHXjG+O13hdu/LeKwPYCQCgLQi7ZvjyqK/rnt/QqjF5AIDAI+yaMax3ijLsCfLldhMCDwDCD2HXjJjoKM29Ltvn7Vo7GB0AEBiEXQvG9MvQC7de5tM2rR2Mjn+qdxkVfX5Yrxd/raLPDzMJLoA2YdYDL/g6nIBfy22zZtcBPbqyRAeq/jkXYIY9QXOvy2ZoB4BW4cguABhS3nprdh3QlCUfeASdJJVXVWvKkg+0ZteBEHUGIJIRdl5acY/3Y+jeYBhCq9S7jB5dWdLokXHDskdXlnBKE4DPCDsvXdor2eva/lm+DUbHaVtKK885ojuTkXSgqlpbSiuD1xQASyDsfLB3QZ5fatC4iqNNB11r6gCgATeo+GjvgjwV7z2iGxf+r8fylfdeyRFdG3k7iN+Xwf4AIBF2rXJpr2SO4AKgYRB/eVV1o9ftoiSlM4USgFbgNCbCxpmD+M++o7XhNVMoAWgNwg5hpWEQf7rd81Rluj1BL9x6GePsALQKpzERdsb0y9Co7HRtKa1UxdFqpXY+feqSIzoArUXYoU2qTpzSnYu3aH9VtTLtCfrjHcNk79ihze8bEx0lx4Vd/NAhABB2aIPv/2Kdvjx80v36QFW1Bv787+rZJVGFM68JYWcA4IlrdmiVs4PuTF8ePqnv/2JdkDsCgKb5HHbr16/Xddddp8zMTEVFRWnFihUe640xeuSRR5SRkaHExETl5OTo008/9aiprKzUxIkTZbPZlJycrLvuukvHjh1r0wdB8FSdONVk0DX48vBJVZ04FaSOAKB5Pofd8ePHNXDgQD333HONrn/yySf1zDPPaOHChdq8ebM6deqk3NxcVVf/86kXEydO1O7du1VQUKBVq1Zp/fr1uvvuu1v/KRBUdy7e4tc6AAg0n6/ZjR07VmPHjm10nTFGv/71r/XQQw/phhtukCS9/PLLSktL04oVK3TLLbfoo48+0po1a7R161YNGTJEkvSb3/xG48aN0y9/+UtlZmae8741NTWqqalxv3Y6nb62DT/a38zzK1tTBwCB5tdrdqWlpSovL1dOTo57md1u1/Dhw1VUVCRJKioqUnJysjvoJCknJ0fR0dHavHlzo+87f/582e1291ePHj382TZ8lGn37nFd3tYBQKD5NezKy8slSWlpaR7L09LS3OvKy8uVmprqsT42NlYpKSnumrPNnj1bVVVV7q99+/b5s2346I93DPNrHQAEWkQMPYiPj1d8fHyo28B37B07qGeXxGZvUunZJdEv4+0AwB/8emSXnp4uSTp48KDH8oMHD7rXpaenq6KiwmN9XV2dKisr3TUIf4Uzr1HPLomNrmOcHYBw49ew6927t9LT07V27Vr3MqfTqc2bN8vhcEiSHA6Hjhw5om3btrlr1q1bJ5fLpeHDh/uzHQRY4cxr9OEjozU4K1kZ9gQNzkrWh4+MJugAhB2fT2MeO3ZMn332mft1aWmpiouLlZKSoqysLE2bNk3/9V//pYsvvli9e/fWww8/rMzMTN14442SpL59+2rMmDGaPHmyFi5cqFOnTmnq1Km65ZZbGr0TE+HN3rGD/ufeK0LdBgA0y+ewe//99/WDH/zA/XrGjBmSpEmTJmnx4sX66U9/quPHj+vuu+/WkSNHdOWVV2rNmjVKSPjnnXmvvPKKpk6dqpEjRyo6OloTJkzQM88844ePAwDAuaKMMY3NkxnWnE6n7Ha7qqqqZLPZQt0OACBEvM2DiLgbM5g2fvyN/m3xP8f7Lb1juC7v0zWEHQEA2oqw+069y+jCOW+ds7wh+HbNy1VSArsLACIRsx5IWrPrQKNBd6Z+897W9c++F6SOwl+9y6jo88N6vfhrFX1+WPWuiDsbDqAdafeHKmt2HdA9Sz7wqnbHV05d/+x7emPqVQHuKryt2XVAj6zYpYpjte5lqUlx+vmN/TSmX0YIOwOAxrXrI7t6l9Hc13f7tM2Or5w6Vl0XoI7CX8MfB2cGnSRVHKvVPUs+0JpdB0LUGQA0rV2H3ZbSSh08WtNy4Vmm/2V7ALoJf/Uuo6lLm//sU5du55QmgLDTrsOu4mjrpqAp+7b5iUutav3HFaprIcjqXEbrP65otgYAgq1dh11q59ZNQZN1XuPPhLS6//7HJ36tA4BgaddhN6x3ipLiY3ze7qmbBwWgm/BXdfKUX+sAIFjaddjFREdp/vgBPm0zoLut3Y63uyQ9ya91ABAs7TrsJOm6gZkalZ3acqFOB117Hnbw65sv82sdAARLuw87SVp0+1BNvqpXk+uvvMCmXfNy23XQSVJSQqwGdG/+WaTt+cgXQPjiQdBnqK1z6U9Fe/Vl5Qn1TOmo2xy9FBfL3wNnu/7Z97TjK+c5y9v7kS+A4PM2Dwg7tMqx6jpN/8t2lX17UlnnJeqpmwdxRAcg6Jj1AAGVlBCrRZOGhroNAPAK5+gAAJbHkZ1FnKyt1xNvlWjv4RPq1aWj5ozLVmKc72MIAcCKCDsL+PFLW/SPjw65X7/3qfSnTWUalZ2qRbdzqhEAOI0Z4a5/9j2PoDtTQUmFJr+8NcgdAUD4Iewi2OvFXzc6BOBMBSUVOllbH6SOACA8EXYRqt5lNOt/dnhV+/Dr3tUBgFURdhFqS2mlTp5yeVX75g4mVAXQvhF2EcqXufhamoMOAKyu3d6N+fu1H+m/Cr5wv35o1AX68ci+IeyocYecNbrh2fU6eLRWMdFRur5/hh4bP8Cnufh6ntcxgB0CQPhrl48L6zXrzSbX7V2Q15bW/GrAvLflrK5rdF1O327a8ZVTFUdrWnyfDx4apZSkOH+3BwAh520etLvTmM0FnTfrg6W5oJOkf3x0SOn2+Bbfp1tSHEEHoN1rV2H3+7Uf+bUuUA45a5oNugYtDTvolhSnrQ+N8ldbABCx2tU1uzOv0bVUF8rrdz98fkOrt+0UF6NMe7z+8h9XcEQHAN9pV2EXKSqPn2r1tsdr61XwwA/82A0ARL52dRozUqR06tCm7X+9+kM/dQIA1kDYhaHl917Zpu1/XfiVnzoBAGtoV2G3/j+9O73nbV2gdLPFy8as3wDgN+0q7LK6dlRsC584Nvp0XajtmJdL4AGAn7SrsJOkz57IazLwYqNPrw8XO+blauucHGXauKsSANqi3YWddDrQ1v/nD9SxQ7SiJHXsEK31//mDsAq6Bt1s8do4x7excgPOC1AzABCh2u15sqyuHVXy2NhQt+G1u6/O0O/Wezd7wd8eiJzPBQDB0C6P7CLRg2MGeVU3+areimvpwiQAtDP8VowQMdFRWnjrZc3WjMpO1c/ysoPUEQBEDsIugozpl9Fk4D17y6VadPvQIHcEAJGhXU7xE+nqXUZbSitVcbRaqZ0TNKx3imKio0LdFgAEnbd50G5vUAmGY9V1mvaXD1T40SGd+bTLP94yWNdcmt7q942JjpLjwi5tbxAA2gnCLkCuf/a9JqfguXPZNmlZeE0UCwBWxjW7AGgu6M4ULhPFAoDVEXZ+dqy6zquga7CuuDyA3QAAJMLO76b/ZbtP9Xcu2xagTgAADQg7Pyv79qTP29TWuQLQCQCgAWHnZ1nnJfq8zZ+K9vq/EQCAG2HnZ0/d7N1jvc70ZeWJAHQCAGhA2PlZUkKsBnT3baB7z5TQz58HAFbGODsfNDVU4Ozxcm9MvcqnYQW3OXq1pS0AQAs4svNSc+HV2LoEL/dslMQsBQAQYPyW9YI3R2ln16z9z2u8eu8NP/WuDgDQeoRdC3w5HXlm7fkpiYqLaf7hzHExUTo/xfe7NwEAviHsAuiTx8c1GXhxMVH65PFxQe4IANonblAJsE8eH6evK09q7DOFOl5Tr07xMVr9k+9zRAcAQUTY+dlbW77SuGHdPZadn5KoHfPGhKgjAACnMf3s3tc+DHULAICzEHYtePqWS0PdAgCgjQi7FqR2Tgh1CwCANiLsWjCsd4oy7AQeAEQywq4FMdFRmntddqjbAAC0AWHnhTH9MrTw1su8qj37OZkAgNAj7Lw0pl+GPn+i+UHgBB0AhCfCzgcx0VFNBhpBBwDhi0HlrUCwAUBk4cgOAGB5hB0AwPIIOwCA5RF2AADLI+wAAJZH2AEALI+wAwBYHmEHALA8wg4AYHkR+QQVY4wkyel0hrgTAEAoNeRAQy40JSLD7ujRo5KkHj16hLgTAEA4OHr0qOx2e5Pro0xLcRiGXC6X9u/fr86dOysqKuqc9U6nUz169NC+fftks9lC0KFv6Dew6Dew6Dew6Ld5xhgdPXpUmZmZio5u+spcRB7ZRUdHq3v37i3W2Wy2iPjH0YB+A4t+A4t+A4t+m9bcEV0DblABAFgeYQcAsDxLhl18fLzmzp2r+Pj4ULfiFfoNLPoNLPoNLPr1j4i8QQUAAF9Y8sgOAIAzEXYAAMsj7AAAlkfYAQAsj7ADAFieJcPuueeeU69evZSQkKDhw4dry5YtQe9h/fr1uu6665SZmamoqCitWLHCY70xRo888ogyMjKUmJionJwcffrppx41lZWVmjhxomw2m5KTk3XXXXfp2LFjAel3/vz5Gjp0qDp37qzU1FTdeOON2rNnj0dNdXW18vPz1aVLFyUlJWnChAk6ePCgR01ZWZny8vLUsWNHpaamaubMmaqrq/N7vy+88IIGDBjgfkqDw+HQ6tWrw7LXxixYsEBRUVGaNm1aWPY8b948RUVFeXz16dMnLHtt8PXXX+vWW29Vly5dlJiYqP79++v99993rw+nn7levXqds3+joqKUn58vKfz2b319vR5++GH17t1biYmJuvDCC/XYY495PHw5nPZvo4zFLFu2zMTFxZk//vGPZvfu3Wby5MkmOTnZHDx4MKh9vPXWW+ZnP/uZee2114wks3z5co/1CxYsMHa73axYscJ8+OGH5vrrrze9e/c2J0+edNeMGTPGDBw40GzatMm899575qKLLjI/+tGPAtJvbm6uefHFF82uXbtMcXGxGTdunMnKyjLHjh1z19xzzz2mR48eZu3ateb99983I0aMMJdffrl7fV1dnenXr5/Jyckx27dvN2+99Zbp2rWrmT17tt/7feONN8ybb75pPvnkE7Nnzx4zZ84c06FDB7Nr166w6/VsW7ZsMb169TIDBgww999/v3t5OPU8d+5c873vfc8cOHDA/XXo0KGw7NUYYyorK03Pnj3NHXfcYTZv3my++OIL8/bbb5vPPvvMXRNOP3MVFRUe+7agoMBIMu+8844xJvz27+OPP266dOliVq1aZUpLS82rr75qkpKSzNNPP+2uCaf92xjLhd2wYcNMfn6++3V9fb3JzMw08+fPD1lPZ4edy+Uy6enp5he/+IV72ZEjR0x8fLz585//bIwxpqSkxEgyW7duddesXr3aREVFma+//jrgPVdUVBhJprCw0N1fhw4dzKuvvuqu+eijj4wkU1RUZIw5HfDR0dGmvLzcXfPCCy8Ym81mampqAt7zeeedZ37/+9+Hda9Hjx41F198sSkoKDDf//733WEXbj3PnTvXDBw4sNF14darMcY8+OCD5sorr2xyfbj/zN1///3mwgsvNC6XKyz3b15enrnzzjs9lo0fP95MnDjRGBP++9cYYyx1GrO2tlbbtm1TTk6Oe1l0dLRycnJUVFQUws48lZaWqry83KNPu92u4cOHu/ssKipScnKyhgwZ4q7JyclRdHS0Nm/eHPAeq6qqJEkpKSmSpG3btunUqVMePffp00dZWVkePffv319paWnumtzcXDmdTu3evTtgvdbX12vZsmU6fvy4HA5HWPean5+vvLw8j96k8Ny/n376qTIzM3XBBRdo4sSJKisrC9te33jjDQ0ZMkT/+q//qtTUVA0aNEiLFi1yrw/nn7na2lotWbJEd955p6KiosJy/15++eVau3atPvnkE0nShx9+qA0bNmjs2LGSwnv/NojIWQ+a8s0336i+vt7jH4AkpaWl6eOPPw5RV+cqLy+XpEb7bFhXXl6u1NRUj/WxsbFKSUlx1wSKy+XStGnTdMUVV6hfv37ufuLi4pScnNxsz419poZ1/rZz5045HA5VV1crKSlJy5cvV3Z2toqLi8OuV0latmyZPvjgA23duvWcdeG2f4cPH67Fixfrkksu0YEDB/Too4/qqquu0q5du8KuV0n64osv9MILL2jGjBmaM2eOtm7dqp/85CeKi4vTpEmTwvpnbsWKFTpy5IjuuOMOdx/htn9nzZolp9OpPn36KCYmRvX19Xr88cc1ceJEj+8ZjvvX/b0C/h0QcfLz87Vr1y5t2LAh1K0065JLLlFxcbGqqqr0t7/9TZMmTVJhYWGo22rUvn37dP/996ugoEAJCQmhbqdFDX+xS9KAAQM0fPhw9ezZU3/961+VmJgYws4a53K5NGTIED3xxBOSpEGDBmnXrl1auHChJk2aFOLumveHP/xBY8eOVWZmZqhbadJf//pXvfLKK1q6dKm+973vqbi4WNOmTVNmZmbY798GljqN2bVrV8XExJxz19LBgweVnp4eoq7O1dBLc32mp6eroqLCY31dXZ0qKysD+lmmTp2qVatW6Z133vGYMzA9PV21tbU6cuRIsz039pka1vlbXFycLrroIg0ePFjz58/XwIED9fTTT4dlr9u2bVNFRYUuu+wyxcbGKjY2VoWFhXrmmWcUGxurtLS0sOv5TMnJyfqXf/kXffbZZ2G5fzMyMpSdne2xrG/fvu5Tr+H6M/fll1/qH//4h3784x+7l4Xj/p05c6ZmzZqlW265Rf3799dtt92m6dOna/78+R7fM9z275ksFXZxcXEaPHiw1q5d617mcrm0du1aORyOEHbmqXfv3kpPT/fo0+l0avPmze4+HQ6Hjhw5om3btrlr1q1bJ5fLpeHDh/u9J2OMpk6dquXLl2vdunXq3bu3x/rBgwerQ4cOHj3v2bNHZWVlHj3v3LnT4x90QUGBbDbbOb+IAsHlcqmmpiYsex05cqR27typ4uJi99eQIUM0ceJE9/+HW89nOnbsmD7//HNlZGSE5f694oorzhkq88knn6hnz56SwvNnTpJefPFFpaamKi8vz70sHPfviRMnzpkFPCYmRi6XS1L47l8PAb8FJsiWLVtm4uPjzeLFi01JSYm5++67TXJyssddS8Fw9OhRs337drN9+3YjyfzqV78y27dvN19++aUx5vRtusnJyeb11183O3bsMDfccEOjt+kOGjTIbN682WzYsMFcfPHFAbtNd8qUKcZut5t3333X45boEydOuGvuuecek5WVZdatW2fef/9943A4jMPhcK9vuB169OjRpri42KxZs8Z069YtILdDz5o1yxQWFprS0lKzY8cOM2vWLBMVFWX+/ve/h12vTTnzbsxw6/mBBx4w7777riktLTX/+7//a3JyckzXrl1NRUVF2PVqzOnhHLGxsebxxx83n376qXnllVdMx44dzZIlS9w14fYzV19fb7KyssyDDz54zrpw27+TJk0y559/vnvowWuvvWa6du1qfvrTn7prwm3/ns1yYWeMMb/5zW9MVlaWiYuLM8OGDTObNm0Keg/vvPOOkXTO16RJk4wxp2/Vffjhh01aWpqJj483I0eONHv27PF4j8OHD5sf/ehHJikpydhsNvPv//7v5ujRowHpt7FeJZkXX3zRXXPy5Elz7733mvPOO8907NjR/PCHPzQHDhzweJ+9e/easWPHmsTERNO1a1fzwAMPmFOnTvm93zvvvNP07NnTxMXFmW7dupmRI0e6gy7cem3K2WEXTj3ffPPNJiMjw8TFxZnzzz/f3HzzzR5j1sKp1wYrV640/fr1M/Hx8aZPnz7md7/7ncf6cPuZe/vtt42kc3owJvz2r9PpNPfff7/JysoyCQkJ5oILLjA/+9nPPIY5hNv+PRvz2QEALM9S1+wAAGgMYQcAsDzCDgBgeYQdAMDyCDsAgOURdgAAyyPsAACWR9gBACyPsAMAWB5hBwCwPMIOAGB5/x9NPRdP5o2DTgAAAABJRU5ErkJggg==",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# plot image dimensions\n",
"plt.figure(figsize=(5, 5))\n",
"plt.scatter(capacitor_df['img_shape'].str[0], \n",
" capacitor_df['img_shape'].str[1])\n",
"\n",
"print('The median dimension is {} x {}.'.format(np.median(capacitor_df['img_shape'].str[0]), np.median(capacitor_df['img_shape'].str[1])))"
]
},
{
"cell_type": "markdown",
"id": "d21b8bd7-490e-4ee7-a3ed-3930e474cbbb",
"metadata": {},
"source": [
"The images range in size and dimension. However, the TAO Toolkit will resize the images in the dataset to a specific shape when fed to the model for training. "
]
},
{
"cell_type": "markdown",
"id": "a7b710aa-c92c-4d09-934f-5096b2711965",
"metadata": {},
"source": [
"\n",
"### Model Training ###\n",
"Training configuration is done through an experiment spec file, which includes options such as which dataset to use for training, which dataset to use for validation, which pre-trained model architecture to use, which hyperparameters to tune, and other training options. The `train`, `evaluate`, `prune`, and `inference` subtasks for a `classification_tf1` experiment share the same configuration file. Configuration files can be created from scratch or modified using the templates provided in TAO Toolkit's [sample applications](https://docs.nvidia.com/tao/tao-toolkit/#cv-applications). \n",
"\n",
"The training configuration file has three sections: \n",
"* `model_config` (required for training)\n",
"* `eval_config` (not required for training)\n",
"* `training_config` (required for training)"
]
},
{
"cell_type": "markdown",
"id": "3fb34518-d2fd-449c-bcbf-fa5b2fcd086f",
"metadata": {},
"source": [
"
\n",
"\n",
"We will create the configuration files using templates. Specifically, we have broken the configuration files into separate parts for ease of discussion, which we will combine at the end for the TAO Toolkit to consume. \n",
"\n",
"Execute the below cells to preview the combined training/evaluation configuration file that will be used. It is currently not usable as we have made some intentional modifications that will require correction. Furthermore, the `eval_config` portion of the combined configuration file is not used for training, so leaving it unmodified will not adversely impact the training process. "
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "b3a3201c-2443-4f94-852f-f15cc51b25e1",
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"model_config {\n",
" arch: \"<<<>>>\"\n",
" n_layers: <<<>>>\n",
" freeze_blocks: 0\n",
" use_batch_norm: True\n",
" input_image_size: \"3,224,224\"\n",
"}\n",
"##################################################\n",
"train_config {\n",
" train_dataset_path: \"/workspace/tao-experiments/data/<<<>>>\"\n",
" val_dataset_path: \"/workspace/tao-experiments/data/<<<>>>\"\n",
" pretrained_model_path: \"/workspace/tao-experiments/classification/pretrained_resnet50/pretrained_classification_vresnet50/<<<>>>.hdf5\"\n",
" optimizer {\n",
" sgd {\n",
" lr: 0.01\n",
" decay: 0.0\n",
" momentum: 0.9\n",
" nesterov: False\n",
" }\n",
" }\n",
" n_epochs: <<<>>>\n",
" batch_size_per_gpu: 32\n",
" n_workers: 8\n",
" enable_random_crop: False\n",
" enable_center_crop: False\n",
" enable_color_augmentation: False\n",
" preprocess_mode: \"caffe\"\n",
" reg_config {\n",
" type: \"L2\"\n",
" scope: \"Conv2D, Dense\"\n",
" weight_decay: 0.00005\n",
" }\n",
" lr_config {\n",
" step {\n",
" learning_rate: 0.006\n",
" step_size: 10\n",
" gamma: 0.1\n",
" }\n",
" }\n",
"}\n",
"##################################################\n",
"eval_config {\n",
" eval_dataset_path: \"/workspace/tao-experiments/data/<<<>>>\"\n",
" model_path: \"/workspace/tao-experiments/classification/resnet50/weights/<<<>>>.hdf5\"\n",
" top_k: 1\n",
" batch_size: 32\n",
" n_workers: 8\n",
" enable_center_crop: False\n",
"}\n",
"##################################################\n"
]
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# combining configuration components in separate files and writing into one\n",
"!cat $LOCAL_SPECS_DIR/resnet50/model_config.txt \\\n",
" $LOCAL_SPECS_DIR/resnet50/train_config.txt \\\n",
" $LOCAL_SPECS_DIR/resnet50/eval_config.txt \\\n",
" > $LOCAL_SPECS_DIR/resnet50/combined_config.txt\n",
"!cat $LOCAL_SPECS_DIR/resnet50/combined_config.txt"
]
},
{
"cell_type": "markdown",
"id": "02ded461-e7f3-4d20-b406-e1a0b309eb29",
"metadata": {},
"source": [
"
\n",
"\n",
"Note that we must leave an empty new line at the end of each text file to ensure the `combined_config.txt` is created properly. "
]
},
{
"cell_type": "markdown",
"id": "a09b587b-d099-48ab-be87-3e3c8b3f41af",
"metadata": {
"tags": []
},
"source": [
"\n",
"### Exercise #2 - Modify Model Config ###\n",
"The classification model can be configured using the `model_config` option in the spec file. \n",
"* `arch (str)`: This defines the architecture of the back bone feature extractor to be used to train.\n",
"* `n_layers (int)`: Depth of the feature extractor for scalable templates. \n",
"* `use_batch_norm (bool)`: Boolean variable to use batch normalization layers or not. \n",
"* `freeze_blocks (float repeated)`: This parameter defines which blocks may be frozen from the instantiated feature extractor template, and is different for different feature extractor templates.\n",
"* `input_image_size (str)`: The dimension of the input layer of the model. Images in the dataset will be resized to this shape by the dataloader when fed to the model for training. \n",
"\n",
"**Instructions**: \n",
"* Modify the `model_config`[(here)](tao_project/spec_files/resnet50/model_config.txt) section of the training configuration file by changing the ``s into acceptable values and **save changes**. \n",
" * For this lab, we will use _ResNet50_ as the architecture for the classification model. [Residual neural network](https://en.wikipedia.org/wiki/Residual_neural_network), or **ResNet**, is a type of convolutional neural network used as a backbone for many computer vision tasks. The `50` refers to the number of layers in this architecture. It should be noted that typically the deeper (i.e. more layers) a neural network is, the more time consuming it is to compute. "
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "251fa570-af61-4f08-a658-ca8caca46540",
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"model_config {\n",
" arch: \"resnet\"\n",
" n_layers: 50\n",
" freeze_blocks: 0\n",
" use_batch_norm: True\n",
" input_image_size: \"3,224,224\"\n",
"}"
]
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# read the config file\n",
"!cat $LOCAL_SPECS_DIR/resnet50/model_config.txt"
]
},
{
"cell_type": "markdown",
"id": "da9eb38b-7041-4078-b4ad-60ea7086e2fd",
"metadata": {
"tags": []
},
"source": [
"\n",
"### Exercise #3 - Modify Train Config ###\n",
"The `training_config` describes the training and learning process. \n",
"* `train_dataset_path (str)`: UNIX format path to the root directory of the training dataset.\n",
"* `val_dataset_path (str)`: UNIX format path to the root directory of the validation dataset.\n",
"* `pretrained_model_path (str)`: UNIX format path to the model file containing the pretrained weights to initialize the model from.\n",
" * Based on how NGC names the model downloaded, we should use `/workspace/tao-experiments/classification/pretrained_resnet50/pretrained_classification_vresnet50/resnet_50.hdf5` to reference the pre-trained model. \n",
"* `optimizer (dict)`: This parameter defines which optimizer to use for training. Can be chosen from `sgd`, `adam`, or `rmsprop`.\n",
" * `sgd (dict)`\n",
" * `lr (float)`\n",
" * `decay (float)`\n",
" * `momentum (float)`\n",
" * `nesterov (bool)`\n",
"* `batch_size_per_gpu (int)`: This parameter defines the number of images per batch per gpu.\n",
"* `n_workers (int)`: Number of workers fetching batches of images in the training/validation dataloader.\n",
"* `n_epochs (int)`: This parameter defines the total number of epochs to run the experiment.\n",
"* `enable_random_crop (bool)`: A flag to enable random crop during training.\n",
"* `enable_center_crop (bool)`: A flag to enable center crop during validation.\n",
"* `enable_color_augmentation (bool)`: A flag to enable color augmentation during training.\n",
"* `preprocess_mode (str)`: Mode for input image preprocessing. Defaults to `caffe`.\n",
"* `reg_config (dict)`: The parameters for regularizers.\n",
" * `type (str)`: Regularizer type can be `L1`, `L2` or `None`.\n",
" * `scope (str)`: Scope can be either `Conv2D` or `Dense` or both.\n",
" * `weight_decay (float)`: 0 < weight decay < 1. \n",
"* `lr_config (dict)`: The parameters for learning rate scheduler.\n",
" * `step (dict)`: Defines the step learning rate scheduler. \n",
" * `learning_rate (float)`: The base (maximum) learning rate value.\n",
" * `step_size (int)`: The progress (percentage of the entire training duration) after which the learning rate will be decreased.\n",
" * `gamma (float)`: The multiplicative factor used to decrease the learning rate.\n",
"\n",
"**Instructions**: \n",
"* Modify the `train_config`[(here)](tao_project/spec_files/resnet50/train_config.txt) section of the configuration file by changing the ``s into acceptable values and **save changes**. Typically, using a higher epochs count will improve model performance but takes longer time to complete. For the purpose of this exercise, we recommend starting with a low `n_epochs`, such as `10`, to allow the model to converge without taking too much time. "
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "d5ac8ebc-0ede-4d6f-b982-47f6bf649b95",
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"train_config {\n",
" train_dataset_path: \"/workspace/tao-experiments/data/train\"\n",
" val_dataset_path: \"/workspace/tao-experiments/data/val\"\n",
" pretrained_model_path: \"/workspace/tao-experiments/classification/pretrained_resnet50/pretrained_classification_vresnet50/resnet_50.hdf5\"\n",
" optimizer {\n",
" sgd {\n",
" lr: 0.01\n",
" decay: 0.0\n",
" momentum: 0.9\n",
" nesterov: False\n",
" }\n",
" }\n",
" n_epochs: 10\n",
" batch_size_per_gpu: 32\n",
" n_workers: 8\n",
" enable_random_crop: False\n",
" enable_center_crop: False\n",
" enable_color_augmentation: False\n",
" preprocess_mode: \"caffe\"\n",
" reg_config {\n",
" type: \"L2\"\n",
" scope: \"Conv2D, Dense\"\n",
" weight_decay: 0.00005\n",
" }\n",
" lr_config {\n",
" step {\n",
" learning_rate: 0.006\n",
" step_size: 10\n",
" gamma: 0.1\n",
" }\n",
" }\n",
"}\n"
]
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# read the config file\n",
"!cat $LOCAL_SPECS_DIR/resnet50/train_config.txt"
]
},
{
"cell_type": "markdown",
"id": "2cac10ab-9555-42fa-bf53-8a4c81daaedc",
"metadata": {},
"source": [
"\n",
"### Combine Configuration Files and Initiate Model Training ###"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "67af8d63-2748-47b9-9bc1-ac561a34d6af",
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"model_config {\n",
" arch: \"resnet\"\n",
" n_layers: 50\n",
" freeze_blocks: 0\n",
" use_batch_norm: True\n",
" input_image_size: \"3,224,224\"\n",
"}train_config {\n",
" train_dataset_path: \"/workspace/tao-experiments/data/train\"\n",
" val_dataset_path: \"/workspace/tao-experiments/data/val\"\n",
" pretrained_model_path: \"/workspace/tao-experiments/classification/pretrained_resnet50/pretrained_classification_vresnet50/resnet_50.hdf5\"\n",
" optimizer {\n",
" sgd {\n",
" lr: 0.01\n",
" decay: 0.0\n",
" momentum: 0.9\n",
" nesterov: False\n",
" }\n",
" }\n",
" n_epochs: 10\n",
" batch_size_per_gpu: 32\n",
" n_workers: 8\n",
" enable_random_crop: False\n",
" enable_center_crop: False\n",
" enable_color_augmentation: False\n",
" preprocess_mode: \"caffe\"\n",
" reg_config {\n",
" type: \"L2\"\n",
" scope: \"Conv2D, Dense\"\n",
" weight_decay: 0.00005\n",
" }\n",
" lr_config {\n",
" step {\n",
" learning_rate: 0.006\n",
" step_size: 10\n",
" gamma: 0.1\n",
" }\n",
" }\n",
"}\n",
"eval_config {\n",
" eval_dataset_path: \"/workspace/tao-experiments/data/<<<>>>\"\n",
" model_path: \"/workspace/tao-experiments/classification/resnet50/weights/<<<>>>.hdf5\"\n",
" top_k: 1\n",
" batch_size: 32\n",
" n_workers: 8\n",
" enable_center_crop: False\n",
"}\n",
"##################################################\n"
]
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# combining configuration components in separate files and writing into one\n",
"!cat $LOCAL_SPECS_DIR/resnet50/model_config.txt \\\n",
" $LOCAL_SPECS_DIR/resnet50/train_config.txt \\\n",
" $LOCAL_SPECS_DIR/resnet50/eval_config.txt \\\n",
" > $LOCAL_SPECS_DIR/resnet50/combined_config.txt\n",
"!cat $LOCAL_SPECS_DIR/resnet50/combined_config.txt"
]
},
{
"cell_type": "markdown",
"id": "80fcd57b-41cf-432e-b2f3-033140bb8799",
"metadata": {},
"source": [
"After preparing the input data and setting up the spec file(s), we can start training the classification model."
]
},
{
"cell_type": "raw",
"id": "71e40905-6482-48dc-b81b-a5a5a9657f99",
"metadata": {},
"source": [
"tao model classification train [-h] -e \n",
" -r \n",
" -k \n",
" [-v Set Verbosity of the logger]\n",
" [--gpus GPUS]\n",
" [--gpu_index GPU_INDEX]"
]
},
{
"cell_type": "markdown",
"id": "fbbe0274-1990-48cf-b3d1-191d9e191f67",
"metadata": {},
"source": [
"When using the `train` subtask, the `-e` argument indicates the path to the spec file, the `-r` argument indicates the result directory, and the `-k` indicates the key to _load_ the pre-trained weights. \n",
"\n",
"_Multi-GPU support can be enabled for those with the hardware using the `--gpus` argument. When running the training with more than one GPU, we will need to modify the `batch_size` and `learning_rate`. In most cases, scaling down the batch-size by a factor of NUM_GPU's or scaling up the learning rate by a factor of NUM_GPUs would be a good place to start._"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "890df497-2679-4f97-a175-7d76ad520d7c",
"metadata": {},
"outputs": [],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# remove any previous training if exists\n",
"!rm -rf $LOCAL_EXPERIMENT_DIR/resnet50"
]
},
{
"cell_type": "markdown",
"id": "fab8ba85-1a06-424e-a4ec-6461de7df0d2",
"metadata": {},
"source": [
"
\n",
"\n",
"While the TAO Toolkit is running, there may be some _TensorFlow deprecation_ warning messages that can be ignored. "
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "23671788-5215-4ab0-b6b4-09d9ab6738cd",
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2026-02-02 17:51:08,008 [TAO Toolkit] [INFO] root 160: Registry: ['nvcr.io']\n",
"2026-02-02 17:51:08,104 [TAO Toolkit] [INFO] nvidia_tao_cli.components.instance_handler.local_instance 360: Running command in container: nvcr.io/nvidia/tao/tao-toolkit:5.0.0-tf1.15.5\n",
"2026-02-02 17:51:08,116 [TAO Toolkit] [INFO] nvidia_tao_cli.components.docker_handler.docker_handler 301: Printing tty value True\n",
"Using TensorFlow backend.\n",
"2026-02-02 17:51:08.922693: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudart.so.12\n",
"2026-02-02 17:51:08,973 [TAO Toolkit] [WARNING] tensorflow 40: Deprecation warnings have been disabled. Set TF_ENABLE_DEPRECATION_WARNINGS=1 to re-enable them.\n",
"2026-02-02 17:51:10,031 [TAO Toolkit] [WARNING] tensorflow 43: TensorFlow will not use sklearn by default. This improves performance in some cases. To enable sklearn export the environment variable TF_ALLOW_IOLIBS=1.\n",
"2026-02-02 17:51:10,085 [TAO Toolkit] [WARNING] tensorflow 42: TensorFlow will not use Dask by default. This improves performance in some cases. To enable Dask export the environment variable TF_ALLOW_IOLIBS=1.\n",
"2026-02-02 17:51:10,090 [TAO Toolkit] [WARNING] tensorflow 43: TensorFlow will not use Pandas by default. This improves performance in some cases. To enable Pandas export the environment variable TF_ALLOW_IOLIBS=1.\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:150: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_hue(img, max_delta=10.0):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:173: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_saturation(img, max_shift):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:183: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_contrast(img, center, max_contrast_scale):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:192: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_shift(x_img, shift_stddev):\n",
"2026-02-02 17:51:11.914350: I tensorflow/core/platform/profile_utils/cpu_utils.cc:109] CPU Frequency: 2499995000 Hz\n",
"2026-02-02 17:51:11.914764: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x8eac0f0 initialized for platform Host (this does not guarantee that XLA will be used). Devices:\n",
"2026-02-02 17:51:11.914803: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version\n",
"2026-02-02 17:51:11.916154: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcuda.so.1\n",
"2026-02-02 17:51:12.101379: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 17:51:12.103285: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x8cc74a0 initialized for platform CUDA (this does not guarantee that XLA will be used). Devices:\n",
"2026-02-02 17:51:12.103326: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Tesla T4, Compute Capability 7.5\n",
"2026-02-02 17:51:12.103671: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 17:51:12.105440: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1674] Found device 0 with properties: \n",
"name: Tesla T4 major: 7 minor: 5 memoryClockRate(GHz): 1.59\n",
"pciBusID: 0000:00:1e.0\n",
"2026-02-02 17:51:12.105508: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudart.so.12\n",
"2026-02-02 17:51:12.105642: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcublas.so.12\n",
"2026-02-02 17:51:12.107815: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcufft.so.11\n",
"2026-02-02 17:51:12.107931: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcurand.so.10\n",
"2026-02-02 17:51:12.111960: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcusolver.so.11\n",
"2026-02-02 17:51:12.113208: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcusparse.so.12\n",
"2026-02-02 17:51:12.113286: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudnn.so.8\n",
"2026-02-02 17:51:12.113417: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 17:51:12.115212: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 17:51:12.116912: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1802] Adding visible gpu devices: 0\n",
"2026-02-02 17:51:12.116958: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudart.so.12\n",
"2026-02-02 17:51:12.125622: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1214] Device interconnect StreamExecutor with strength 1 edge matrix:\n",
"2026-02-02 17:51:12.125651: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1220] 0 \n",
"2026-02-02 17:51:12.125665: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1233] 0: N \n",
"2026-02-02 17:51:12.125846: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 17:51:12.127636: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 17:51:12.129384: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1359] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 13496 MB memory) -> physical GPU (device: 0, name: Tesla T4, pci bus id: 0000:00:1e.0, compute capability: 7.5)\n",
"Using TensorFlow backend.\n",
"WARNING:tensorflow:Deprecation warnings have been disabled. Set TF_ENABLE_DEPRECATION_WARNINGS=1 to re-enable them.\n",
"WARNING:tensorflow:TensorFlow will not use sklearn by default. This improves performance in some cases. To enable sklearn export the environment variable TF_ALLOW_IOLIBS=1.\n",
"2026-02-02 17:51:13,795 [TAO Toolkit] [WARNING] tensorflow 43: TensorFlow will not use sklearn by default. This improves performance in some cases. To enable sklearn export the environment variable TF_ALLOW_IOLIBS=1.\n",
"WARNING:tensorflow:TensorFlow will not use Dask by default. This improves performance in some cases. To enable Dask export the environment variable TF_ALLOW_IOLIBS=1.\n",
"2026-02-02 17:51:13,833 [TAO Toolkit] [WARNING] tensorflow 42: TensorFlow will not use Dask by default. This improves performance in some cases. To enable Dask export the environment variable TF_ALLOW_IOLIBS=1.\n",
"WARNING:tensorflow:TensorFlow will not use Pandas by default. This improves performance in some cases. To enable Pandas export the environment variable TF_ALLOW_IOLIBS=1.\n",
"2026-02-02 17:51:13,837 [TAO Toolkit] [WARNING] tensorflow 43: TensorFlow will not use Pandas by default. This improves performance in some cases. To enable Pandas export the environment variable TF_ALLOW_IOLIBS=1.\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:150: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_hue(img, max_delta=10.0):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:173: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_saturation(img, max_shift):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:183: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_contrast(img, center, max_contrast_scale):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:192: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_shift(x_img, shift_stddev):\n",
"2026-02-02 17:51:15,055 [TAO Toolkit] [INFO] __main__ 388: Loading experiment spec at /workspace/tao-experiments/spec_files/resnet50/combined_config.txt.\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/train.py:398: The name tf.ConfigProto is deprecated. Please use tf.compat.v1.ConfigProto instead.\n",
"\n",
"2026-02-02 17:51:15,059 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/train.py:398: The name tf.ConfigProto is deprecated. Please use tf.compat.v1.ConfigProto instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/train.py:407: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.\n",
"\n",
"2026-02-02 17:51:15,059 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/train.py:407: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/train.py:431: The name tf.logging.set_verbosity is deprecated. Please use tf.compat.v1.logging.set_verbosity instead.\n",
"\n",
"2026-02-02 17:51:15,404 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/train.py:431: The name tf.logging.set_verbosity is deprecated. Please use tf.compat.v1.logging.set_verbosity instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/train.py:431: The name tf.logging.INFO is deprecated. Please use tf.compat.v1.logging.INFO instead.\n",
"\n",
"2026-02-02 17:51:15,404 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/train.py:431: The name tf.logging.INFO is deprecated. Please use tf.compat.v1.logging.INFO instead.\n",
"\n",
"2026-02-02 17:51:15,405 [TAO Toolkit] [INFO] __main__ 478: Default image mean [103.939, 116.779, 123.68] will be used.\n",
"Found 1332 images belonging to 2 classes.\n",
"2026-02-02 17:51:15,433 [TAO Toolkit] [INFO] __main__ 294: Processing dataset (train): /workspace/tao-experiments/data/train\n",
"Found 571 images belonging to 2 classes.\n",
"2026-02-02 17:51:15,442 [TAO Toolkit] [INFO] __main__ 311: Processing dataset (validation): /workspace/tao-experiments/data/val\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n",
"\n",
"2026-02-02 17:51:15,442 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n",
"\n",
"2026-02-02 17:51:15,443 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n",
"\n",
"2026-02-02 17:51:15,444 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:1834: The name tf.nn.fused_batch_norm is deprecated. Please use tf.compat.v1.nn.fused_batch_norm instead.\n",
"\n",
"2026-02-02 17:51:15,460 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:1834: The name tf.nn.fused_batch_norm is deprecated. Please use tf.compat.v1.nn.fused_batch_norm instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:133: The name tf.placeholder_with_default is deprecated. Please use tf.compat.v1.placeholder_with_default instead.\n",
"\n",
"2026-02-02 17:51:15,465 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:133: The name tf.placeholder_with_default is deprecated. Please use tf.compat.v1.placeholder_with_default instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/third_party/keras/tensorflow_backend.py:199: The name tf.nn.avg_pool is deprecated. Please use tf.nn.avg_pool2d instead.\n",
"\n",
"2026-02-02 17:51:17,000 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/third_party/keras/tensorflow_backend.py:199: The name tf.nn.avg_pool is deprecated. Please use tf.nn.avg_pool2d instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:174: The name tf.get_default_session is deprecated. Please use tf.compat.v1.get_default_session instead.\n",
"\n",
"2026-02-02 17:51:18,690 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:174: The name tf.get_default_session is deprecated. Please use tf.compat.v1.get_default_session instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:190: The name tf.global_variables is deprecated. Please use tf.compat.v1.global_variables instead.\n",
"\n",
"2026-02-02 17:51:18,690 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:190: The name tf.global_variables is deprecated. Please use tf.compat.v1.global_variables instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:199: The name tf.is_variable_initialized is deprecated. Please use tf.compat.v1.is_variable_initialized instead.\n",
"\n",
"2026-02-02 17:51:18,690 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:199: The name tf.is_variable_initialized is deprecated. Please use tf.compat.v1.is_variable_initialized instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:206: The name tf.variables_initializer is deprecated. Please use tf.compat.v1.variables_initializer instead.\n",
"\n",
"2026-02-02 17:51:19,742 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:206: The name tf.variables_initializer is deprecated. Please use tf.compat.v1.variables_initializer instead.\n",
"\n",
"__________________________________________________________________________________________________\n",
"Layer (type) Output Shape Param # Connected to \n",
"==================================================================================================\n",
"input_1 (InputLayer) (None, 3, 224, 224) 0 \n",
"__________________________________________________________________________________________________\n",
"conv1 (Conv2D) (None, 64, 112, 112) 9408 input_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"bn_conv1 (BatchNormalization) (None, 64, 112, 112) 256 conv1[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_1 (Activation) (None, 64, 112, 112) 0 bn_conv1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_1 (Conv2D) (None, 64, 56, 56) 4096 activation_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_1 (BatchNormalizati (None, 64, 56, 56) 256 block_1a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_relu_1 (Activation) (None, 64, 56, 56) 0 block_1a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_2 (Conv2D) (None, 64, 56, 56) 36864 block_1a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_2 (BatchNormalizati (None, 64, 56, 56) 256 block_1a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_relu_2 (Activation) (None, 64, 56, 56) 0 block_1a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_3 (Conv2D) (None, 256, 56, 56) 16384 block_1a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_shortcut (Conv2D) (None, 256, 56, 56) 16384 activation_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_3 (BatchNormalizati (None, 256, 56, 56) 1024 block_1a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_shortcut (BatchNorm (None, 256, 56, 56) 1024 block_1a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_1 (Add) (None, 256, 56, 56) 0 block_1a_bn_3[0][0] \n",
" block_1a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_relu (Activation) (None, 256, 56, 56) 0 add_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_conv_1 (Conv2D) (None, 64, 56, 56) 16384 block_1a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_bn_1 (BatchNormalizati (None, 64, 56, 56) 256 block_1b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_relu_1 (Activation) (None, 64, 56, 56) 0 block_1b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_conv_2 (Conv2D) (None, 64, 56, 56) 36864 block_1b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_bn_2 (BatchNormalizati (None, 64, 56, 56) 256 block_1b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_relu_2 (Activation) (None, 64, 56, 56) 0 block_1b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_conv_3 (Conv2D) (None, 256, 56, 56) 16384 block_1b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_bn_3 (BatchNormalizati (None, 256, 56, 56) 1024 block_1b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_2 (Add) (None, 256, 56, 56) 0 block_1b_bn_3[0][0] \n",
" block_1a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_relu (Activation) (None, 256, 56, 56) 0 add_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_conv_1 (Conv2D) (None, 64, 56, 56) 16384 block_1b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_bn_1 (BatchNormalizati (None, 64, 56, 56) 256 block_1c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_relu_1 (Activation) (None, 64, 56, 56) 0 block_1c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_conv_2 (Conv2D) (None, 64, 56, 56) 36864 block_1c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_bn_2 (BatchNormalizati (None, 64, 56, 56) 256 block_1c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_relu_2 (Activation) (None, 64, 56, 56) 0 block_1c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_conv_3 (Conv2D) (None, 256, 56, 56) 16384 block_1c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_bn_3 (BatchNormalizati (None, 256, 56, 56) 1024 block_1c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_3 (Add) (None, 256, 56, 56) 0 block_1c_bn_3[0][0] \n",
" block_1b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_relu (Activation) (None, 256, 56, 56) 0 add_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_1 (Conv2D) (None, 128, 28, 28) 32768 block_1c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_relu_1 (Activation) (None, 128, 28, 28) 0 block_2a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_relu_2 (Activation) (None, 128, 28, 28) 0 block_2a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_shortcut (Conv2D) (None, 512, 28, 28) 131072 block_1c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_shortcut (BatchNorm (None, 512, 28, 28) 2048 block_2a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_4 (Add) (None, 512, 28, 28) 0 block_2a_bn_3[0][0] \n",
" block_2a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_relu (Activation) (None, 512, 28, 28) 0 add_4[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_conv_1 (Conv2D) (None, 128, 28, 28) 65536 block_2a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_relu_1 (Activation) (None, 128, 28, 28) 0 block_2b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_relu_2 (Activation) (None, 128, 28, 28) 0 block_2b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_5 (Add) (None, 512, 28, 28) 0 block_2b_bn_3[0][0] \n",
" block_2a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_relu (Activation) (None, 512, 28, 28) 0 add_5[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_conv_1 (Conv2D) (None, 128, 28, 28) 65536 block_2b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_relu_1 (Activation) (None, 128, 28, 28) 0 block_2c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_relu_2 (Activation) (None, 128, 28, 28) 0 block_2c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_6 (Add) (None, 512, 28, 28) 0 block_2c_bn_3[0][0] \n",
" block_2b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_relu (Activation) (None, 512, 28, 28) 0 add_6[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_conv_1 (Conv2D) (None, 128, 28, 28) 65536 block_2c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2d_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_relu_1 (Activation) (None, 128, 28, 28) 0 block_2d_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2d_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2d_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_relu_2 (Activation) (None, 128, 28, 28) 0 block_2d_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2d_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2d_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_7 (Add) (None, 512, 28, 28) 0 block_2d_bn_3[0][0] \n",
" block_2c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_relu (Activation) (None, 512, 28, 28) 0 add_7[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_1 (Conv2D) (None, 256, 14, 14) 131072 block_2d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_relu_1 (Activation) (None, 256, 14, 14) 0 block_3a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_relu_2 (Activation) (None, 256, 14, 14) 0 block_3a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_shortcut (Conv2D) (None, 1024, 14, 14) 524288 block_2d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_shortcut (BatchNorm (None, 1024, 14, 14) 4096 block_3a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_8 (Add) (None, 1024, 14, 14) 0 block_3a_bn_3[0][0] \n",
" block_3a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_relu (Activation) (None, 1024, 14, 14) 0 add_8[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_relu_1 (Activation) (None, 256, 14, 14) 0 block_3b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_relu_2 (Activation) (None, 256, 14, 14) 0 block_3b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_9 (Add) (None, 1024, 14, 14) 0 block_3b_bn_3[0][0] \n",
" block_3a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_relu (Activation) (None, 1024, 14, 14) 0 add_9[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_relu_1 (Activation) (None, 256, 14, 14) 0 block_3c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_relu_2 (Activation) (None, 256, 14, 14) 0 block_3c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_10 (Add) (None, 1024, 14, 14) 0 block_3c_bn_3[0][0] \n",
" block_3b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_relu (Activation) (None, 1024, 14, 14) 0 add_10[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3d_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_relu_1 (Activation) (None, 256, 14, 14) 0 block_3d_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3d_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3d_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_relu_2 (Activation) (None, 256, 14, 14) 0 block_3d_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3d_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3d_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_11 (Add) (None, 1024, 14, 14) 0 block_3d_bn_3[0][0] \n",
" block_3c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_relu (Activation) (None, 1024, 14, 14) 0 add_11[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3e_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_relu_1 (Activation) (None, 256, 14, 14) 0 block_3e_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3e_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3e_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_relu_2 (Activation) (None, 256, 14, 14) 0 block_3e_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3e_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3e_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_12 (Add) (None, 1024, 14, 14) 0 block_3e_bn_3[0][0] \n",
" block_3d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_relu (Activation) (None, 1024, 14, 14) 0 add_12[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3e_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3f_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_relu_1 (Activation) (None, 256, 14, 14) 0 block_3f_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3f_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3f_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_relu_2 (Activation) (None, 256, 14, 14) 0 block_3f_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3f_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3f_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_13 (Add) (None, 1024, 14, 14) 0 block_3f_bn_3[0][0] \n",
" block_3e_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_relu (Activation) (None, 1024, 14, 14) 0 add_13[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_1 (Conv2D) (None, 512, 14, 14) 524288 block_3f_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_1 (BatchNormalizati (None, 512, 14, 14) 2048 block_4a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_relu_1 (Activation) (None, 512, 14, 14) 0 block_4a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_2 (Conv2D) (None, 512, 14, 14) 2359296 block_4a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_2 (BatchNormalizati (None, 512, 14, 14) 2048 block_4a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_relu_2 (Activation) (None, 512, 14, 14) 0 block_4a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_3 (Conv2D) (None, 2048, 14, 14) 1048576 block_4a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_shortcut (Conv2D) (None, 2048, 14, 14) 2097152 block_3f_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_3 (BatchNormalizati (None, 2048, 14, 14) 8192 block_4a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_shortcut (BatchNorm (None, 2048, 14, 14) 8192 block_4a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_14 (Add) (None, 2048, 14, 14) 0 block_4a_bn_3[0][0] \n",
" block_4a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_relu (Activation) (None, 2048, 14, 14) 0 add_14[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_conv_1 (Conv2D) (None, 512, 14, 14) 1048576 block_4a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_bn_1 (BatchNormalizati (None, 512, 14, 14) 2048 block_4b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_relu_1 (Activation) (None, 512, 14, 14) 0 block_4b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_conv_2 (Conv2D) (None, 512, 14, 14) 2359296 block_4b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_bn_2 (BatchNormalizati (None, 512, 14, 14) 2048 block_4b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_relu_2 (Activation) (None, 512, 14, 14) 0 block_4b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_conv_3 (Conv2D) (None, 2048, 14, 14) 1048576 block_4b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_bn_3 (BatchNormalizati (None, 2048, 14, 14) 8192 block_4b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_15 (Add) (None, 2048, 14, 14) 0 block_4b_bn_3[0][0] \n",
" block_4a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_relu (Activation) (None, 2048, 14, 14) 0 add_15[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_conv_1 (Conv2D) (None, 512, 14, 14) 1048576 block_4b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_bn_1 (BatchNormalizati (None, 512, 14, 14) 2048 block_4c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_relu_1 (Activation) (None, 512, 14, 14) 0 block_4c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_conv_2 (Conv2D) (None, 512, 14, 14) 2359296 block_4c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_bn_2 (BatchNormalizati (None, 512, 14, 14) 2048 block_4c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_relu_2 (Activation) (None, 512, 14, 14) 0 block_4c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_conv_3 (Conv2D) (None, 2048, 14, 14) 1048576 block_4c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_bn_3 (BatchNormalizati (None, 2048, 14, 14) 8192 block_4c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_16 (Add) (None, 2048, 14, 14) 0 block_4c_bn_3[0][0] \n",
" block_4b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_relu (Activation) (None, 2048, 14, 14) 0 add_16[0][0] \n",
"__________________________________________________________________________________________________\n",
"avg_pool (AveragePooling2D) (None, 2048, 1, 1) 0 block_4c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"flatten (Flatten) (None, 2048) 0 avg_pool[0][0] \n",
"__________________________________________________________________________________________________\n",
"predictions (Dense) (None, 2) 4098 flatten[0][0] \n",
"==================================================================================================\n",
"Total params: 23,565,250\n",
"Trainable params: 23,502,722\n",
"Non-trainable params: 62,528\n",
"__________________________________________________________________________________________________\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n",
"\n",
"2026-02-02 17:52:27,073 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.\n",
"\n",
"2026-02-02 17:52:27,084 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/common/utils.py:1133: The name tf.summary.FileWriter is deprecated. Please use tf.compat.v1.summary.FileWriter instead.\n",
"\n",
"2026-02-02 17:52:27,114 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/common/utils.py:1133: The name tf.summary.FileWriter is deprecated. Please use tf.compat.v1.summary.FileWriter instead.\n",
"\n",
"2026-02-02 17:52:27,115 [TAO Toolkit] [INFO] nvidia_tao_tf1.cv.common.logging.logging 197: Log file already exists at /workspace/tao-experiments/classification/resnet50/status.json\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n",
"\n",
"2026-02-02 17:52:30,267 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:973: The name tf.assign is deprecated. Please use tf.compat.v1.assign instead.\n",
"\n",
"2026-02-02 17:52:30,589 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:973: The name tf.assign is deprecated. Please use tf.compat.v1.assign instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/common/utils.py:1181: The name tf.summary.merge_all is deprecated. Please use tf.compat.v1.summary.merge_all instead.\n",
"\n",
"2026-02-02 17:52:33,114 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/common/utils.py:1181: The name tf.summary.merge_all is deprecated. Please use tf.compat.v1.summary.merge_all instead.\n",
"\n",
"2026-02-02 17:52:34,924 [TAO Toolkit] [INFO] root 2102: Starting Training Loop.\n",
"Epoch 1/10\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/common/utils.py:199: The name tf.Summary is deprecated. Please use tf.compat.v1.Summary instead.\n",
"\n",
"2026-02-02 17:53:01,589 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/common/utils.py:199: The name tf.Summary is deprecated. Please use tf.compat.v1.Summary instead.\n",
"\n",
"42/42 [==============================] - 59s 1s/step - loss: 0.4340 - acc: 0.9274 - val_loss: 0.3599 - val_acc: 0.9475\n",
"2026-02-02 17:53:48,745 [TAO Toolkit] [INFO] root 2102: Training loop in progress\n",
"Epoch 2/10\n",
"42/42 [==============================] - 19s 448ms/step - loss: 0.3400 - acc: 0.9482 - val_loss: 0.3454 - val_acc: 0.9475\n",
"2026-02-02 17:54:14,829 [TAO Toolkit] [INFO] root 2102: Training loop in progress\n",
"Epoch 3/10\n",
"42/42 [==============================] - 19s 447ms/step - loss: 0.3342 - acc: 0.9486 - val_loss: 0.3448 - val_acc: 0.9475\n",
"2026-02-02 17:54:35,050 [TAO Toolkit] [INFO] root 2102: Training loop in progress\n",
"Epoch 4/10\n",
"42/42 [==============================] - 19s 446ms/step - loss: 0.3388 - acc: 0.9478 - val_loss: 0.3440 - val_acc: 0.9475\n",
"2026-02-02 17:54:54,259 [TAO Toolkit] [INFO] root 2102: Training loop in progress\n",
"Epoch 5/10\n",
"42/42 [==============================] - 19s 447ms/step - loss: 0.3325 - acc: 0.9478 - val_loss: 0.3447 - val_acc: 0.9475\n",
"2026-02-02 17:55:13,509 [TAO Toolkit] [INFO] root 2102: Training loop in progress\n",
"Epoch 6/10\n",
"42/42 [==============================] - 19s 448ms/step - loss: 0.3342 - acc: 0.9486 - val_loss: 0.3441 - val_acc: 0.9475\n",
"2026-02-02 17:55:32,768 [TAO Toolkit] [INFO] root 2102: Training loop in progress\n",
"Epoch 7/10\n",
"42/42 [==============================] - 19s 448ms/step - loss: 0.3328 - acc: 0.9482 - val_loss: 0.3439 - val_acc: 0.9475\n",
"2026-02-02 17:55:52,032 [TAO Toolkit] [INFO] root 2102: Training loop in progress\n",
"Epoch 8/10\n",
"42/42 [==============================] - 19s 448ms/step - loss: 0.3376 - acc: 0.9486 - val_loss: 0.3449 - val_acc: 0.9475\n",
"2026-02-02 17:56:11,359 [TAO Toolkit] [INFO] root 2102: Training loop in progress\n",
"Epoch 9/10\n",
"42/42 [==============================] - 19s 448ms/step - loss: 0.3358 - acc: 0.9482 - val_loss: 0.3451 - val_acc: 0.9475\n",
"2026-02-02 17:56:30,639 [TAO Toolkit] [INFO] root 2102: Training loop in progress\n",
"Epoch 10/10\n",
"42/42 [==============================] - 19s 449ms/step - loss: 0.3380 - acc: 0.9478 - val_loss: 0.3446 - val_acc: 0.9475\n",
"2026-02-02 17:56:49,950 [TAO Toolkit] [INFO] root 2102: Training loop in progress\n",
"2026-02-02 17:56:49,966 [TAO Toolkit] [INFO] root 2102: Training loop complete.\n",
"2026-02-02 17:56:49,978 [TAO Toolkit] [INFO] root 2102: Final model evaluation in progress.\n",
"2026-02-02 17:56:53,749 [TAO Toolkit] [INFO] root 2102: Model evaluation is complete.\n",
"2026-02-02 17:56:53,749 [TAO Toolkit] [INFO] __main__ 625: Total Val Loss: 0.34459400177001953\n",
"2026-02-02 17:56:53,749 [TAO Toolkit] [INFO] __main__ 626: Total Val accuracy: 0.9474605917930603\n",
"2026-02-02 17:56:53,749 [TAO Toolkit] [INFO] root 2102: Training finished successfully.\n",
"2026-02-02 17:56:53,749 [TAO Toolkit] [INFO] __main__ 651: Training finished successfully.\n",
"Telemetry data couldn't be sent, but the command ran successfully.\n",
"[WARNING]: \n",
"Execution status: PASS\n",
"2026-02-02 17:57:16,246 [TAO Toolkit] [INFO] nvidia_tao_cli.components.docker_handler.docker_handler 363: Stopping container.\n"
]
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# train model\n",
"!tao model classification_tf1 train -e $TAO_SPECS_DIR/resnet50/combined_config.txt \\\n",
" -r $TAO_EXPERIMENT_DIR/resnet50 \\\n",
" -k $KEY"
]
},
{
"cell_type": "markdown",
"id": "5ad44218-d756-4e76-883f-0fcc76044254",
"metadata": {},
"source": [
"**Note**: The training may take some time to complete. For this dataset, each epoch takes ~20 seconds using 32 as `batch_size`. If the training process is taking too long due to a high `n_epochs`, you can interrupt the kernel to stop the training prematurely and start over with a lower `n_epochs`. The last training step (epoch) of the model is saved in the `/workspace/tao-experiments/classification/resnet50/weights` directory, which is used for evaluation, inference, and export. "
]
},
{
"cell_type": "markdown",
"id": "dc293375-1728-49ef-a331-a7d949ee6229",
"metadata": {},
"source": [
"\n",
"### Model Evaluation ###\n",
"The model should be evaluated for its performance at the end of training. For classification, this is typically characterized as the accuracy performance. Sometimes we need more insight into accuracy using metrics such as **precision**, **recall**, and **f1-score** for every class. To achieve this, the TAO Toolkit first produces a [**confusion matrix**](https://en.wikipedia.org/wiki/Confusion_matrix). "
]
},
{
"cell_type": "markdown",
"id": "5ec8e101-627d-4f7b-a07f-166498d6c9f7",
"metadata": {},
"source": [
"\n",
"#### Exercise #4 - Modify Eval Config ####\n",
"The `eval_config` describes the configurable parameters for evaluating a classification model. \n",
"* `eval_dataset_path (str)`: UNIX format path to the root directory of the evaluation dataset. This can be the train, validation, or test dataset, depending on the usage. Normally, a separate test set would be used for this purpose to be independent from the training process. However, given the limited data size, we will evaluate our model based on the _validation_ dataset. \n",
"* `model_path (str)`: UNIX format path to the root directory of the model file you would like to evaluate.\n",
" * We can choose where to store the trained model - in this case we used `/workspace/tao-experiments/classification/resnet50` inside of the TAO container, which is mapped to `tao_project/classification/resnet50` in our local drive. Furthermore, the trained model name will follow the format `_0.hdf5`, unless specified otherwise. Therefore we should use `/workspace/tao-experiments/classification/resnet50/weights/resnet_010.hdf5` if `n_epochs` is set to `10`. \n",
"* `top_k (int)`: The number of elements to look at when calculating the top-K classification categorical accuracy metric.\n",
"* `batch_size (int)`: Number of images per batch when evaluating the model.\n",
"* `n_workers (int)`: Number of workers fetching batches of images in the evaluation dataloader.\n",
"* `enable_center_crop (bool)`: Enable center crop for input images or not. Usually this parameter is set to `True` to achieve better accuracy.\n",
"\n",
"**Instructions**: \n",
"* Execute the below cell to view the model trained and familiarize with how it should be referenced. \n",
"* Modify the `eval_config`[(here)](tao_project/spec_files/resnet50/eval_config.txt) section of the training configuration file by changing the `` into acceptable values and **save changes**. "
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "0f92b108-f0f9-419b-b829-c05f7542c5e9",
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model for every epoch:\n",
"---------------------\n",
"total 1.8G\n",
"-rw-r--r-- 1 root root 181M Feb 2 17:53 resnet_001.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 17:54 resnet_002.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 17:54 resnet_003.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 17:54 resnet_004.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 17:55 resnet_005.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 17:55 resnet_006.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 17:55 resnet_007.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 17:56 resnet_008.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 17:56 resnet_009.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 17:56 resnet_010.hdf5\n"
]
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"print('Model for every epoch:')\n",
"print('---------------------')\n",
"!ls -ltrh $LOCAL_EXPERIMENT_DIR/resnet50/weights"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "65461fd6-72d1-4365-9fca-c7d6cef0fce3",
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"eval_config {\n",
" eval_dataset_path: \"/workspace/tao-experiments/data/val\"\n",
" model_path: \"/workspace/tao-experiments/classification/resnet50/weights/resnet_010.hdf5\"\n",
" top_k: 1\n",
" batch_size: 32\n",
" n_workers: 8\n",
" enable_center_crop: False\n",
"}"
]
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# read the config file\n",
"!cat $LOCAL_SPECS_DIR/resnet50/eval_config.txt"
]
},
{
"cell_type": "markdown",
"id": "5100f372-8ce1-41e8-99f4-72bd8d30d611",
"metadata": {},
"source": [
"\n",
"### Combine Configuration Files and Evaluate Model ###"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "5975aa60-47aa-4aff-b344-9d706a972ca1",
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"model_config {\n",
" arch: \"resnet\"\n",
" n_layers: 50\n",
" freeze_blocks: 0\n",
" use_batch_norm: True\n",
" input_image_size: \"3,224,224\"\n",
"}train_config {\n",
" train_dataset_path: \"/workspace/tao-experiments/data/train\"\n",
" val_dataset_path: \"/workspace/tao-experiments/data/val\"\n",
" pretrained_model_path: \"/workspace/tao-experiments/classification/pretrained_resnet50/pretrained_classification_vresnet50/resnet_50.hdf5\"\n",
" optimizer {\n",
" sgd {\n",
" lr: 0.01\n",
" decay: 0.0\n",
" momentum: 0.9\n",
" nesterov: False\n",
" }\n",
" }\n",
" n_epochs: 10\n",
" batch_size_per_gpu: 32\n",
" n_workers: 8\n",
" enable_random_crop: False\n",
" enable_center_crop: False\n",
" enable_color_augmentation: False\n",
" preprocess_mode: \"caffe\"\n",
" reg_config {\n",
" type: \"L2\"\n",
" scope: \"Conv2D, Dense\"\n",
" weight_decay: 0.00005\n",
" }\n",
" lr_config {\n",
" step {\n",
" learning_rate: 0.006\n",
" step_size: 10\n",
" gamma: 0.1\n",
" }\n",
" }\n",
"}\n",
"eval_config {\n",
" eval_dataset_path: \"/workspace/tao-experiments/data/val\"\n",
" model_path: \"/workspace/tao-experiments/classification/resnet50/weights/resnet_010.hdf5\"\n",
" top_k: 1\n",
" batch_size: 32\n",
" n_workers: 8\n",
" enable_center_crop: False\n",
"}"
]
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# combining configuration components in separate files and writing into one\n",
"!cat $LOCAL_SPECS_DIR/resnet50/model_config.txt \\\n",
" $LOCAL_SPECS_DIR/resnet50/train_config.txt \\\n",
" $LOCAL_SPECS_DIR/resnet50/eval_config.txt \\\n",
" > $LOCAL_SPECS_DIR/resnet50/combined_config.txt\n",
"!cat $LOCAL_SPECS_DIR/resnet50/combined_config.txt"
]
},
{
"cell_type": "markdown",
"id": "3aa2509c-d095-4174-bd48-369068dae547",
"metadata": {},
"source": [
"We can evaluate the model with the `evaluate` subtask. "
]
},
{
"cell_type": "raw",
"id": "fefc75a1-ce72-4f4f-9f78-ef8035bbbe03",
"metadata": {},
"source": [
"tao model classification_tf1 evaluate [-h] -e \n",
" -k \n",
" [--gpus GPUS]\n",
" [--gpu_index GPU_INDEX]"
]
},
{
"cell_type": "markdown",
"id": "ddc9d887-c398-4a6d-8c5a-e2e5629782a7",
"metadata": {},
"source": [
"The `evaluate` subtask runs evaluation on the same validation set that was used during training. We can also run evaluation on an earlier model by editing the spec file to point to the intended model. When using the `evaluate` subtask, the `-e` argument indicates the path to the spec file and the `-k` argument indicates the key to _load_ the model. "
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "83adf120-92b2-48f6-8853-78b6c3bc2068",
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2026-02-02 17:57:17,379 [TAO Toolkit] [INFO] root 160: Registry: ['nvcr.io']\n",
"2026-02-02 17:57:17,467 [TAO Toolkit] [INFO] nvidia_tao_cli.components.instance_handler.local_instance 360: Running command in container: nvcr.io/nvidia/tao/tao-toolkit:5.0.0-tf1.15.5\n",
"2026-02-02 17:57:17,496 [TAO Toolkit] [INFO] nvidia_tao_cli.components.docker_handler.docker_handler 301: Printing tty value True\n",
"Using TensorFlow backend.\n",
"2026-02-02 17:57:18.606192: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudart.so.12\n",
"2026-02-02 17:57:18,663 [TAO Toolkit] [WARNING] tensorflow 40: Deprecation warnings have been disabled. Set TF_ENABLE_DEPRECATION_WARNINGS=1 to re-enable them.\n",
"2026-02-02 17:57:20,810 [TAO Toolkit] [WARNING] tensorflow 43: TensorFlow will not use sklearn by default. This improves performance in some cases. To enable sklearn export the environment variable TF_ALLOW_IOLIBS=1.\n",
"2026-02-02 17:57:20,924 [TAO Toolkit] [WARNING] tensorflow 42: TensorFlow will not use Dask by default. This improves performance in some cases. To enable Dask export the environment variable TF_ALLOW_IOLIBS=1.\n",
"2026-02-02 17:57:20,938 [TAO Toolkit] [WARNING] tensorflow 43: TensorFlow will not use Pandas by default. This improves performance in some cases. To enable Pandas export the environment variable TF_ALLOW_IOLIBS=1.\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:150: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_hue(img, max_delta=10.0):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:173: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_saturation(img, max_shift):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:183: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_contrast(img, center, max_contrast_scale):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:192: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_shift(x_img, shift_stddev):\n",
"2026-02-02 17:57:23.387569: I tensorflow/core/platform/profile_utils/cpu_utils.cc:109] CPU Frequency: 2499995000 Hz\n",
"2026-02-02 17:57:23.387915: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x93c0c50 initialized for platform Host (this does not guarantee that XLA will be used). Devices:\n",
"2026-02-02 17:57:23.387952: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version\n",
"2026-02-02 17:57:23.389402: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcuda.so.1\n",
"2026-02-02 17:57:23.577566: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 17:57:23.579528: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x91dc000 initialized for platform CUDA (this does not guarantee that XLA will be used). Devices:\n",
"2026-02-02 17:57:23.579561: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Tesla T4, Compute Capability 7.5\n",
"2026-02-02 17:57:23.579853: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 17:57:23.581634: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1674] Found device 0 with properties: \n",
"name: Tesla T4 major: 7 minor: 5 memoryClockRate(GHz): 1.59\n",
"pciBusID: 0000:00:1e.0\n",
"2026-02-02 17:57:23.581694: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudart.so.12\n",
"2026-02-02 17:57:23.581837: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcublas.so.12\n",
"2026-02-02 17:57:23.583975: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcufft.so.11\n",
"2026-02-02 17:57:23.584077: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcurand.so.10\n",
"2026-02-02 17:57:23.588389: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcusolver.so.11\n",
"2026-02-02 17:57:23.589527: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcusparse.so.12\n",
"2026-02-02 17:57:23.589610: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudnn.so.8\n",
"2026-02-02 17:57:23.589739: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 17:57:23.591576: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 17:57:23.593292: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1802] Adding visible gpu devices: 0\n",
"2026-02-02 17:57:23.593338: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudart.so.12\n",
"2026-02-02 17:57:23.602346: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1214] Device interconnect StreamExecutor with strength 1 edge matrix:\n",
"2026-02-02 17:57:23.602376: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1220] 0 \n",
"2026-02-02 17:57:23.602389: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1233] 0: N \n",
"2026-02-02 17:57:23.602579: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 17:57:23.604390: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 17:57:23.606128: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1359] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 13496 MB memory) -> physical GPU (device: 0, name: Tesla T4, pci bus id: 0000:00:1e.0, compute capability: 7.5)\n",
"Using TensorFlow backend.\n",
"WARNING:tensorflow:Deprecation warnings have been disabled. Set TF_ENABLE_DEPRECATION_WARNINGS=1 to re-enable them.\n",
"WARNING:tensorflow:TensorFlow will not use sklearn by default. This improves performance in some cases. To enable sklearn export the environment variable TF_ALLOW_IOLIBS=1.\n",
"WARNING: TensorFlow will not use sklearn by default. This improves performance in some cases. To enable sklearn export the environment variable TF_ALLOW_IOLIBS=1.\n",
"WARNING:tensorflow:TensorFlow will not use Dask by default. This improves performance in some cases. To enable Dask export the environment variable TF_ALLOW_IOLIBS=1.\n",
"WARNING: TensorFlow will not use Dask by default. This improves performance in some cases. To enable Dask export the environment variable TF_ALLOW_IOLIBS=1.\n",
"WARNING:tensorflow:TensorFlow will not use Pandas by default. This improves performance in some cases. To enable Pandas export the environment variable TF_ALLOW_IOLIBS=1.\n",
"WARNING: TensorFlow will not use Pandas by default. This improves performance in some cases. To enable Pandas export the environment variable TF_ALLOW_IOLIBS=1.\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:150: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_hue(img, max_delta=10.0):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:173: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_saturation(img, max_shift):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:183: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_contrast(img, center, max_contrast_scale):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:192: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_shift(x_img, shift_stddev):\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/evaluate.py:44: The name tf.ConfigProto is deprecated. Please use tf.compat.v1.ConfigProto instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/evaluate.py:44: The name tf.ConfigProto is deprecated. Please use tf.compat.v1.ConfigProto instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/evaluate.py:46: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/evaluate.py:46: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/evaluate.py:157: The name tf.logging.set_verbosity is deprecated. Please use tf.compat.v1.logging.set_verbosity instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/evaluate.py:157: The name tf.logging.set_verbosity is deprecated. Please use tf.compat.v1.logging.set_verbosity instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/evaluate.py:157: The name tf.logging.INFO is deprecated. Please use tf.compat.v1.logging.INFO instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/evaluate.py:157: The name tf.logging.INFO is deprecated. Please use tf.compat.v1.logging.INFO instead.\n",
"\n",
"INFO: Loading experiment spec at /workspace/tao-experiments/spec_files/resnet50/combined_config.txt.\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:245: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:245: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:1834: The name tf.nn.fused_batch_norm is deprecated. Please use tf.compat.v1.nn.fused_batch_norm instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:1834: The name tf.nn.fused_batch_norm is deprecated. Please use tf.compat.v1.nn.fused_batch_norm instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:133: The name tf.placeholder_with_default is deprecated. Please use tf.compat.v1.placeholder_with_default instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:133: The name tf.placeholder_with_default is deprecated. Please use tf.compat.v1.placeholder_with_default instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/third_party/keras/tensorflow_backend.py:199: The name tf.nn.avg_pool is deprecated. Please use tf.nn.avg_pool2d instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/third_party/keras/tensorflow_backend.py:199: The name tf.nn.avg_pool is deprecated. Please use tf.nn.avg_pool2d instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:174: The name tf.get_default_session is deprecated. Please use tf.compat.v1.get_default_session instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:174: The name tf.get_default_session is deprecated. Please use tf.compat.v1.get_default_session instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:190: The name tf.global_variables is deprecated. Please use tf.compat.v1.global_variables instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:190: The name tf.global_variables is deprecated. Please use tf.compat.v1.global_variables instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:199: The name tf.is_variable_initialized is deprecated. Please use tf.compat.v1.is_variable_initialized instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:199: The name tf.is_variable_initialized is deprecated. Please use tf.compat.v1.is_variable_initialized instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:206: The name tf.variables_initializer is deprecated. Please use tf.compat.v1.variables_initializer instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:206: The name tf.variables_initializer is deprecated. Please use tf.compat.v1.variables_initializer instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.\n",
"\n",
"__________________________________________________________________________________________________\n",
"Layer (type) Output Shape Param # Connected to \n",
"==================================================================================================\n",
"input_1 (InputLayer) (None, 3, 224, 224) 0 \n",
"__________________________________________________________________________________________________\n",
"conv1 (Conv2D) (None, 64, 112, 112) 9408 input_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"bn_conv1 (BatchNormalization) (None, 64, 112, 112) 256 conv1[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_1 (Activation) (None, 64, 112, 112) 0 bn_conv1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_1 (Conv2D) (None, 64, 56, 56) 4096 activation_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_1 (BatchNormalizati (None, 64, 56, 56) 256 block_1a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_relu_1 (Activation) (None, 64, 56, 56) 0 block_1a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_2 (Conv2D) (None, 64, 56, 56) 36864 block_1a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_2 (BatchNormalizati (None, 64, 56, 56) 256 block_1a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_relu_2 (Activation) (None, 64, 56, 56) 0 block_1a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_3 (Conv2D) (None, 256, 56, 56) 16384 block_1a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_shortcut (Conv2D) (None, 256, 56, 56) 16384 activation_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_3 (BatchNormalizati (None, 256, 56, 56) 1024 block_1a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_shortcut (BatchNorm (None, 256, 56, 56) 1024 block_1a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_1 (Add) (None, 256, 56, 56) 0 block_1a_bn_3[0][0] \n",
" block_1a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_relu (Activation) (None, 256, 56, 56) 0 add_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_conv_1 (Conv2D) (None, 64, 56, 56) 16384 block_1a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_bn_1 (BatchNormalizati (None, 64, 56, 56) 256 block_1b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_relu_1 (Activation) (None, 64, 56, 56) 0 block_1b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_conv_2 (Conv2D) (None, 64, 56, 56) 36864 block_1b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_bn_2 (BatchNormalizati (None, 64, 56, 56) 256 block_1b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_relu_2 (Activation) (None, 64, 56, 56) 0 block_1b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_conv_3 (Conv2D) (None, 256, 56, 56) 16384 block_1b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_bn_3 (BatchNormalizati (None, 256, 56, 56) 1024 block_1b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_2 (Add) (None, 256, 56, 56) 0 block_1b_bn_3[0][0] \n",
" block_1a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_relu (Activation) (None, 256, 56, 56) 0 add_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_conv_1 (Conv2D) (None, 64, 56, 56) 16384 block_1b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_bn_1 (BatchNormalizati (None, 64, 56, 56) 256 block_1c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_relu_1 (Activation) (None, 64, 56, 56) 0 block_1c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_conv_2 (Conv2D) (None, 64, 56, 56) 36864 block_1c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_bn_2 (BatchNormalizati (None, 64, 56, 56) 256 block_1c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_relu_2 (Activation) (None, 64, 56, 56) 0 block_1c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_conv_3 (Conv2D) (None, 256, 56, 56) 16384 block_1c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_bn_3 (BatchNormalizati (None, 256, 56, 56) 1024 block_1c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_3 (Add) (None, 256, 56, 56) 0 block_1c_bn_3[0][0] \n",
" block_1b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_relu (Activation) (None, 256, 56, 56) 0 add_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_1 (Conv2D) (None, 128, 28, 28) 32768 block_1c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_relu_1 (Activation) (None, 128, 28, 28) 0 block_2a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_relu_2 (Activation) (None, 128, 28, 28) 0 block_2a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_shortcut (Conv2D) (None, 512, 28, 28) 131072 block_1c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_shortcut (BatchNorm (None, 512, 28, 28) 2048 block_2a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_4 (Add) (None, 512, 28, 28) 0 block_2a_bn_3[0][0] \n",
" block_2a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_relu (Activation) (None, 512, 28, 28) 0 add_4[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_conv_1 (Conv2D) (None, 128, 28, 28) 65536 block_2a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_relu_1 (Activation) (None, 128, 28, 28) 0 block_2b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_relu_2 (Activation) (None, 128, 28, 28) 0 block_2b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_5 (Add) (None, 512, 28, 28) 0 block_2b_bn_3[0][0] \n",
" block_2a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_relu (Activation) (None, 512, 28, 28) 0 add_5[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_conv_1 (Conv2D) (None, 128, 28, 28) 65536 block_2b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_relu_1 (Activation) (None, 128, 28, 28) 0 block_2c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_relu_2 (Activation) (None, 128, 28, 28) 0 block_2c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_6 (Add) (None, 512, 28, 28) 0 block_2c_bn_3[0][0] \n",
" block_2b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_relu (Activation) (None, 512, 28, 28) 0 add_6[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_conv_1 (Conv2D) (None, 128, 28, 28) 65536 block_2c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2d_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_relu_1 (Activation) (None, 128, 28, 28) 0 block_2d_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2d_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2d_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_relu_2 (Activation) (None, 128, 28, 28) 0 block_2d_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2d_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2d_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_7 (Add) (None, 512, 28, 28) 0 block_2d_bn_3[0][0] \n",
" block_2c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_relu (Activation) (None, 512, 28, 28) 0 add_7[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_1 (Conv2D) (None, 256, 14, 14) 131072 block_2d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_relu_1 (Activation) (None, 256, 14, 14) 0 block_3a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_relu_2 (Activation) (None, 256, 14, 14) 0 block_3a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_shortcut (Conv2D) (None, 1024, 14, 14) 524288 block_2d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_shortcut (BatchNorm (None, 1024, 14, 14) 4096 block_3a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_8 (Add) (None, 1024, 14, 14) 0 block_3a_bn_3[0][0] \n",
" block_3a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_relu (Activation) (None, 1024, 14, 14) 0 add_8[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_relu_1 (Activation) (None, 256, 14, 14) 0 block_3b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_relu_2 (Activation) (None, 256, 14, 14) 0 block_3b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_9 (Add) (None, 1024, 14, 14) 0 block_3b_bn_3[0][0] \n",
" block_3a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_relu (Activation) (None, 1024, 14, 14) 0 add_9[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_relu_1 (Activation) (None, 256, 14, 14) 0 block_3c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_relu_2 (Activation) (None, 256, 14, 14) 0 block_3c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_10 (Add) (None, 1024, 14, 14) 0 block_3c_bn_3[0][0] \n",
" block_3b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_relu (Activation) (None, 1024, 14, 14) 0 add_10[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3d_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_relu_1 (Activation) (None, 256, 14, 14) 0 block_3d_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3d_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3d_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_relu_2 (Activation) (None, 256, 14, 14) 0 block_3d_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3d_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3d_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_11 (Add) (None, 1024, 14, 14) 0 block_3d_bn_3[0][0] \n",
" block_3c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_relu (Activation) (None, 1024, 14, 14) 0 add_11[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3e_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_relu_1 (Activation) (None, 256, 14, 14) 0 block_3e_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3e_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3e_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_relu_2 (Activation) (None, 256, 14, 14) 0 block_3e_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3e_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3e_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_12 (Add) (None, 1024, 14, 14) 0 block_3e_bn_3[0][0] \n",
" block_3d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_relu (Activation) (None, 1024, 14, 14) 0 add_12[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3e_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3f_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_relu_1 (Activation) (None, 256, 14, 14) 0 block_3f_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3f_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3f_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_relu_2 (Activation) (None, 256, 14, 14) 0 block_3f_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3f_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3f_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_13 (Add) (None, 1024, 14, 14) 0 block_3f_bn_3[0][0] \n",
" block_3e_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_relu (Activation) (None, 1024, 14, 14) 0 add_13[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_1 (Conv2D) (None, 512, 14, 14) 524288 block_3f_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_1 (BatchNormalizati (None, 512, 14, 14) 2048 block_4a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_relu_1 (Activation) (None, 512, 14, 14) 0 block_4a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_2 (Conv2D) (None, 512, 14, 14) 2359296 block_4a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_2 (BatchNormalizati (None, 512, 14, 14) 2048 block_4a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_relu_2 (Activation) (None, 512, 14, 14) 0 block_4a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_3 (Conv2D) (None, 2048, 14, 14) 1048576 block_4a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_shortcut (Conv2D) (None, 2048, 14, 14) 2097152 block_3f_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_3 (BatchNormalizati (None, 2048, 14, 14) 8192 block_4a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_shortcut (BatchNorm (None, 2048, 14, 14) 8192 block_4a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_14 (Add) (None, 2048, 14, 14) 0 block_4a_bn_3[0][0] \n",
" block_4a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_relu (Activation) (None, 2048, 14, 14) 0 add_14[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_conv_1 (Conv2D) (None, 512, 14, 14) 1048576 block_4a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_bn_1 (BatchNormalizati (None, 512, 14, 14) 2048 block_4b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_relu_1 (Activation) (None, 512, 14, 14) 0 block_4b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_conv_2 (Conv2D) (None, 512, 14, 14) 2359296 block_4b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_bn_2 (BatchNormalizati (None, 512, 14, 14) 2048 block_4b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_relu_2 (Activation) (None, 512, 14, 14) 0 block_4b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_conv_3 (Conv2D) (None, 2048, 14, 14) 1048576 block_4b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_bn_3 (BatchNormalizati (None, 2048, 14, 14) 8192 block_4b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_15 (Add) (None, 2048, 14, 14) 0 block_4b_bn_3[0][0] \n",
" block_4a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_relu (Activation) (None, 2048, 14, 14) 0 add_15[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_conv_1 (Conv2D) (None, 512, 14, 14) 1048576 block_4b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_bn_1 (BatchNormalizati (None, 512, 14, 14) 2048 block_4c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_relu_1 (Activation) (None, 512, 14, 14) 0 block_4c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_conv_2 (Conv2D) (None, 512, 14, 14) 2359296 block_4c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_bn_2 (BatchNormalizati (None, 512, 14, 14) 2048 block_4c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_relu_2 (Activation) (None, 512, 14, 14) 0 block_4c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_conv_3 (Conv2D) (None, 2048, 14, 14) 1048576 block_4c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_bn_3 (BatchNormalizati (None, 2048, 14, 14) 8192 block_4c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_16 (Add) (None, 2048, 14, 14) 0 block_4c_bn_3[0][0] \n",
" block_4b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_relu (Activation) (None, 2048, 14, 14) 0 add_16[0][0] \n",
"__________________________________________________________________________________________________\n",
"avg_pool (AveragePooling2D) (None, 2048, 1, 1) 0 block_4c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"flatten (Flatten) (None, 2048) 0 avg_pool[0][0] \n",
"__________________________________________________________________________________________________\n",
"predictions (Dense) (None, 2) 4098 flatten[0][0] \n",
"==================================================================================================\n",
"Total params: 23,565,250\n",
"Trainable params: 23,502,722\n",
"Non-trainable params: 62,528\n",
"__________________________________________________________________________________________________\n",
"Found 571 images belonging to 2 classes.\n",
"INFO: Processing dataset (evaluation): /workspace/tao-experiments/data/val\n",
"Evaluation Loss: 0.3445939733247206\n",
"Evaluation Top K accuracy: 0.9474605954465849\n",
"Found 571 images belonging to 2 classes.\n",
"INFO: Calculating per-class P/R and confusion matrix. It may take a while...\n",
"Confusion Matrix\n",
"[[ 0 30]\n",
" [ 0 541]]\n",
"Classification Report\n",
"/usr/local/lib/python3.8/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
" _warn_prf(average, modifier, msg_start, len(result))\n",
"/usr/local/lib/python3.8/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
" _warn_prf(average, modifier, msg_start, len(result))\n",
"/usr/local/lib/python3.8/dist-packages/sklearn/metrics/_classification.py:1344: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
" _warn_prf(average, modifier, msg_start, len(result))\n",
" precision recall f1-score support\n",
"\n",
" defect 0.00 0.00 0.00 30\n",
" notdefect 0.95 1.00 0.97 541\n",
"\n",
" accuracy 0.95 571\n",
" macro avg 0.47 0.50 0.49 571\n",
"weighted avg 0.90 0.95 0.92 571\n",
"\n",
"Telemetry data couldn't be sent, but the command ran successfully.\n",
"[WARNING]: \n",
"Execution status: PASS\n",
"2026-02-02 17:58:12,311 [TAO Toolkit] [INFO] nvidia_tao_cli.components.docker_handler.docker_handler 363: Stopping container.\n"
]
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# evaluate the model using the same validation set as training\n",
"!tao model classification_tf1 evaluate -e $TAO_SPECS_DIR/resnet50/combined_config.txt\\\n",
" -k $KEY"
]
},
{
"cell_type": "markdown",
"id": "6c5d4db0-7b8b-4e12-9f76-19ec2c42c4ed",
"metadata": {},
"source": [
"
\n",
"\n",
"The model that we've trained may not do very well with predicting `defect` yet. For this dataset, we have tested that allowing the model to train for at least **25 epochs** is a good starting point. In the following section, we're going to fine-tune the model to improve it's performance. "
]
},
{
"cell_type": "markdown",
"id": "b46c8022-246c-4039-ab95-c9e57b1b7ea9",
"metadata": {},
"source": [
"\n",
"## Model Tuning ##"
]
},
{
"cell_type": "markdown",
"id": "b177df96-712f-4370-bb9e-fccf4dfac59a",
"metadata": {},
"source": [
"\n",
"### Data Augmentation ###\n",
"Deep learning models require training with vast amounts of data to achieve accurate results. DALI can not only read images from disk and batch them into tensors, it can also perform various augmentations on those images to improve deep learning training results. [Data augmentation](https://en.wikipedia.org/wiki/Data_augmentation) artificially increases the size of a dataset by introducing random disturbances to the data, such as _geometric deformations_, _color transforms_, _noise addition_, and so on. These disturbances help produce models that are more robust in their predictions, avoid overfitting, and deliver better accuracy. We will use DALI to demonstrate data augmentation that we will introduce for model training, such as _cropping_, _resizing_, and _flipping_. "
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "6d39abb5-80a8-4a3b-857d-22fff953a269",
"metadata": {},
"outputs": [],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# import dependencies\n",
"from nvidia.dali.pipeline import Pipeline\n",
"from nvidia.dali import pipeline_def\n",
"import nvidia.dali.fn as fn\n",
"from PIL import Image\n",
"import warnings\n",
"\n",
"warnings.filterwarnings(\"ignore\")"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "eeb32fcb-12df-4fbf-92c7-2dbb0c8fe712",
"metadata": {},
"outputs": [],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"batch_size=8\n",
"defect_label_map={'notdefect': 1, 'defect': 0}\n",
"defect_inverse_map={v: k for k, v in defect_label_map.items()}\n",
"defect_train_df=capacitor_df[(capacitor_df['true_defect']=='defect') & (capacitor_df['dataset']=='train')]\n",
"n_iter=10\n",
"\n",
"@pipeline_def\n",
"def augmentation_pipeline():\n",
" # use fn.readers.file to read encoded images and labels from the hard drive\n",
" jpgs, labels=fn.readers.file(files=defect_train_df['defect_img_path'].to_list(), labels=defect_train_df['true_defect'].map(defect_label_map).to_list())\n",
" # use the fn.decoders.image operation to decode images from JPG to RGB\n",
" images=fn.decoders.image(jpgs, device='cpu')\n",
" # use the fn.rotate operation to rotate image\n",
" rotated_images = fn.rotate(images.gpu(), angle=90, fill_value=0)\n",
" return rotated_images, labels"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "7d4f932d-c24b-4915-8415-5750b996a1e3",
"metadata": {},
"outputs": [],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# define a function display images\n",
"def save_images(image_batch, label_batch, batch_count):\n",
" for idx in range(batch_size): \n",
" image_ary=np.array(image_batch[idx])\n",
" im=Image.fromarray(image_ary)\n",
" im.save(os.path.join(os.environ['LOCAL_DATA_DIR'], 'train', defect_inverse_map[np.array(labels[idx])[0]], 'augmented_'+str(batch_count)+'_'+str(idx))+'.jpg')"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "2716affc-5d9d-434e-9e0e-1c602e2d7ffd",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/usr/local/lib/python3.10/dist-packages/nvidia/dali/backend.py:83: Warning: nvidia-dali-cuda120 is no longer shipped with CUDA runtime. You need to install it separately. cuFFT is typically provided with CUDA Toolkit installation or an appropriate wheel. Please check https://docs.nvidia.com/cuda/cuda-quick-start-guide/index.html#pip-wheels-installation-linux for the reference.\n",
" deprecation_warning(\n",
"/usr/local/lib/python3.10/dist-packages/nvidia/dali/backend.py:94: Warning: nvidia-dali-cuda120 is no longer shipped with CUDA runtime. You need to install it separately. NPP is typically provided with CUDA Toolkit installation or an appropriate wheel. Please check https://docs.nvidia.com/cuda/cuda-quick-start-guide/index.html#pip-wheels-installation-linux for the reference.\n",
" deprecation_warning(\n",
"/usr/local/lib/python3.10/dist-packages/nvidia/dali/backend.py:105: Warning: nvidia-dali-cuda120 is no longer shipped with CUDA runtime. You need to install it separately. nvJPEG is typically provided with CUDA Toolkit installation or an appropriate wheel. Please check https://docs.nvidia.com/cuda/cuda-quick-start-guide/index.html#pip-wheels-installation-linux for the reference.\n",
" deprecation_warning(\n"
]
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# build pipeline\n",
"augmentation_pipe=augmentation_pipeline(batch_size=batch_size, num_threads=4, device_id=0)\n",
"augmentation_pipe.build()"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "99468976-7b46-458b-b411-b747e38f0109",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"It took 0.1 seconds to create 69 images.\n"
]
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# time the process\n",
"start=time.time()\n",
"\n",
"# iterate and create some augmented data\n",
"for iter in range(n_iter): \n",
" augmentation_pipe_output=augmentation_pipe.run()\n",
" augmented_images, labels=augmentation_pipe_output\n",
" save_images(augmented_images.as_cpu(), labels, iter)\n",
"\n",
"print('It took {} seconds to create {} images.'.format(round(time.time()-start, 2), len(defect_train_df)))"
]
},
{
"cell_type": "markdown",
"id": "14b4291e-b2ec-43f3-a767-8949f64c1ad9",
"metadata": {},
"source": [
"
\n",
"\n",
"DALI does not support moving the data from the GPU to the CPU within the pipeline. That is why a CPU operation cannot follow a GPU one. Since `augmentation_pipe_output` contains 2 TensorLists, but this time the first output, result of the `rotate` operation, is on the GPU. We cannot access contents of `TensorListGPU` directly from the CPU, so in order to show the results we need to copy it to the CPU by using `as_cpu` method."
]
},
{
"cell_type": "markdown",
"id": "2b0376da-56bf-4396-a156-2c8b7ecf8bfb",
"metadata": {},
"source": [
"\n",
"### Exercise #5 - Retrain Model ###\n",
"We will use the same configuration file to train a new model with the augmented dataset. \n",
"\n",
"**instructions**: \n",
"* Execute the below cell to train another model using the augmented dataset. Note the output directory is different than the model previously trained as `resnet50_aug`. \n",
"* Execute the cell below to view the model trained and familiarize with how it should be referenced. \n",
"* Modify the `eval_config`[(here)](tao_project/spec_files/resnet50/eval_config.txt) section of the training configuration file by changing the `model_path` to reference the newly trained model and **save changes**. \n",
"* Execute the cell below to create a new configuration file. \n",
"* Execute the cell below to evaluate the new model using the same validation set as before. "
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "3c67cfe2-4ccf-483c-9e42-6c0c32392168",
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2026-02-02 18:00:42,298 [TAO Toolkit] [INFO] root 160: Registry: ['nvcr.io']\n",
"2026-02-02 18:00:42,389 [TAO Toolkit] [INFO] nvidia_tao_cli.components.instance_handler.local_instance 360: Running command in container: nvcr.io/nvidia/tao/tao-toolkit:5.0.0-tf1.15.5\n",
"2026-02-02 18:00:42,399 [TAO Toolkit] [INFO] nvidia_tao_cli.components.docker_handler.docker_handler 301: Printing tty value True\n",
"Using TensorFlow backend.\n",
"2026-02-02 18:00:43.373965: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudart.so.12\n",
"2026-02-02 18:00:43,427 [TAO Toolkit] [WARNING] tensorflow 40: Deprecation warnings have been disabled. Set TF_ENABLE_DEPRECATION_WARNINGS=1 to re-enable them.\n",
"2026-02-02 18:00:44,579 [TAO Toolkit] [WARNING] tensorflow 43: TensorFlow will not use sklearn by default. This improves performance in some cases. To enable sklearn export the environment variable TF_ALLOW_IOLIBS=1.\n",
"2026-02-02 18:00:44,618 [TAO Toolkit] [WARNING] tensorflow 42: TensorFlow will not use Dask by default. This improves performance in some cases. To enable Dask export the environment variable TF_ALLOW_IOLIBS=1.\n",
"2026-02-02 18:00:44,622 [TAO Toolkit] [WARNING] tensorflow 43: TensorFlow will not use Pandas by default. This improves performance in some cases. To enable Pandas export the environment variable TF_ALLOW_IOLIBS=1.\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:150: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_hue(img, max_delta=10.0):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:173: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_saturation(img, max_shift):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:183: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_contrast(img, center, max_contrast_scale):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:192: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_shift(x_img, shift_stddev):\n",
"2026-02-02 18:00:46.511614: I tensorflow/core/platform/profile_utils/cpu_utils.cc:109] CPU Frequency: 2499995000 Hz\n",
"2026-02-02 18:00:46.511997: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x7a12010 initialized for platform Host (this does not guarantee that XLA will be used). Devices:\n",
"2026-02-02 18:00:46.512035: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version\n",
"2026-02-02 18:00:46.513408: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcuda.so.1\n",
"2026-02-02 18:00:46.743786: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:00:46.745582: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x782d3c0 initialized for platform CUDA (this does not guarantee that XLA will be used). Devices:\n",
"2026-02-02 18:00:46.745615: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Tesla T4, Compute Capability 7.5\n",
"2026-02-02 18:00:46.745933: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:00:46.747518: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1674] Found device 0 with properties: \n",
"name: Tesla T4 major: 7 minor: 5 memoryClockRate(GHz): 1.59\n",
"pciBusID: 0000:00:1e.0\n",
"2026-02-02 18:00:46.747581: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudart.so.12\n",
"2026-02-02 18:00:46.747700: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcublas.so.12\n",
"2026-02-02 18:00:46.749986: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcufft.so.11\n",
"2026-02-02 18:00:46.750107: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcurand.so.10\n",
"2026-02-02 18:00:46.753814: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcusolver.so.11\n",
"2026-02-02 18:00:46.754971: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcusparse.so.12\n",
"2026-02-02 18:00:46.755060: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudnn.so.8\n",
"2026-02-02 18:00:46.755189: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:00:46.756865: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:00:46.758413: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1802] Adding visible gpu devices: 0\n",
"2026-02-02 18:00:46.758464: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudart.so.12\n",
"2026-02-02 18:00:46.766874: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1214] Device interconnect StreamExecutor with strength 1 edge matrix:\n",
"2026-02-02 18:00:46.766904: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1220] 0 \n",
"2026-02-02 18:00:46.766920: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1233] 0: N \n",
"2026-02-02 18:00:46.767099: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:00:46.768737: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:00:46.770317: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1359] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 13332 MB memory) -> physical GPU (device: 0, name: Tesla T4, pci bus id: 0000:00:1e.0, compute capability: 7.5)\n",
"Using TensorFlow backend.\n",
"WARNING:tensorflow:Deprecation warnings have been disabled. Set TF_ENABLE_DEPRECATION_WARNINGS=1 to re-enable them.\n",
"WARNING:tensorflow:TensorFlow will not use sklearn by default. This improves performance in some cases. To enable sklearn export the environment variable TF_ALLOW_IOLIBS=1.\n",
"2026-02-02 18:00:48,282 [TAO Toolkit] [WARNING] tensorflow 43: TensorFlow will not use sklearn by default. This improves performance in some cases. To enable sklearn export the environment variable TF_ALLOW_IOLIBS=1.\n",
"WARNING:tensorflow:TensorFlow will not use Dask by default. This improves performance in some cases. To enable Dask export the environment variable TF_ALLOW_IOLIBS=1.\n",
"2026-02-02 18:00:48,324 [TAO Toolkit] [WARNING] tensorflow 42: TensorFlow will not use Dask by default. This improves performance in some cases. To enable Dask export the environment variable TF_ALLOW_IOLIBS=1.\n",
"WARNING:tensorflow:TensorFlow will not use Pandas by default. This improves performance in some cases. To enable Pandas export the environment variable TF_ALLOW_IOLIBS=1.\n",
"2026-02-02 18:00:48,328 [TAO Toolkit] [WARNING] tensorflow 43: TensorFlow will not use Pandas by default. This improves performance in some cases. To enable Pandas export the environment variable TF_ALLOW_IOLIBS=1.\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:150: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_hue(img, max_delta=10.0):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:173: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_saturation(img, max_shift):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:183: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_contrast(img, center, max_contrast_scale):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:192: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_shift(x_img, shift_stddev):\n",
"2026-02-02 18:00:49,508 [TAO Toolkit] [INFO] __main__ 388: Loading experiment spec at /workspace/tao-experiments/spec_files/resnet50/combined_config.txt.\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/train.py:398: The name tf.ConfigProto is deprecated. Please use tf.compat.v1.ConfigProto instead.\n",
"\n",
"2026-02-02 18:00:49,511 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/train.py:398: The name tf.ConfigProto is deprecated. Please use tf.compat.v1.ConfigProto instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/train.py:407: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.\n",
"\n",
"2026-02-02 18:00:49,511 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/train.py:407: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/train.py:431: The name tf.logging.set_verbosity is deprecated. Please use tf.compat.v1.logging.set_verbosity instead.\n",
"\n",
"2026-02-02 18:00:49,857 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/train.py:431: The name tf.logging.set_verbosity is deprecated. Please use tf.compat.v1.logging.set_verbosity instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/train.py:431: The name tf.logging.INFO is deprecated. Please use tf.compat.v1.logging.INFO instead.\n",
"\n",
"2026-02-02 18:00:49,857 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/train.py:431: The name tf.logging.INFO is deprecated. Please use tf.compat.v1.logging.INFO instead.\n",
"\n",
"2026-02-02 18:00:49,857 [TAO Toolkit] [INFO] __main__ 478: Default image mean [103.939, 116.779, 123.68] will be used.\n",
"Found 1412 images belonging to 2 classes.\n",
"2026-02-02 18:00:49,884 [TAO Toolkit] [INFO] __main__ 294: Processing dataset (train): /workspace/tao-experiments/data/train\n",
"Found 571 images belonging to 2 classes.\n",
"2026-02-02 18:00:49,894 [TAO Toolkit] [INFO] __main__ 311: Processing dataset (validation): /workspace/tao-experiments/data/val\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n",
"\n",
"2026-02-02 18:00:49,894 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n",
"\n",
"2026-02-02 18:00:49,895 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n",
"\n",
"2026-02-02 18:00:49,897 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:1834: The name tf.nn.fused_batch_norm is deprecated. Please use tf.compat.v1.nn.fused_batch_norm instead.\n",
"\n",
"2026-02-02 18:00:49,912 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:1834: The name tf.nn.fused_batch_norm is deprecated. Please use tf.compat.v1.nn.fused_batch_norm instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:133: The name tf.placeholder_with_default is deprecated. Please use tf.compat.v1.placeholder_with_default instead.\n",
"\n",
"2026-02-02 18:00:49,918 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:133: The name tf.placeholder_with_default is deprecated. Please use tf.compat.v1.placeholder_with_default instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/third_party/keras/tensorflow_backend.py:199: The name tf.nn.avg_pool is deprecated. Please use tf.nn.avg_pool2d instead.\n",
"\n",
"2026-02-02 18:00:51,469 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/third_party/keras/tensorflow_backend.py:199: The name tf.nn.avg_pool is deprecated. Please use tf.nn.avg_pool2d instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:174: The name tf.get_default_session is deprecated. Please use tf.compat.v1.get_default_session instead.\n",
"\n",
"2026-02-02 18:00:53,170 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:174: The name tf.get_default_session is deprecated. Please use tf.compat.v1.get_default_session instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:190: The name tf.global_variables is deprecated. Please use tf.compat.v1.global_variables instead.\n",
"\n",
"2026-02-02 18:00:53,170 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:190: The name tf.global_variables is deprecated. Please use tf.compat.v1.global_variables instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:199: The name tf.is_variable_initialized is deprecated. Please use tf.compat.v1.is_variable_initialized instead.\n",
"\n",
"2026-02-02 18:00:53,170 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:199: The name tf.is_variable_initialized is deprecated. Please use tf.compat.v1.is_variable_initialized instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:206: The name tf.variables_initializer is deprecated. Please use tf.compat.v1.variables_initializer instead.\n",
"\n",
"2026-02-02 18:00:54,256 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:206: The name tf.variables_initializer is deprecated. Please use tf.compat.v1.variables_initializer instead.\n",
"\n",
"__________________________________________________________________________________________________\n",
"Layer (type) Output Shape Param # Connected to \n",
"==================================================================================================\n",
"input_1 (InputLayer) (None, 3, 224, 224) 0 \n",
"__________________________________________________________________________________________________\n",
"conv1 (Conv2D) (None, 64, 112, 112) 9408 input_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"bn_conv1 (BatchNormalization) (None, 64, 112, 112) 256 conv1[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_1 (Activation) (None, 64, 112, 112) 0 bn_conv1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_1 (Conv2D) (None, 64, 56, 56) 4096 activation_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_1 (BatchNormalizati (None, 64, 56, 56) 256 block_1a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_relu_1 (Activation) (None, 64, 56, 56) 0 block_1a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_2 (Conv2D) (None, 64, 56, 56) 36864 block_1a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_2 (BatchNormalizati (None, 64, 56, 56) 256 block_1a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_relu_2 (Activation) (None, 64, 56, 56) 0 block_1a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_3 (Conv2D) (None, 256, 56, 56) 16384 block_1a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_shortcut (Conv2D) (None, 256, 56, 56) 16384 activation_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_3 (BatchNormalizati (None, 256, 56, 56) 1024 block_1a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_shortcut (BatchNorm (None, 256, 56, 56) 1024 block_1a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_1 (Add) (None, 256, 56, 56) 0 block_1a_bn_3[0][0] \n",
" block_1a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_relu (Activation) (None, 256, 56, 56) 0 add_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_conv_1 (Conv2D) (None, 64, 56, 56) 16384 block_1a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_bn_1 (BatchNormalizati (None, 64, 56, 56) 256 block_1b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_relu_1 (Activation) (None, 64, 56, 56) 0 block_1b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_conv_2 (Conv2D) (None, 64, 56, 56) 36864 block_1b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_bn_2 (BatchNormalizati (None, 64, 56, 56) 256 block_1b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_relu_2 (Activation) (None, 64, 56, 56) 0 block_1b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_conv_3 (Conv2D) (None, 256, 56, 56) 16384 block_1b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_bn_3 (BatchNormalizati (None, 256, 56, 56) 1024 block_1b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_2 (Add) (None, 256, 56, 56) 0 block_1b_bn_3[0][0] \n",
" block_1a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_relu (Activation) (None, 256, 56, 56) 0 add_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_conv_1 (Conv2D) (None, 64, 56, 56) 16384 block_1b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_bn_1 (BatchNormalizati (None, 64, 56, 56) 256 block_1c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_relu_1 (Activation) (None, 64, 56, 56) 0 block_1c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_conv_2 (Conv2D) (None, 64, 56, 56) 36864 block_1c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_bn_2 (BatchNormalizati (None, 64, 56, 56) 256 block_1c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_relu_2 (Activation) (None, 64, 56, 56) 0 block_1c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_conv_3 (Conv2D) (None, 256, 56, 56) 16384 block_1c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_bn_3 (BatchNormalizati (None, 256, 56, 56) 1024 block_1c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_3 (Add) (None, 256, 56, 56) 0 block_1c_bn_3[0][0] \n",
" block_1b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_relu (Activation) (None, 256, 56, 56) 0 add_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_1 (Conv2D) (None, 128, 28, 28) 32768 block_1c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_relu_1 (Activation) (None, 128, 28, 28) 0 block_2a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_relu_2 (Activation) (None, 128, 28, 28) 0 block_2a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_shortcut (Conv2D) (None, 512, 28, 28) 131072 block_1c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_shortcut (BatchNorm (None, 512, 28, 28) 2048 block_2a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_4 (Add) (None, 512, 28, 28) 0 block_2a_bn_3[0][0] \n",
" block_2a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_relu (Activation) (None, 512, 28, 28) 0 add_4[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_conv_1 (Conv2D) (None, 128, 28, 28) 65536 block_2a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_relu_1 (Activation) (None, 128, 28, 28) 0 block_2b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_relu_2 (Activation) (None, 128, 28, 28) 0 block_2b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_5 (Add) (None, 512, 28, 28) 0 block_2b_bn_3[0][0] \n",
" block_2a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_relu (Activation) (None, 512, 28, 28) 0 add_5[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_conv_1 (Conv2D) (None, 128, 28, 28) 65536 block_2b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_relu_1 (Activation) (None, 128, 28, 28) 0 block_2c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_relu_2 (Activation) (None, 128, 28, 28) 0 block_2c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_6 (Add) (None, 512, 28, 28) 0 block_2c_bn_3[0][0] \n",
" block_2b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_relu (Activation) (None, 512, 28, 28) 0 add_6[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_conv_1 (Conv2D) (None, 128, 28, 28) 65536 block_2c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2d_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_relu_1 (Activation) (None, 128, 28, 28) 0 block_2d_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2d_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2d_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_relu_2 (Activation) (None, 128, 28, 28) 0 block_2d_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2d_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2d_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_7 (Add) (None, 512, 28, 28) 0 block_2d_bn_3[0][0] \n",
" block_2c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_relu (Activation) (None, 512, 28, 28) 0 add_7[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_1 (Conv2D) (None, 256, 14, 14) 131072 block_2d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_relu_1 (Activation) (None, 256, 14, 14) 0 block_3a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_relu_2 (Activation) (None, 256, 14, 14) 0 block_3a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_shortcut (Conv2D) (None, 1024, 14, 14) 524288 block_2d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_shortcut (BatchNorm (None, 1024, 14, 14) 4096 block_3a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_8 (Add) (None, 1024, 14, 14) 0 block_3a_bn_3[0][0] \n",
" block_3a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_relu (Activation) (None, 1024, 14, 14) 0 add_8[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_relu_1 (Activation) (None, 256, 14, 14) 0 block_3b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_relu_2 (Activation) (None, 256, 14, 14) 0 block_3b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_9 (Add) (None, 1024, 14, 14) 0 block_3b_bn_3[0][0] \n",
" block_3a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_relu (Activation) (None, 1024, 14, 14) 0 add_9[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_relu_1 (Activation) (None, 256, 14, 14) 0 block_3c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_relu_2 (Activation) (None, 256, 14, 14) 0 block_3c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_10 (Add) (None, 1024, 14, 14) 0 block_3c_bn_3[0][0] \n",
" block_3b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_relu (Activation) (None, 1024, 14, 14) 0 add_10[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3d_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_relu_1 (Activation) (None, 256, 14, 14) 0 block_3d_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3d_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3d_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_relu_2 (Activation) (None, 256, 14, 14) 0 block_3d_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3d_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3d_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_11 (Add) (None, 1024, 14, 14) 0 block_3d_bn_3[0][0] \n",
" block_3c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_relu (Activation) (None, 1024, 14, 14) 0 add_11[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3e_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_relu_1 (Activation) (None, 256, 14, 14) 0 block_3e_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3e_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3e_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_relu_2 (Activation) (None, 256, 14, 14) 0 block_3e_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3e_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3e_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_12 (Add) (None, 1024, 14, 14) 0 block_3e_bn_3[0][0] \n",
" block_3d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_relu (Activation) (None, 1024, 14, 14) 0 add_12[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3e_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3f_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_relu_1 (Activation) (None, 256, 14, 14) 0 block_3f_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3f_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3f_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_relu_2 (Activation) (None, 256, 14, 14) 0 block_3f_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3f_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3f_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_13 (Add) (None, 1024, 14, 14) 0 block_3f_bn_3[0][0] \n",
" block_3e_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_relu (Activation) (None, 1024, 14, 14) 0 add_13[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_1 (Conv2D) (None, 512, 14, 14) 524288 block_3f_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_1 (BatchNormalizati (None, 512, 14, 14) 2048 block_4a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_relu_1 (Activation) (None, 512, 14, 14) 0 block_4a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_2 (Conv2D) (None, 512, 14, 14) 2359296 block_4a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_2 (BatchNormalizati (None, 512, 14, 14) 2048 block_4a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_relu_2 (Activation) (None, 512, 14, 14) 0 block_4a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_3 (Conv2D) (None, 2048, 14, 14) 1048576 block_4a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_shortcut (Conv2D) (None, 2048, 14, 14) 2097152 block_3f_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_3 (BatchNormalizati (None, 2048, 14, 14) 8192 block_4a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_shortcut (BatchNorm (None, 2048, 14, 14) 8192 block_4a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_14 (Add) (None, 2048, 14, 14) 0 block_4a_bn_3[0][0] \n",
" block_4a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_relu (Activation) (None, 2048, 14, 14) 0 add_14[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_conv_1 (Conv2D) (None, 512, 14, 14) 1048576 block_4a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_bn_1 (BatchNormalizati (None, 512, 14, 14) 2048 block_4b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_relu_1 (Activation) (None, 512, 14, 14) 0 block_4b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_conv_2 (Conv2D) (None, 512, 14, 14) 2359296 block_4b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_bn_2 (BatchNormalizati (None, 512, 14, 14) 2048 block_4b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_relu_2 (Activation) (None, 512, 14, 14) 0 block_4b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_conv_3 (Conv2D) (None, 2048, 14, 14) 1048576 block_4b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_bn_3 (BatchNormalizati (None, 2048, 14, 14) 8192 block_4b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_15 (Add) (None, 2048, 14, 14) 0 block_4b_bn_3[0][0] \n",
" block_4a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_relu (Activation) (None, 2048, 14, 14) 0 add_15[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_conv_1 (Conv2D) (None, 512, 14, 14) 1048576 block_4b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_bn_1 (BatchNormalizati (None, 512, 14, 14) 2048 block_4c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_relu_1 (Activation) (None, 512, 14, 14) 0 block_4c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_conv_2 (Conv2D) (None, 512, 14, 14) 2359296 block_4c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_bn_2 (BatchNormalizati (None, 512, 14, 14) 2048 block_4c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_relu_2 (Activation) (None, 512, 14, 14) 0 block_4c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_conv_3 (Conv2D) (None, 2048, 14, 14) 1048576 block_4c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_bn_3 (BatchNormalizati (None, 2048, 14, 14) 8192 block_4c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_16 (Add) (None, 2048, 14, 14) 0 block_4c_bn_3[0][0] \n",
" block_4b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_relu (Activation) (None, 2048, 14, 14) 0 add_16[0][0] \n",
"__________________________________________________________________________________________________\n",
"avg_pool (AveragePooling2D) (None, 2048, 1, 1) 0 block_4c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"flatten (Flatten) (None, 2048) 0 avg_pool[0][0] \n",
"__________________________________________________________________________________________________\n",
"predictions (Dense) (None, 2) 4098 flatten[0][0] \n",
"==================================================================================================\n",
"Total params: 23,565,250\n",
"Trainable params: 23,502,722\n",
"Non-trainable params: 62,528\n",
"__________________________________________________________________________________________________\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n",
"\n",
"2026-02-02 18:02:03,625 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.\n",
"\n",
"2026-02-02 18:02:03,637 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/common/utils.py:1133: The name tf.summary.FileWriter is deprecated. Please use tf.compat.v1.summary.FileWriter instead.\n",
"\n",
"2026-02-02 18:02:03,662 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/common/utils.py:1133: The name tf.summary.FileWriter is deprecated. Please use tf.compat.v1.summary.FileWriter instead.\n",
"\n",
"2026-02-02 18:02:03,662 [TAO Toolkit] [INFO] nvidia_tao_tf1.cv.common.logging.logging 197: Log file already exists at /workspace/tao-experiments/classification/resnet50_aug/status.json\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n",
"\n",
"2026-02-02 18:02:06,793 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:986: The name tf.assign_add is deprecated. Please use tf.compat.v1.assign_add instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:973: The name tf.assign is deprecated. Please use tf.compat.v1.assign instead.\n",
"\n",
"2026-02-02 18:02:07,119 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:973: The name tf.assign is deprecated. Please use tf.compat.v1.assign instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/common/utils.py:1181: The name tf.summary.merge_all is deprecated. Please use tf.compat.v1.summary.merge_all instead.\n",
"\n",
"2026-02-02 18:02:09,662 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/common/utils.py:1181: The name tf.summary.merge_all is deprecated. Please use tf.compat.v1.summary.merge_all instead.\n",
"\n",
"2026-02-02 18:02:11,465 [TAO Toolkit] [INFO] root 2102: Starting Training Loop.\n",
"Epoch 1/10\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/common/utils.py:199: The name tf.Summary is deprecated. Please use tf.compat.v1.Summary instead.\n",
"\n",
"2026-02-02 18:02:36,889 [TAO Toolkit] [WARNING] tensorflow 137: From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/common/utils.py:199: The name tf.Summary is deprecated. Please use tf.compat.v1.Summary instead.\n",
"\n",
"45/45 [==============================] - 55s 1s/step - loss: 0.4875 - acc: 0.8917 - val_loss: 0.3248 - val_acc: 0.9475\n",
"2026-02-02 18:03:21,206 [TAO Toolkit] [INFO] root 2102: Training loop in progress\n",
"Epoch 2/10\n",
"45/45 [==============================] - 20s 439ms/step - loss: 0.4047 - acc: 0.8870 - val_loss: 0.3209 - val_acc: 0.9475\n",
"2026-02-02 18:03:48,274 [TAO Toolkit] [INFO] root 2102: Training loop in progress\n",
"Epoch 3/10\n",
"45/45 [==============================] - 20s 440ms/step - loss: 0.3737 - acc: 0.8965 - val_loss: 0.3221 - val_acc: 0.9492\n",
"2026-02-02 18:04:09,479 [TAO Toolkit] [INFO] root 2102: Training loop in progress\n",
"Epoch 4/10\n",
"45/45 [==============================] - 20s 439ms/step - loss: 0.3694 - acc: 0.8965 - val_loss: 0.3208 - val_acc: 0.9475\n",
"2026-02-02 18:04:29,688 [TAO Toolkit] [INFO] root 2102: Training loop in progress\n",
"Epoch 5/10\n",
"45/45 [==============================] - 20s 440ms/step - loss: 0.3731 - acc: 0.8972 - val_loss: 0.3189 - val_acc: 0.9475\n",
"2026-02-02 18:04:49,965 [TAO Toolkit] [INFO] root 2102: Training loop in progress\n",
"Epoch 6/10\n",
"45/45 [==============================] - 20s 441ms/step - loss: 0.3704 - acc: 0.8972 - val_loss: 0.3198 - val_acc: 0.9475\n",
"2026-02-02 18:05:10,253 [TAO Toolkit] [INFO] root 2102: Training loop in progress\n",
"Epoch 7/10\n",
"45/45 [==============================] - 20s 440ms/step - loss: 0.3732 - acc: 0.8965 - val_loss: 0.3193 - val_acc: 0.9492\n",
"2026-02-02 18:05:30,523 [TAO Toolkit] [INFO] root 2102: Training loop in progress\n",
"Epoch 8/10\n",
"45/45 [==============================] - 20s 441ms/step - loss: 0.3788 - acc: 0.8917 - val_loss: 0.3214 - val_acc: 0.9492\n",
"2026-02-02 18:05:50,831 [TAO Toolkit] [INFO] root 2102: Training loop in progress\n",
"Epoch 9/10\n",
"45/45 [==============================] - 20s 441ms/step - loss: 0.3732 - acc: 0.8965 - val_loss: 0.3227 - val_acc: 0.9492\n",
"2026-02-02 18:06:11,157 [TAO Toolkit] [INFO] root 2102: Training loop in progress\n",
"Epoch 10/10\n",
"45/45 [==============================] - 20s 441ms/step - loss: 0.3706 - acc: 0.8965 - val_loss: 0.3196 - val_acc: 0.9492\n",
"2026-02-02 18:06:31,447 [TAO Toolkit] [INFO] root 2102: Training loop in progress\n",
"2026-02-02 18:06:31,463 [TAO Toolkit] [INFO] root 2102: Training loop complete.\n",
"2026-02-02 18:06:31,479 [TAO Toolkit] [INFO] root 2102: Final model evaluation in progress.\n",
"2026-02-02 18:06:35,330 [TAO Toolkit] [INFO] root 2102: Model evaluation is complete.\n",
"2026-02-02 18:06:35,330 [TAO Toolkit] [INFO] __main__ 625: Total Val Loss: 0.3195776343345642\n",
"2026-02-02 18:06:35,330 [TAO Toolkit] [INFO] __main__ 626: Total Val accuracy: 0.9492118954658508\n",
"2026-02-02 18:06:35,330 [TAO Toolkit] [INFO] root 2102: Training finished successfully.\n",
"2026-02-02 18:06:35,330 [TAO Toolkit] [INFO] __main__ 651: Training finished successfully.\n",
"Telemetry data couldn't be sent, but the command ran successfully.\n",
"[WARNING]: \n",
"Execution status: PASS\n",
"2026-02-02 18:06:57,416 [TAO Toolkit] [INFO] nvidia_tao_cli.components.docker_handler.docker_handler 363: Stopping container.\n"
]
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# train model\n",
"!tao model classification_tf1 train -e $TAO_SPECS_DIR/resnet50/combined_config.txt \\\n",
" -r $TAO_EXPERIMENT_DIR/resnet50_aug \\\n",
" -k $KEY"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "44bccbb3-727b-4f37-9754-0256f7c8b477",
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model for every epoch:\n",
"---------------------\n",
"total 1.8G\n",
"-rw-r--r-- 1 root root 181M Feb 2 18:03 resnet_001.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 18:03 resnet_002.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 18:04 resnet_003.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 18:04 resnet_004.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 18:04 resnet_005.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 18:05 resnet_006.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 18:05 resnet_007.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 18:05 resnet_008.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 18:06 resnet_009.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 18:06 resnet_010.hdf5\n"
]
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"print('Model for every epoch:')\n",
"print('---------------------')\n",
"!ls -ltrh $LOCAL_EXPERIMENT_DIR/resnet50_aug/weights"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "9bac1372-7232-4fdf-86a7-cfc0c3ad2425",
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"eval_config {\n",
" eval_dataset_path: \"/workspace/tao-experiments/data/val\"\n",
" model_path: \"/workspace/tao-experiments/classification/resnet50_aug/weights/resnet_010.hdf5\"\n",
" top_k: 1\n",
" batch_size: 32\n",
" n_workers: 8\n",
" enable_center_crop: False\n",
"}"
]
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# read the config file\n",
"!cat $LOCAL_SPECS_DIR/resnet50/eval_config.txt"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "6e01f679-513a-4761-b287-902960deaf8e",
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"model_config {\n",
" arch: \"resnet\"\n",
" n_layers: 50\n",
" freeze_blocks: 0\n",
" use_batch_norm: True\n",
" input_image_size: \"3,224,224\"\n",
"}train_config {\n",
" train_dataset_path: \"/workspace/tao-experiments/data/train\"\n",
" val_dataset_path: \"/workspace/tao-experiments/data/val\"\n",
" pretrained_model_path: \"/workspace/tao-experiments/classification/pretrained_resnet50/pretrained_classification_vresnet50/resnet_50.hdf5\"\n",
" optimizer {\n",
" sgd {\n",
" lr: 0.01\n",
" decay: 0.0\n",
" momentum: 0.9\n",
" nesterov: False\n",
" }\n",
" }\n",
" n_epochs: 10\n",
" batch_size_per_gpu: 32\n",
" n_workers: 8\n",
" enable_random_crop: False\n",
" enable_center_crop: False\n",
" enable_color_augmentation: False\n",
" preprocess_mode: \"caffe\"\n",
" reg_config {\n",
" type: \"L2\"\n",
" scope: \"Conv2D, Dense\"\n",
" weight_decay: 0.00005\n",
" }\n",
" lr_config {\n",
" step {\n",
" learning_rate: 0.006\n",
" step_size: 10\n",
" gamma: 0.1\n",
" }\n",
" }\n",
"}\n",
"eval_config {\n",
" eval_dataset_path: \"/workspace/tao-experiments/data/val\"\n",
" model_path: \"/workspace/tao-experiments/classification/resnet50_aug/weights/resnet_010.hdf5\"\n",
" top_k: 1\n",
" batch_size: 32\n",
" n_workers: 8\n",
" enable_center_crop: False\n",
"}"
]
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# combining configuration components in separate files and writing into one\n",
"!cat $LOCAL_SPECS_DIR/resnet50/model_config.txt \\\n",
" $LOCAL_SPECS_DIR/resnet50/train_config.txt \\\n",
" $LOCAL_SPECS_DIR/resnet50/eval_config.txt \\\n",
" > $LOCAL_SPECS_DIR/resnet50/combined_config_aug.txt\n",
"!cat $LOCAL_SPECS_DIR/resnet50/combined_config_aug.txt"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "78e54c5f-524a-47a0-9858-315e4916066e",
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2026-02-02 18:06:58,613 [TAO Toolkit] [INFO] root 160: Registry: ['nvcr.io']\n",
"2026-02-02 18:06:58,703 [TAO Toolkit] [INFO] nvidia_tao_cli.components.instance_handler.local_instance 360: Running command in container: nvcr.io/nvidia/tao/tao-toolkit:5.0.0-tf1.15.5\n",
"2026-02-02 18:06:58,714 [TAO Toolkit] [INFO] nvidia_tao_cli.components.docker_handler.docker_handler 301: Printing tty value True\n",
"Using TensorFlow backend.\n",
"2026-02-02 18:07:00.071444: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudart.so.12\n",
"2026-02-02 18:07:00,144 [TAO Toolkit] [WARNING] tensorflow 40: Deprecation warnings have been disabled. Set TF_ENABLE_DEPRECATION_WARNINGS=1 to re-enable them.\n",
"2026-02-02 18:07:02,421 [TAO Toolkit] [WARNING] tensorflow 43: TensorFlow will not use sklearn by default. This improves performance in some cases. To enable sklearn export the environment variable TF_ALLOW_IOLIBS=1.\n",
"2026-02-02 18:07:02,542 [TAO Toolkit] [WARNING] tensorflow 42: TensorFlow will not use Dask by default. This improves performance in some cases. To enable Dask export the environment variable TF_ALLOW_IOLIBS=1.\n",
"2026-02-02 18:07:02,556 [TAO Toolkit] [WARNING] tensorflow 43: TensorFlow will not use Pandas by default. This improves performance in some cases. To enable Pandas export the environment variable TF_ALLOW_IOLIBS=1.\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:150: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_hue(img, max_delta=10.0):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:173: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_saturation(img, max_shift):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:183: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_contrast(img, center, max_contrast_scale):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:192: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_shift(x_img, shift_stddev):\n",
"2026-02-02 18:07:05.039490: I tensorflow/core/platform/profile_utils/cpu_utils.cc:109] CPU Frequency: 2499995000 Hz\n",
"2026-02-02 18:07:05.039927: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x95b8a40 initialized for platform Host (this does not guarantee that XLA will be used). Devices:\n",
"2026-02-02 18:07:05.039957: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version\n",
"2026-02-02 18:07:05.041294: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcuda.so.1\n",
"2026-02-02 18:07:05.245009: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:07:05.247011: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x93d3df0 initialized for platform CUDA (this does not guarantee that XLA will be used). Devices:\n",
"2026-02-02 18:07:05.247044: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Tesla T4, Compute Capability 7.5\n",
"2026-02-02 18:07:05.247341: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:07:05.249178: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1674] Found device 0 with properties: \n",
"name: Tesla T4 major: 7 minor: 5 memoryClockRate(GHz): 1.59\n",
"pciBusID: 0000:00:1e.0\n",
"2026-02-02 18:07:05.249238: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudart.so.12\n",
"2026-02-02 18:07:05.249377: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcublas.so.12\n",
"2026-02-02 18:07:05.251536: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcufft.so.11\n",
"2026-02-02 18:07:05.251652: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcurand.so.10\n",
"2026-02-02 18:07:05.255213: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcusolver.so.11\n",
"2026-02-02 18:07:05.256388: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcusparse.so.12\n",
"2026-02-02 18:07:05.256473: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudnn.so.8\n",
"2026-02-02 18:07:05.256606: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:07:05.258503: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:07:05.260280: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1802] Adding visible gpu devices: 0\n",
"2026-02-02 18:07:05.260330: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudart.so.12\n",
"2026-02-02 18:07:05.268998: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1214] Device interconnect StreamExecutor with strength 1 edge matrix:\n",
"2026-02-02 18:07:05.269027: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1220] 0 \n",
"2026-02-02 18:07:05.269041: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1233] 0: N \n",
"2026-02-02 18:07:05.269207: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:07:05.271079: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:07:05.272915: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1359] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 13332 MB memory) -> physical GPU (device: 0, name: Tesla T4, pci bus id: 0000:00:1e.0, compute capability: 7.5)\n",
"Using TensorFlow backend.\n",
"WARNING:tensorflow:Deprecation warnings have been disabled. Set TF_ENABLE_DEPRECATION_WARNINGS=1 to re-enable them.\n",
"WARNING:tensorflow:TensorFlow will not use sklearn by default. This improves performance in some cases. To enable sklearn export the environment variable TF_ALLOW_IOLIBS=1.\n",
"WARNING: TensorFlow will not use sklearn by default. This improves performance in some cases. To enable sklearn export the environment variable TF_ALLOW_IOLIBS=1.\n",
"WARNING:tensorflow:TensorFlow will not use Dask by default. This improves performance in some cases. To enable Dask export the environment variable TF_ALLOW_IOLIBS=1.\n",
"WARNING: TensorFlow will not use Dask by default. This improves performance in some cases. To enable Dask export the environment variable TF_ALLOW_IOLIBS=1.\n",
"WARNING:tensorflow:TensorFlow will not use Pandas by default. This improves performance in some cases. To enable Pandas export the environment variable TF_ALLOW_IOLIBS=1.\n",
"WARNING: TensorFlow will not use Pandas by default. This improves performance in some cases. To enable Pandas export the environment variable TF_ALLOW_IOLIBS=1.\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:150: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_hue(img, max_delta=10.0):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:173: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_saturation(img, max_shift):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:183: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_contrast(img, center, max_contrast_scale):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:192: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_shift(x_img, shift_stddev):\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/evaluate.py:44: The name tf.ConfigProto is deprecated. Please use tf.compat.v1.ConfigProto instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/evaluate.py:44: The name tf.ConfigProto is deprecated. Please use tf.compat.v1.ConfigProto instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/evaluate.py:46: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/evaluate.py:46: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/evaluate.py:157: The name tf.logging.set_verbosity is deprecated. Please use tf.compat.v1.logging.set_verbosity instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/evaluate.py:157: The name tf.logging.set_verbosity is deprecated. Please use tf.compat.v1.logging.set_verbosity instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/evaluate.py:157: The name tf.logging.INFO is deprecated. Please use tf.compat.v1.logging.INFO instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/scripts/evaluate.py:157: The name tf.logging.INFO is deprecated. Please use tf.compat.v1.logging.INFO instead.\n",
"\n",
"INFO: Loading experiment spec at /workspace/tao-experiments/spec_files/resnet50/combined_config_aug.txt.\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:245: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:245: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:1834: The name tf.nn.fused_batch_norm is deprecated. Please use tf.compat.v1.nn.fused_batch_norm instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:1834: The name tf.nn.fused_batch_norm is deprecated. Please use tf.compat.v1.nn.fused_batch_norm instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:133: The name tf.placeholder_with_default is deprecated. Please use tf.compat.v1.placeholder_with_default instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:133: The name tf.placeholder_with_default is deprecated. Please use tf.compat.v1.placeholder_with_default instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/third_party/keras/tensorflow_backend.py:199: The name tf.nn.avg_pool is deprecated. Please use tf.nn.avg_pool2d instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/third_party/keras/tensorflow_backend.py:199: The name tf.nn.avg_pool is deprecated. Please use tf.nn.avg_pool2d instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:174: The name tf.get_default_session is deprecated. Please use tf.compat.v1.get_default_session instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:174: The name tf.get_default_session is deprecated. Please use tf.compat.v1.get_default_session instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:190: The name tf.global_variables is deprecated. Please use tf.compat.v1.global_variables instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:190: The name tf.global_variables is deprecated. Please use tf.compat.v1.global_variables instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:199: The name tf.is_variable_initialized is deprecated. Please use tf.compat.v1.is_variable_initialized instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:199: The name tf.is_variable_initialized is deprecated. Please use tf.compat.v1.is_variable_initialized instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:206: The name tf.variables_initializer is deprecated. Please use tf.compat.v1.variables_initializer instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:206: The name tf.variables_initializer is deprecated. Please use tf.compat.v1.variables_initializer instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.\n",
"\n",
"WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:3295: The name tf.log is deprecated. Please use tf.math.log instead.\n",
"\n",
"__________________________________________________________________________________________________\n",
"Layer (type) Output Shape Param # Connected to \n",
"==================================================================================================\n",
"input_1 (InputLayer) (None, 3, 224, 224) 0 \n",
"__________________________________________________________________________________________________\n",
"conv1 (Conv2D) (None, 64, 112, 112) 9408 input_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"bn_conv1 (BatchNormalization) (None, 64, 112, 112) 256 conv1[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_1 (Activation) (None, 64, 112, 112) 0 bn_conv1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_1 (Conv2D) (None, 64, 56, 56) 4096 activation_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_1 (BatchNormalizati (None, 64, 56, 56) 256 block_1a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_relu_1 (Activation) (None, 64, 56, 56) 0 block_1a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_2 (Conv2D) (None, 64, 56, 56) 36864 block_1a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_2 (BatchNormalizati (None, 64, 56, 56) 256 block_1a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_relu_2 (Activation) (None, 64, 56, 56) 0 block_1a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_3 (Conv2D) (None, 256, 56, 56) 16384 block_1a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_shortcut (Conv2D) (None, 256, 56, 56) 16384 activation_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_3 (BatchNormalizati (None, 256, 56, 56) 1024 block_1a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_shortcut (BatchNorm (None, 256, 56, 56) 1024 block_1a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_1 (Add) (None, 256, 56, 56) 0 block_1a_bn_3[0][0] \n",
" block_1a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_relu (Activation) (None, 256, 56, 56) 0 add_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_conv_1 (Conv2D) (None, 64, 56, 56) 16384 block_1a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_bn_1 (BatchNormalizati (None, 64, 56, 56) 256 block_1b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_relu_1 (Activation) (None, 64, 56, 56) 0 block_1b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_conv_2 (Conv2D) (None, 64, 56, 56) 36864 block_1b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_bn_2 (BatchNormalizati (None, 64, 56, 56) 256 block_1b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_relu_2 (Activation) (None, 64, 56, 56) 0 block_1b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_conv_3 (Conv2D) (None, 256, 56, 56) 16384 block_1b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_bn_3 (BatchNormalizati (None, 256, 56, 56) 1024 block_1b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_2 (Add) (None, 256, 56, 56) 0 block_1b_bn_3[0][0] \n",
" block_1a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_relu (Activation) (None, 256, 56, 56) 0 add_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_conv_1 (Conv2D) (None, 64, 56, 56) 16384 block_1b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_bn_1 (BatchNormalizati (None, 64, 56, 56) 256 block_1c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_relu_1 (Activation) (None, 64, 56, 56) 0 block_1c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_conv_2 (Conv2D) (None, 64, 56, 56) 36864 block_1c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_bn_2 (BatchNormalizati (None, 64, 56, 56) 256 block_1c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_relu_2 (Activation) (None, 64, 56, 56) 0 block_1c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_conv_3 (Conv2D) (None, 256, 56, 56) 16384 block_1c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_bn_3 (BatchNormalizati (None, 256, 56, 56) 1024 block_1c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_3 (Add) (None, 256, 56, 56) 0 block_1c_bn_3[0][0] \n",
" block_1b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_relu (Activation) (None, 256, 56, 56) 0 add_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_1 (Conv2D) (None, 128, 28, 28) 32768 block_1c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_relu_1 (Activation) (None, 128, 28, 28) 0 block_2a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_relu_2 (Activation) (None, 128, 28, 28) 0 block_2a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_shortcut (Conv2D) (None, 512, 28, 28) 131072 block_1c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_shortcut (BatchNorm (None, 512, 28, 28) 2048 block_2a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_4 (Add) (None, 512, 28, 28) 0 block_2a_bn_3[0][0] \n",
" block_2a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_relu (Activation) (None, 512, 28, 28) 0 add_4[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_conv_1 (Conv2D) (None, 128, 28, 28) 65536 block_2a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_relu_1 (Activation) (None, 128, 28, 28) 0 block_2b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_relu_2 (Activation) (None, 128, 28, 28) 0 block_2b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_5 (Add) (None, 512, 28, 28) 0 block_2b_bn_3[0][0] \n",
" block_2a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_relu (Activation) (None, 512, 28, 28) 0 add_5[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_conv_1 (Conv2D) (None, 128, 28, 28) 65536 block_2b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_relu_1 (Activation) (None, 128, 28, 28) 0 block_2c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_relu_2 (Activation) (None, 128, 28, 28) 0 block_2c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_6 (Add) (None, 512, 28, 28) 0 block_2c_bn_3[0][0] \n",
" block_2b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_relu (Activation) (None, 512, 28, 28) 0 add_6[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_conv_1 (Conv2D) (None, 128, 28, 28) 65536 block_2c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2d_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_relu_1 (Activation) (None, 128, 28, 28) 0 block_2d_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2d_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2d_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_relu_2 (Activation) (None, 128, 28, 28) 0 block_2d_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2d_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2d_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_7 (Add) (None, 512, 28, 28) 0 block_2d_bn_3[0][0] \n",
" block_2c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_relu (Activation) (None, 512, 28, 28) 0 add_7[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_1 (Conv2D) (None, 256, 14, 14) 131072 block_2d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_relu_1 (Activation) (None, 256, 14, 14) 0 block_3a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_relu_2 (Activation) (None, 256, 14, 14) 0 block_3a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_shortcut (Conv2D) (None, 1024, 14, 14) 524288 block_2d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_shortcut (BatchNorm (None, 1024, 14, 14) 4096 block_3a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_8 (Add) (None, 1024, 14, 14) 0 block_3a_bn_3[0][0] \n",
" block_3a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_relu (Activation) (None, 1024, 14, 14) 0 add_8[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_relu_1 (Activation) (None, 256, 14, 14) 0 block_3b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_relu_2 (Activation) (None, 256, 14, 14) 0 block_3b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_9 (Add) (None, 1024, 14, 14) 0 block_3b_bn_3[0][0] \n",
" block_3a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_relu (Activation) (None, 1024, 14, 14) 0 add_9[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_relu_1 (Activation) (None, 256, 14, 14) 0 block_3c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_relu_2 (Activation) (None, 256, 14, 14) 0 block_3c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_10 (Add) (None, 1024, 14, 14) 0 block_3c_bn_3[0][0] \n",
" block_3b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_relu (Activation) (None, 1024, 14, 14) 0 add_10[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3d_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_relu_1 (Activation) (None, 256, 14, 14) 0 block_3d_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3d_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3d_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_relu_2 (Activation) (None, 256, 14, 14) 0 block_3d_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3d_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3d_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_11 (Add) (None, 1024, 14, 14) 0 block_3d_bn_3[0][0] \n",
" block_3c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_relu (Activation) (None, 1024, 14, 14) 0 add_11[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3e_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_relu_1 (Activation) (None, 256, 14, 14) 0 block_3e_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3e_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3e_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_relu_2 (Activation) (None, 256, 14, 14) 0 block_3e_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3e_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3e_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_12 (Add) (None, 1024, 14, 14) 0 block_3e_bn_3[0][0] \n",
" block_3d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_relu (Activation) (None, 1024, 14, 14) 0 add_12[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3e_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3f_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_relu_1 (Activation) (None, 256, 14, 14) 0 block_3f_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3f_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3f_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_relu_2 (Activation) (None, 256, 14, 14) 0 block_3f_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3f_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3f_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_13 (Add) (None, 1024, 14, 14) 0 block_3f_bn_3[0][0] \n",
" block_3e_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_relu (Activation) (None, 1024, 14, 14) 0 add_13[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_1 (Conv2D) (None, 512, 14, 14) 524288 block_3f_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_1 (BatchNormalizati (None, 512, 14, 14) 2048 block_4a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_relu_1 (Activation) (None, 512, 14, 14) 0 block_4a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_2 (Conv2D) (None, 512, 14, 14) 2359296 block_4a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_2 (BatchNormalizati (None, 512, 14, 14) 2048 block_4a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_relu_2 (Activation) (None, 512, 14, 14) 0 block_4a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_3 (Conv2D) (None, 2048, 14, 14) 1048576 block_4a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_shortcut (Conv2D) (None, 2048, 14, 14) 2097152 block_3f_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_3 (BatchNormalizati (None, 2048, 14, 14) 8192 block_4a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_shortcut (BatchNorm (None, 2048, 14, 14) 8192 block_4a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_14 (Add) (None, 2048, 14, 14) 0 block_4a_bn_3[0][0] \n",
" block_4a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_relu (Activation) (None, 2048, 14, 14) 0 add_14[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_conv_1 (Conv2D) (None, 512, 14, 14) 1048576 block_4a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_bn_1 (BatchNormalizati (None, 512, 14, 14) 2048 block_4b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_relu_1 (Activation) (None, 512, 14, 14) 0 block_4b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_conv_2 (Conv2D) (None, 512, 14, 14) 2359296 block_4b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_bn_2 (BatchNormalizati (None, 512, 14, 14) 2048 block_4b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_relu_2 (Activation) (None, 512, 14, 14) 0 block_4b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_conv_3 (Conv2D) (None, 2048, 14, 14) 1048576 block_4b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_bn_3 (BatchNormalizati (None, 2048, 14, 14) 8192 block_4b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_15 (Add) (None, 2048, 14, 14) 0 block_4b_bn_3[0][0] \n",
" block_4a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_relu (Activation) (None, 2048, 14, 14) 0 add_15[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_conv_1 (Conv2D) (None, 512, 14, 14) 1048576 block_4b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_bn_1 (BatchNormalizati (None, 512, 14, 14) 2048 block_4c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_relu_1 (Activation) (None, 512, 14, 14) 0 block_4c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_conv_2 (Conv2D) (None, 512, 14, 14) 2359296 block_4c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_bn_2 (BatchNormalizati (None, 512, 14, 14) 2048 block_4c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_relu_2 (Activation) (None, 512, 14, 14) 0 block_4c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_conv_3 (Conv2D) (None, 2048, 14, 14) 1048576 block_4c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_bn_3 (BatchNormalizati (None, 2048, 14, 14) 8192 block_4c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_16 (Add) (None, 2048, 14, 14) 0 block_4c_bn_3[0][0] \n",
" block_4b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_relu (Activation) (None, 2048, 14, 14) 0 add_16[0][0] \n",
"__________________________________________________________________________________________________\n",
"avg_pool (AveragePooling2D) (None, 2048, 1, 1) 0 block_4c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"flatten (Flatten) (None, 2048) 0 avg_pool[0][0] \n",
"__________________________________________________________________________________________________\n",
"predictions (Dense) (None, 2) 4098 flatten[0][0] \n",
"==================================================================================================\n",
"Total params: 23,565,250\n",
"Trainable params: 23,502,722\n",
"Non-trainable params: 62,528\n",
"__________________________________________________________________________________________________\n",
"Found 571 images belonging to 2 classes.\n",
"INFO: Processing dataset (evaluation): /workspace/tao-experiments/data/val\n",
"Evaluation Loss: 0.31957761622352066\n",
"Evaluation Top K accuracy: 0.9492119089316988\n",
"Found 571 images belonging to 2 classes.\n",
"INFO: Calculating per-class P/R and confusion matrix. It may take a while...\n",
"Confusion Matrix\n",
"[[ 1 29]\n",
" [ 0 541]]\n",
"Classification Report\n",
" precision recall f1-score support\n",
"\n",
" defect 1.00 0.03 0.06 30\n",
" notdefect 0.95 1.00 0.97 541\n",
"\n",
" accuracy 0.95 571\n",
" macro avg 0.97 0.52 0.52 571\n",
"weighted avg 0.95 0.95 0.93 571\n",
"\n",
"Telemetry data couldn't be sent, but the command ran successfully.\n",
"[WARNING]: \n",
"Execution status: PASS\n",
"2026-02-02 18:07:53,833 [TAO Toolkit] [INFO] nvidia_tao_cli.components.docker_handler.docker_handler 363: Stopping container.\n"
]
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"# evaluate the model using the same validation set as training\n",
"!tao model classification_tf1 evaluate -e $TAO_SPECS_DIR/resnet50/combined_config_aug.txt\\\n",
" -k $KEY"
]
},
{
"cell_type": "markdown",
"id": "e3d60ff5-ef94-47ef-8ecf-550ff667836c",
"metadata": {},
"source": [
"\n",
"### Model Inference ###\n",
"The `inference` subtask for `classification_tf1` may be used to generate inference results on a directory of images. "
]
},
{
"cell_type": "raw",
"id": "dda361eb-96b0-4cde-9057-777445e4fca4",
"metadata": {
"tags": []
},
"source": [
"tao model classification_tf1 inference [-h] -e \n",
" -m \n",
" -d \n",
" -cm \n",
" -k \n",
" [-i IMAGE]\n",
" [--gpus GPUS]\n",
" [--gpu_index GPU_INDEX]"
]
},
{
"cell_type": "markdown",
"id": "0b31b270-0704-4e96-b835-b8eec824d8f1",
"metadata": {},
"source": [
"We will perform inference on non-defective images in `/workspace/tao-experiments/data/val/notdefect` as well as defective images in `/workspace/tao-experiments/data/val/defect`. When using the `inference` subtask, the `-e` argument indicates the path to the inference spec file, the `-m` argument indicates the path to the model file, the `-d` argument indicates the path to the images directory, the `-cm` argument indicates _json_ file that specifies the class index and label mapping, and the `-k` argument indicates the key to _load_ the model. "
]
},
{
"cell_type": "markdown",
"id": "4b20cef4-6e14-45ca-86d9-28158221492b",
"metadata": {},
"source": [
"\n",
"### Exercise #6 - Model Inference ###\n",
"\n",
"**instructions**: \n",
"* Execute the below cell to view the model trained and familiarize with how it should be referenced. \n",
"* Modify the `` only to reference the classification model and execute the cell below to perform model inference on non-defective images. \n",
"* Modify the `` only to reference the classification model and execute the cell below to perform model inference on defective images. "
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "48f89110-f2aa-4779-8b97-8c5f772607d1",
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model for every epoch:\n",
"---------------------\n",
"total 1.8G\n",
"-rw-r--r-- 1 root root 181M Feb 2 18:03 resnet_001.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 18:03 resnet_002.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 18:04 resnet_003.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 18:04 resnet_004.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 18:04 resnet_005.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 18:05 resnet_006.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 18:05 resnet_007.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 18:05 resnet_008.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 18:06 resnet_009.hdf5\n",
"-rw-r--r-- 1 root root 181M Feb 2 18:06 resnet_010.hdf5\n"
]
}
],
"source": [
"# DO NOT CHANGE THIS CELL\n",
"print('Model for every epoch:')\n",
"print('---------------------')\n",
"!ls -ltrh $LOCAL_EXPERIMENT_DIR/resnet50_aug/weights"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "0c546165-e664-4167-ac70-f6a1a3a4d3f6",
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2026-02-02 18:07:54,597 [TAO Toolkit] [INFO] root 160: Registry: ['nvcr.io']\n",
"2026-02-02 18:07:54,695 [TAO Toolkit] [INFO] nvidia_tao_cli.components.instance_handler.local_instance 360: Running command in container: nvcr.io/nvidia/tao/tao-toolkit:5.0.0-tf1.15.5\n",
"2026-02-02 18:07:54,706 [TAO Toolkit] [INFO] nvidia_tao_cli.components.docker_handler.docker_handler 301: Printing tty value True\n",
"Using TensorFlow backend.\n",
"2026-02-02 18:07:55.541032: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudart.so.12\n",
"2026-02-02 18:07:55,592 [TAO Toolkit] [WARNING] tensorflow 40: Deprecation warnings have been disabled. Set TF_ENABLE_DEPRECATION_WARNINGS=1 to re-enable them.\n",
"2026-02-02 18:07:56,669 [TAO Toolkit] [WARNING] tensorflow 43: TensorFlow will not use sklearn by default. This improves performance in some cases. To enable sklearn export the environment variable TF_ALLOW_IOLIBS=1.\n",
"2026-02-02 18:07:56,723 [TAO Toolkit] [WARNING] tensorflow 42: TensorFlow will not use Dask by default. This improves performance in some cases. To enable Dask export the environment variable TF_ALLOW_IOLIBS=1.\n",
"2026-02-02 18:07:56,729 [TAO Toolkit] [WARNING] tensorflow 43: TensorFlow will not use Pandas by default. This improves performance in some cases. To enable Pandas export the environment variable TF_ALLOW_IOLIBS=1.\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:150: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_hue(img, max_delta=10.0):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:173: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_saturation(img, max_shift):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:183: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_contrast(img, center, max_contrast_scale):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:192: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_shift(x_img, shift_stddev):\n",
"2026-02-02 18:07:58.621763: I tensorflow/core/platform/profile_utils/cpu_utils.cc:109] CPU Frequency: 2499995000 Hz\n",
"2026-02-02 18:07:58.622126: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x95b95d0 initialized for platform Host (this does not guarantee that XLA will be used). Devices:\n",
"2026-02-02 18:07:58.622161: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version\n",
"2026-02-02 18:07:58.623623: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcuda.so.1\n",
"2026-02-02 18:07:58.813704: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:07:58.815553: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x93d4980 initialized for platform CUDA (this does not guarantee that XLA will be used). Devices:\n",
"2026-02-02 18:07:58.815586: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Tesla T4, Compute Capability 7.5\n",
"2026-02-02 18:07:58.816004: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:07:58.817667: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1674] Found device 0 with properties: \n",
"name: Tesla T4 major: 7 minor: 5 memoryClockRate(GHz): 1.59\n",
"pciBusID: 0000:00:1e.0\n",
"2026-02-02 18:07:58.817724: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudart.so.12\n",
"2026-02-02 18:07:58.817834: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcublas.so.12\n",
"2026-02-02 18:07:58.820056: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcufft.so.11\n",
"2026-02-02 18:07:58.820163: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcurand.so.10\n",
"2026-02-02 18:07:58.823896: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcusolver.so.11\n",
"2026-02-02 18:07:58.825127: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcusparse.so.12\n",
"2026-02-02 18:07:58.825213: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudnn.so.8\n",
"2026-02-02 18:07:58.825365: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:07:58.827093: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:07:58.828761: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1802] Adding visible gpu devices: 0\n",
"2026-02-02 18:07:58.828819: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudart.so.12\n",
"2026-02-02 18:07:58.837512: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1214] Device interconnect StreamExecutor with strength 1 edge matrix:\n",
"2026-02-02 18:07:58.837542: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1220] 0 \n",
"2026-02-02 18:07:58.837558: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1233] 0: N \n",
"2026-02-02 18:07:58.837750: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:07:58.839503: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:07:58.841162: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1359] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 13332 MB memory) -> physical GPU (device: 0, name: Tesla T4, pci bus id: 0000:00:1e.0, compute capability: 7.5)\n",
"Using TensorFlow backend.\n",
"WARNING: Deprecation warnings have been disabled. Set TF_ENABLE_DEPRECATION_WARNINGS=1 to re-enable them.\n",
"WARNING: TensorFlow will not use sklearn by default. This improves performance in some cases. To enable sklearn export the environment variable TF_ALLOW_IOLIBS=1.\n",
"WARNING: TensorFlow will not use Dask by default. This improves performance in some cases. To enable Dask export the environment variable TF_ALLOW_IOLIBS=1.\n",
"WARNING: TensorFlow will not use Pandas by default. This improves performance in some cases. To enable Pandas export the environment variable TF_ALLOW_IOLIBS=1.\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:150: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_hue(img, max_delta=10.0):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:173: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_saturation(img, max_shift):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:183: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_contrast(img, center, max_contrast_scale):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:192: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_shift(x_img, shift_stddev):\n",
"INFO: Loading experiment spec at /workspace/tao-experiments/spec_files/resnet50/combined_config_aug.txt.\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:245: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:1834: The name tf.nn.fused_batch_norm is deprecated. Please use tf.compat.v1.nn.fused_batch_norm instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:133: The name tf.placeholder_with_default is deprecated. Please use tf.compat.v1.placeholder_with_default instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/third_party/keras/tensorflow_backend.py:199: The name tf.nn.avg_pool is deprecated. Please use tf.nn.avg_pool2d instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:174: The name tf.get_default_session is deprecated. Please use tf.compat.v1.get_default_session instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:181: The name tf.ConfigProto is deprecated. Please use tf.compat.v1.ConfigProto instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:186: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:190: The name tf.global_variables is deprecated. Please use tf.compat.v1.global_variables instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:199: The name tf.is_variable_initialized is deprecated. Please use tf.compat.v1.is_variable_initialized instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:206: The name tf.variables_initializer is deprecated. Please use tf.compat.v1.variables_initializer instead.\n",
"\n",
"__________________________________________________________________________________________________\n",
"Layer (type) Output Shape Param # Connected to \n",
"==================================================================================================\n",
"input_1 (InputLayer) (None, 3, 224, 224) 0 \n",
"__________________________________________________________________________________________________\n",
"conv1 (Conv2D) (None, 64, 112, 112) 9408 input_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"bn_conv1 (BatchNormalization) (None, 64, 112, 112) 256 conv1[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_1 (Activation) (None, 64, 112, 112) 0 bn_conv1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_1 (Conv2D) (None, 64, 56, 56) 4096 activation_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_1 (BatchNormalizati (None, 64, 56, 56) 256 block_1a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_relu_1 (Activation) (None, 64, 56, 56) 0 block_1a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_2 (Conv2D) (None, 64, 56, 56) 36864 block_1a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_2 (BatchNormalizati (None, 64, 56, 56) 256 block_1a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_relu_2 (Activation) (None, 64, 56, 56) 0 block_1a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_3 (Conv2D) (None, 256, 56, 56) 16384 block_1a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_shortcut (Conv2D) (None, 256, 56, 56) 16384 activation_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_3 (BatchNormalizati (None, 256, 56, 56) 1024 block_1a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_shortcut (BatchNorm (None, 256, 56, 56) 1024 block_1a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_1 (Add) (None, 256, 56, 56) 0 block_1a_bn_3[0][0] \n",
" block_1a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_relu (Activation) (None, 256, 56, 56) 0 add_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_conv_1 (Conv2D) (None, 64, 56, 56) 16384 block_1a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_bn_1 (BatchNormalizati (None, 64, 56, 56) 256 block_1b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_relu_1 (Activation) (None, 64, 56, 56) 0 block_1b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_conv_2 (Conv2D) (None, 64, 56, 56) 36864 block_1b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_bn_2 (BatchNormalizati (None, 64, 56, 56) 256 block_1b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_relu_2 (Activation) (None, 64, 56, 56) 0 block_1b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_conv_3 (Conv2D) (None, 256, 56, 56) 16384 block_1b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_bn_3 (BatchNormalizati (None, 256, 56, 56) 1024 block_1b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_2 (Add) (None, 256, 56, 56) 0 block_1b_bn_3[0][0] \n",
" block_1a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_relu (Activation) (None, 256, 56, 56) 0 add_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_conv_1 (Conv2D) (None, 64, 56, 56) 16384 block_1b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_bn_1 (BatchNormalizati (None, 64, 56, 56) 256 block_1c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_relu_1 (Activation) (None, 64, 56, 56) 0 block_1c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_conv_2 (Conv2D) (None, 64, 56, 56) 36864 block_1c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_bn_2 (BatchNormalizati (None, 64, 56, 56) 256 block_1c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_relu_2 (Activation) (None, 64, 56, 56) 0 block_1c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_conv_3 (Conv2D) (None, 256, 56, 56) 16384 block_1c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_bn_3 (BatchNormalizati (None, 256, 56, 56) 1024 block_1c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_3 (Add) (None, 256, 56, 56) 0 block_1c_bn_3[0][0] \n",
" block_1b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_relu (Activation) (None, 256, 56, 56) 0 add_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_1 (Conv2D) (None, 128, 28, 28) 32768 block_1c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_relu_1 (Activation) (None, 128, 28, 28) 0 block_2a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_relu_2 (Activation) (None, 128, 28, 28) 0 block_2a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_shortcut (Conv2D) (None, 512, 28, 28) 131072 block_1c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_shortcut (BatchNorm (None, 512, 28, 28) 2048 block_2a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_4 (Add) (None, 512, 28, 28) 0 block_2a_bn_3[0][0] \n",
" block_2a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_relu (Activation) (None, 512, 28, 28) 0 add_4[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_conv_1 (Conv2D) (None, 128, 28, 28) 65536 block_2a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_relu_1 (Activation) (None, 128, 28, 28) 0 block_2b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_relu_2 (Activation) (None, 128, 28, 28) 0 block_2b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_5 (Add) (None, 512, 28, 28) 0 block_2b_bn_3[0][0] \n",
" block_2a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_relu (Activation) (None, 512, 28, 28) 0 add_5[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_conv_1 (Conv2D) (None, 128, 28, 28) 65536 block_2b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_relu_1 (Activation) (None, 128, 28, 28) 0 block_2c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_relu_2 (Activation) (None, 128, 28, 28) 0 block_2c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_6 (Add) (None, 512, 28, 28) 0 block_2c_bn_3[0][0] \n",
" block_2b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_relu (Activation) (None, 512, 28, 28) 0 add_6[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_conv_1 (Conv2D) (None, 128, 28, 28) 65536 block_2c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2d_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_relu_1 (Activation) (None, 128, 28, 28) 0 block_2d_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2d_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2d_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_relu_2 (Activation) (None, 128, 28, 28) 0 block_2d_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2d_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2d_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_7 (Add) (None, 512, 28, 28) 0 block_2d_bn_3[0][0] \n",
" block_2c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_relu (Activation) (None, 512, 28, 28) 0 add_7[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_1 (Conv2D) (None, 256, 14, 14) 131072 block_2d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_relu_1 (Activation) (None, 256, 14, 14) 0 block_3a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_relu_2 (Activation) (None, 256, 14, 14) 0 block_3a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_shortcut (Conv2D) (None, 1024, 14, 14) 524288 block_2d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_shortcut (BatchNorm (None, 1024, 14, 14) 4096 block_3a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_8 (Add) (None, 1024, 14, 14) 0 block_3a_bn_3[0][0] \n",
" block_3a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_relu (Activation) (None, 1024, 14, 14) 0 add_8[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_relu_1 (Activation) (None, 256, 14, 14) 0 block_3b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_relu_2 (Activation) (None, 256, 14, 14) 0 block_3b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_9 (Add) (None, 1024, 14, 14) 0 block_3b_bn_3[0][0] \n",
" block_3a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_relu (Activation) (None, 1024, 14, 14) 0 add_9[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_relu_1 (Activation) (None, 256, 14, 14) 0 block_3c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_relu_2 (Activation) (None, 256, 14, 14) 0 block_3c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_10 (Add) (None, 1024, 14, 14) 0 block_3c_bn_3[0][0] \n",
" block_3b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_relu (Activation) (None, 1024, 14, 14) 0 add_10[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3d_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_relu_1 (Activation) (None, 256, 14, 14) 0 block_3d_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3d_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3d_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_relu_2 (Activation) (None, 256, 14, 14) 0 block_3d_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3d_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3d_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_11 (Add) (None, 1024, 14, 14) 0 block_3d_bn_3[0][0] \n",
" block_3c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_relu (Activation) (None, 1024, 14, 14) 0 add_11[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3e_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_relu_1 (Activation) (None, 256, 14, 14) 0 block_3e_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3e_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3e_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_relu_2 (Activation) (None, 256, 14, 14) 0 block_3e_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3e_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3e_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_12 (Add) (None, 1024, 14, 14) 0 block_3e_bn_3[0][0] \n",
" block_3d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_relu (Activation) (None, 1024, 14, 14) 0 add_12[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3e_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3f_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_relu_1 (Activation) (None, 256, 14, 14) 0 block_3f_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3f_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3f_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_relu_2 (Activation) (None, 256, 14, 14) 0 block_3f_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3f_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3f_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_13 (Add) (None, 1024, 14, 14) 0 block_3f_bn_3[0][0] \n",
" block_3e_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_relu (Activation) (None, 1024, 14, 14) 0 add_13[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_1 (Conv2D) (None, 512, 14, 14) 524288 block_3f_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_1 (BatchNormalizati (None, 512, 14, 14) 2048 block_4a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_relu_1 (Activation) (None, 512, 14, 14) 0 block_4a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_2 (Conv2D) (None, 512, 14, 14) 2359296 block_4a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_2 (BatchNormalizati (None, 512, 14, 14) 2048 block_4a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_relu_2 (Activation) (None, 512, 14, 14) 0 block_4a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_3 (Conv2D) (None, 2048, 14, 14) 1048576 block_4a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_shortcut (Conv2D) (None, 2048, 14, 14) 2097152 block_3f_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_3 (BatchNormalizati (None, 2048, 14, 14) 8192 block_4a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_shortcut (BatchNorm (None, 2048, 14, 14) 8192 block_4a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_14 (Add) (None, 2048, 14, 14) 0 block_4a_bn_3[0][0] \n",
" block_4a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_relu (Activation) (None, 2048, 14, 14) 0 add_14[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_conv_1 (Conv2D) (None, 512, 14, 14) 1048576 block_4a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_bn_1 (BatchNormalizati (None, 512, 14, 14) 2048 block_4b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_relu_1 (Activation) (None, 512, 14, 14) 0 block_4b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_conv_2 (Conv2D) (None, 512, 14, 14) 2359296 block_4b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_bn_2 (BatchNormalizati (None, 512, 14, 14) 2048 block_4b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_relu_2 (Activation) (None, 512, 14, 14) 0 block_4b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_conv_3 (Conv2D) (None, 2048, 14, 14) 1048576 block_4b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_bn_3 (BatchNormalizati (None, 2048, 14, 14) 8192 block_4b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_15 (Add) (None, 2048, 14, 14) 0 block_4b_bn_3[0][0] \n",
" block_4a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_relu (Activation) (None, 2048, 14, 14) 0 add_15[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_conv_1 (Conv2D) (None, 512, 14, 14) 1048576 block_4b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_bn_1 (BatchNormalizati (None, 512, 14, 14) 2048 block_4c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_relu_1 (Activation) (None, 512, 14, 14) 0 block_4c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_conv_2 (Conv2D) (None, 512, 14, 14) 2359296 block_4c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_bn_2 (BatchNormalizati (None, 512, 14, 14) 2048 block_4c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_relu_2 (Activation) (None, 512, 14, 14) 0 block_4c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_conv_3 (Conv2D) (None, 2048, 14, 14) 1048576 block_4c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_bn_3 (BatchNormalizati (None, 2048, 14, 14) 8192 block_4c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_16 (Add) (None, 2048, 14, 14) 0 block_4c_bn_3[0][0] \n",
" block_4b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_relu (Activation) (None, 2048, 14, 14) 0 add_16[0][0] \n",
"__________________________________________________________________________________________________\n",
"avg_pool (AveragePooling2D) (None, 2048, 1, 1) 0 block_4c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"flatten (Flatten) (None, 2048) 0 avg_pool[0][0] \n",
"__________________________________________________________________________________________________\n",
"predictions (Dense) (None, 2) 4098 flatten[0][0] \n",
"==================================================================================================\n",
"Total params: 23,565,250\n",
"Trainable params: 23,502,722\n",
"Non-trainable params: 62,528\n",
"__________________________________________________________________________________________________\n",
"INFO: Processing /workspace/tao-experiments/data/val/notdefect...\n",
"INFO: Inference complete. Result is saved at /workspace/tao-experiments/data/val/notdefect/result.csv\n",
"Telemetry data couldn't be sent, but the command ran successfully.\n",
"[WARNING]: \n",
"Execution status: PASS\n",
"2026-02-02 18:08:41,020 [TAO Toolkit] [INFO] nvidia_tao_cli.components.docker_handler.docker_handler 363: Stopping container.\n"
]
}
],
"source": [
"!tao model classification_tf1 inference -m $TAO_EXPERIMENT_DIR/resnet50_aug/weights/resnet_010.hdf5 \\\n",
" -d $TAO_DATA_DIR/val/notdefect \\\n",
" -e $TAO_SPECS_DIR/resnet50/combined_config_aug.txt \\\n",
" -cm $TAO_EXPERIMENT_DIR/resnet50/classmap.json \\\n",
" -k $KEY"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "72eead30-22b2-4c9a-ab08-fe32dcf39f4d",
"metadata": {
"scrolled": true,
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2026-02-02 18:08:41,661 [TAO Toolkit] [INFO] root 160: Registry: ['nvcr.io']\n",
"2026-02-02 18:08:41,759 [TAO Toolkit] [INFO] nvidia_tao_cli.components.instance_handler.local_instance 360: Running command in container: nvcr.io/nvidia/tao/tao-toolkit:5.0.0-tf1.15.5\n",
"2026-02-02 18:08:41,769 [TAO Toolkit] [INFO] nvidia_tao_cli.components.docker_handler.docker_handler 301: Printing tty value True\n",
"Using TensorFlow backend.\n",
"2026-02-02 18:08:42.583043: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudart.so.12\n",
"2026-02-02 18:08:42,633 [TAO Toolkit] [WARNING] tensorflow 40: Deprecation warnings have been disabled. Set TF_ENABLE_DEPRECATION_WARNINGS=1 to re-enable them.\n",
"2026-02-02 18:08:43,687 [TAO Toolkit] [WARNING] tensorflow 43: TensorFlow will not use sklearn by default. This improves performance in some cases. To enable sklearn export the environment variable TF_ALLOW_IOLIBS=1.\n",
"2026-02-02 18:08:43,726 [TAO Toolkit] [WARNING] tensorflow 42: TensorFlow will not use Dask by default. This improves performance in some cases. To enable Dask export the environment variable TF_ALLOW_IOLIBS=1.\n",
"2026-02-02 18:08:43,730 [TAO Toolkit] [WARNING] tensorflow 43: TensorFlow will not use Pandas by default. This improves performance in some cases. To enable Pandas export the environment variable TF_ALLOW_IOLIBS=1.\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:150: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_hue(img, max_delta=10.0):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:173: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_saturation(img, max_shift):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:183: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_contrast(img, center, max_contrast_scale):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:192: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_shift(x_img, shift_stddev):\n",
"2026-02-02 18:08:45.576545: I tensorflow/core/platform/profile_utils/cpu_utils.cc:109] CPU Frequency: 2499995000 Hz\n",
"2026-02-02 18:08:45.576871: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x89611f0 initialized for platform Host (this does not guarantee that XLA will be used). Devices:\n",
"2026-02-02 18:08:45.576909: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version\n",
"2026-02-02 18:08:45.578438: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcuda.so.1\n",
"2026-02-02 18:08:45.767218: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:08:45.769077: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x845a5f0 initialized for platform CUDA (this does not guarantee that XLA will be used). Devices:\n",
"2026-02-02 18:08:45.769109: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Tesla T4, Compute Capability 7.5\n",
"2026-02-02 18:08:45.769432: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:08:45.771099: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1674] Found device 0 with properties: \n",
"name: Tesla T4 major: 7 minor: 5 memoryClockRate(GHz): 1.59\n",
"pciBusID: 0000:00:1e.0\n",
"2026-02-02 18:08:45.771162: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudart.so.12\n",
"2026-02-02 18:08:45.771298: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcublas.so.12\n",
"2026-02-02 18:08:45.773723: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcufft.so.11\n",
"2026-02-02 18:08:45.773813: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcurand.so.10\n",
"2026-02-02 18:08:45.777511: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcusolver.so.11\n",
"2026-02-02 18:08:45.778693: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcusparse.so.12\n",
"2026-02-02 18:08:45.778768: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudnn.so.8\n",
"2026-02-02 18:08:45.778899: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:08:45.780616: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:08:45.782230: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1802] Adding visible gpu devices: 0\n",
"2026-02-02 18:08:45.782284: I tensorflow/stream_executor/platform/default/dso_loader.cc:50] Successfully opened dynamic library libcudart.so.12\n",
"2026-02-02 18:08:45.790783: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1214] Device interconnect StreamExecutor with strength 1 edge matrix:\n",
"2026-02-02 18:08:45.790815: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1220] 0 \n",
"2026-02-02 18:08:45.790829: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1233] 0: N \n",
"2026-02-02 18:08:45.791040: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:08:45.792766: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1082] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2026-02-02 18:08:45.794401: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1359] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 13332 MB memory) -> physical GPU (device: 0, name: Tesla T4, pci bus id: 0000:00:1e.0, compute capability: 7.5)\n",
"Using TensorFlow backend.\n",
"WARNING: Deprecation warnings have been disabled. Set TF_ENABLE_DEPRECATION_WARNINGS=1 to re-enable them.\n",
"WARNING: TensorFlow will not use sklearn by default. This improves performance in some cases. To enable sklearn export the environment variable TF_ALLOW_IOLIBS=1.\n",
"WARNING: TensorFlow will not use Dask by default. This improves performance in some cases. To enable Dask export the environment variable TF_ALLOW_IOLIBS=1.\n",
"WARNING: TensorFlow will not use Pandas by default. This improves performance in some cases. To enable Pandas export the environment variable TF_ALLOW_IOLIBS=1.\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:150: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_hue(img, max_delta=10.0):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:173: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_saturation(img, max_shift):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:183: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_contrast(img, center, max_contrast_scale):\n",
"/usr/local/lib/python3.8/dist-packages/nvidia_tao_tf1/cv/makenet/utils/helper.py:192: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.\n",
" def random_shift(x_img, shift_stddev):\n",
"INFO: Loading experiment spec at /workspace/tao-experiments/spec_files/resnet50/combined_config_aug.txt.\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:245: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:1834: The name tf.nn.fused_batch_norm is deprecated. Please use tf.compat.v1.nn.fused_batch_norm instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:133: The name tf.placeholder_with_default is deprecated. Please use tf.compat.v1.placeholder_with_default instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/third_party/keras/tensorflow_backend.py:199: The name tf.nn.avg_pool is deprecated. Please use tf.nn.avg_pool2d instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:174: The name tf.get_default_session is deprecated. Please use tf.compat.v1.get_default_session instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:181: The name tf.ConfigProto is deprecated. Please use tf.compat.v1.ConfigProto instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:186: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:190: The name tf.global_variables is deprecated. Please use tf.compat.v1.global_variables instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:199: The name tf.is_variable_initialized is deprecated. Please use tf.compat.v1.is_variable_initialized instead.\n",
"\n",
"WARNING: From /usr/local/lib/python3.8/dist-packages/keras/backend/tensorflow_backend.py:206: The name tf.variables_initializer is deprecated. Please use tf.compat.v1.variables_initializer instead.\n",
"\n",
"__________________________________________________________________________________________________\n",
"Layer (type) Output Shape Param # Connected to \n",
"==================================================================================================\n",
"input_1 (InputLayer) (None, 3, 224, 224) 0 \n",
"__________________________________________________________________________________________________\n",
"conv1 (Conv2D) (None, 64, 112, 112) 9408 input_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"bn_conv1 (BatchNormalization) (None, 64, 112, 112) 256 conv1[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_1 (Activation) (None, 64, 112, 112) 0 bn_conv1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_1 (Conv2D) (None, 64, 56, 56) 4096 activation_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_1 (BatchNormalizati (None, 64, 56, 56) 256 block_1a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_relu_1 (Activation) (None, 64, 56, 56) 0 block_1a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_2 (Conv2D) (None, 64, 56, 56) 36864 block_1a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_2 (BatchNormalizati (None, 64, 56, 56) 256 block_1a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_relu_2 (Activation) (None, 64, 56, 56) 0 block_1a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_3 (Conv2D) (None, 256, 56, 56) 16384 block_1a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_conv_shortcut (Conv2D) (None, 256, 56, 56) 16384 activation_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_3 (BatchNormalizati (None, 256, 56, 56) 1024 block_1a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_bn_shortcut (BatchNorm (None, 256, 56, 56) 1024 block_1a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_1 (Add) (None, 256, 56, 56) 0 block_1a_bn_3[0][0] \n",
" block_1a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1a_relu (Activation) (None, 256, 56, 56) 0 add_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_conv_1 (Conv2D) (None, 64, 56, 56) 16384 block_1a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_bn_1 (BatchNormalizati (None, 64, 56, 56) 256 block_1b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_relu_1 (Activation) (None, 64, 56, 56) 0 block_1b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_conv_2 (Conv2D) (None, 64, 56, 56) 36864 block_1b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_bn_2 (BatchNormalizati (None, 64, 56, 56) 256 block_1b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_relu_2 (Activation) (None, 64, 56, 56) 0 block_1b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_conv_3 (Conv2D) (None, 256, 56, 56) 16384 block_1b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_bn_3 (BatchNormalizati (None, 256, 56, 56) 1024 block_1b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_2 (Add) (None, 256, 56, 56) 0 block_1b_bn_3[0][0] \n",
" block_1a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1b_relu (Activation) (None, 256, 56, 56) 0 add_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_conv_1 (Conv2D) (None, 64, 56, 56) 16384 block_1b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_bn_1 (BatchNormalizati (None, 64, 56, 56) 256 block_1c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_relu_1 (Activation) (None, 64, 56, 56) 0 block_1c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_conv_2 (Conv2D) (None, 64, 56, 56) 36864 block_1c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_bn_2 (BatchNormalizati (None, 64, 56, 56) 256 block_1c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_relu_2 (Activation) (None, 64, 56, 56) 0 block_1c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_conv_3 (Conv2D) (None, 256, 56, 56) 16384 block_1c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_bn_3 (BatchNormalizati (None, 256, 56, 56) 1024 block_1c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_3 (Add) (None, 256, 56, 56) 0 block_1c_bn_3[0][0] \n",
" block_1b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_1c_relu (Activation) (None, 256, 56, 56) 0 add_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_1 (Conv2D) (None, 128, 28, 28) 32768 block_1c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_relu_1 (Activation) (None, 128, 28, 28) 0 block_2a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_relu_2 (Activation) (None, 128, 28, 28) 0 block_2a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_conv_shortcut (Conv2D) (None, 512, 28, 28) 131072 block_1c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_bn_shortcut (BatchNorm (None, 512, 28, 28) 2048 block_2a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_4 (Add) (None, 512, 28, 28) 0 block_2a_bn_3[0][0] \n",
" block_2a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2a_relu (Activation) (None, 512, 28, 28) 0 add_4[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_conv_1 (Conv2D) (None, 128, 28, 28) 65536 block_2a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_relu_1 (Activation) (None, 128, 28, 28) 0 block_2b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_relu_2 (Activation) (None, 128, 28, 28) 0 block_2b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_5 (Add) (None, 512, 28, 28) 0 block_2b_bn_3[0][0] \n",
" block_2a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2b_relu (Activation) (None, 512, 28, 28) 0 add_5[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_conv_1 (Conv2D) (None, 128, 28, 28) 65536 block_2b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_relu_1 (Activation) (None, 128, 28, 28) 0 block_2c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_relu_2 (Activation) (None, 128, 28, 28) 0 block_2c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_6 (Add) (None, 512, 28, 28) 0 block_2c_bn_3[0][0] \n",
" block_2b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2c_relu (Activation) (None, 512, 28, 28) 0 add_6[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_conv_1 (Conv2D) (None, 128, 28, 28) 65536 block_2c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_bn_1 (BatchNormalizati (None, 128, 28, 28) 512 block_2d_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_relu_1 (Activation) (None, 128, 28, 28) 0 block_2d_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_conv_2 (Conv2D) (None, 128, 28, 28) 147456 block_2d_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_bn_2 (BatchNormalizati (None, 128, 28, 28) 512 block_2d_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_relu_2 (Activation) (None, 128, 28, 28) 0 block_2d_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_conv_3 (Conv2D) (None, 512, 28, 28) 65536 block_2d_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_bn_3 (BatchNormalizati (None, 512, 28, 28) 2048 block_2d_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_7 (Add) (None, 512, 28, 28) 0 block_2d_bn_3[0][0] \n",
" block_2c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_2d_relu (Activation) (None, 512, 28, 28) 0 add_7[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_1 (Conv2D) (None, 256, 14, 14) 131072 block_2d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_relu_1 (Activation) (None, 256, 14, 14) 0 block_3a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_relu_2 (Activation) (None, 256, 14, 14) 0 block_3a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_conv_shortcut (Conv2D) (None, 1024, 14, 14) 524288 block_2d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_bn_shortcut (BatchNorm (None, 1024, 14, 14) 4096 block_3a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_8 (Add) (None, 1024, 14, 14) 0 block_3a_bn_3[0][0] \n",
" block_3a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3a_relu (Activation) (None, 1024, 14, 14) 0 add_8[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_relu_1 (Activation) (None, 256, 14, 14) 0 block_3b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_relu_2 (Activation) (None, 256, 14, 14) 0 block_3b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_9 (Add) (None, 1024, 14, 14) 0 block_3b_bn_3[0][0] \n",
" block_3a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3b_relu (Activation) (None, 1024, 14, 14) 0 add_9[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_relu_1 (Activation) (None, 256, 14, 14) 0 block_3c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_relu_2 (Activation) (None, 256, 14, 14) 0 block_3c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_10 (Add) (None, 1024, 14, 14) 0 block_3c_bn_3[0][0] \n",
" block_3b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3c_relu (Activation) (None, 1024, 14, 14) 0 add_10[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3d_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_relu_1 (Activation) (None, 256, 14, 14) 0 block_3d_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3d_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3d_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_relu_2 (Activation) (None, 256, 14, 14) 0 block_3d_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3d_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3d_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_11 (Add) (None, 1024, 14, 14) 0 block_3d_bn_3[0][0] \n",
" block_3c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3d_relu (Activation) (None, 1024, 14, 14) 0 add_11[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3e_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_relu_1 (Activation) (None, 256, 14, 14) 0 block_3e_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3e_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3e_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_relu_2 (Activation) (None, 256, 14, 14) 0 block_3e_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3e_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3e_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_12 (Add) (None, 1024, 14, 14) 0 block_3e_bn_3[0][0] \n",
" block_3d_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3e_relu (Activation) (None, 1024, 14, 14) 0 add_12[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_conv_1 (Conv2D) (None, 256, 14, 14) 262144 block_3e_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_bn_1 (BatchNormalizati (None, 256, 14, 14) 1024 block_3f_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_relu_1 (Activation) (None, 256, 14, 14) 0 block_3f_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_conv_2 (Conv2D) (None, 256, 14, 14) 589824 block_3f_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_bn_2 (BatchNormalizati (None, 256, 14, 14) 1024 block_3f_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_relu_2 (Activation) (None, 256, 14, 14) 0 block_3f_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_conv_3 (Conv2D) (None, 1024, 14, 14) 262144 block_3f_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_bn_3 (BatchNormalizati (None, 1024, 14, 14) 4096 block_3f_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_13 (Add) (None, 1024, 14, 14) 0 block_3f_bn_3[0][0] \n",
" block_3e_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_3f_relu (Activation) (None, 1024, 14, 14) 0 add_13[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_1 (Conv2D) (None, 512, 14, 14) 524288 block_3f_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_1 (BatchNormalizati (None, 512, 14, 14) 2048 block_4a_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_relu_1 (Activation) (None, 512, 14, 14) 0 block_4a_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_2 (Conv2D) (None, 512, 14, 14) 2359296 block_4a_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_2 (BatchNormalizati (None, 512, 14, 14) 2048 block_4a_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_relu_2 (Activation) (None, 512, 14, 14) 0 block_4a_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_3 (Conv2D) (None, 2048, 14, 14) 1048576 block_4a_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_conv_shortcut (Conv2D) (None, 2048, 14, 14) 2097152 block_3f_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_3 (BatchNormalizati (None, 2048, 14, 14) 8192 block_4a_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_bn_shortcut (BatchNorm (None, 2048, 14, 14) 8192 block_4a_conv_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_14 (Add) (None, 2048, 14, 14) 0 block_4a_bn_3[0][0] \n",
" block_4a_bn_shortcut[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4a_relu (Activation) (None, 2048, 14, 14) 0 add_14[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_conv_1 (Conv2D) (None, 512, 14, 14) 1048576 block_4a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_bn_1 (BatchNormalizati (None, 512, 14, 14) 2048 block_4b_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_relu_1 (Activation) (None, 512, 14, 14) 0 block_4b_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_conv_2 (Conv2D) (None, 512, 14, 14) 2359296 block_4b_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_bn_2 (BatchNormalizati (None, 512, 14, 14) 2048 block_4b_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_relu_2 (Activation) (None, 512, 14, 14) 0 block_4b_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_conv_3 (Conv2D) (None, 2048, 14, 14) 1048576 block_4b_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_bn_3 (BatchNormalizati (None, 2048, 14, 14) 8192 block_4b_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_15 (Add) (None, 2048, 14, 14) 0 block_4b_bn_3[0][0] \n",
" block_4a_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4b_relu (Activation) (None, 2048, 14, 14) 0 add_15[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_conv_1 (Conv2D) (None, 512, 14, 14) 1048576 block_4b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_bn_1 (BatchNormalizati (None, 512, 14, 14) 2048 block_4c_conv_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_relu_1 (Activation) (None, 512, 14, 14) 0 block_4c_bn_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_conv_2 (Conv2D) (None, 512, 14, 14) 2359296 block_4c_relu_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_bn_2 (BatchNormalizati (None, 512, 14, 14) 2048 block_4c_conv_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_relu_2 (Activation) (None, 512, 14, 14) 0 block_4c_bn_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_conv_3 (Conv2D) (None, 2048, 14, 14) 1048576 block_4c_relu_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_bn_3 (BatchNormalizati (None, 2048, 14, 14) 8192 block_4c_conv_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"add_16 (Add) (None, 2048, 14, 14) 0 block_4c_bn_3[0][0] \n",
" block_4b_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"block_4c_relu (Activation) (None, 2048, 14, 14) 0 add_16[0][0] \n",
"__________________________________________________________________________________________________\n",
"avg_pool (AveragePooling2D) (None, 2048, 1, 1) 0 block_4c_relu[0][0] \n",
"__________________________________________________________________________________________________\n",
"flatten (Flatten) (None, 2048) 0 avg_pool[0][0] \n",
"__________________________________________________________________________________________________\n",
"predictions (Dense) (None, 2) 4098 flatten[0][0] \n",
"==================================================================================================\n",
"Total params: 23,565,250\n",
"Trainable params: 23,502,722\n",
"Non-trainable params: 62,528\n",
"__________________________________________________________________________________________________\n",
"INFO: Processing /workspace/tao-experiments/data/val/defect...\n",
"INFO: Inference complete. Result is saved at /workspace/tao-experiments/data/val/defect/result.csv\n",
"Telemetry data couldn't be sent, but the command ran successfully.\n",
"[WARNING]: \n",
"Execution status: PASS\n",
"2026-02-02 18:09:21,390 [TAO Toolkit] [INFO] nvidia_tao_cli.components.docker_handler.docker_handler 363: Stopping container.\n"
]
}
],
"source": [
"!tao model classification_tf1 inference -m $TAO_EXPERIMENT_DIR/resnet50_aug/weights/resnet_010.hdf5 \\\n",
" -d $TAO_DATA_DIR/val/defect \\\n",
" -e $TAO_SPECS_DIR/resnet50/combined_config_aug.txt \\\n",
" -cm $TAO_EXPERIMENT_DIR/resnet50/classmap.json \\\n",
" -k $KEY"
]
},
{
"cell_type": "markdown",
"id": "015a06ad-4c34-4d20-bccd-ddec8af4e18d",
"metadata": {},
"source": [
"When executing with `-d`, or directory mode, a `result.csv` file is created and stored in the directory you specify using `-d`. The `result.csv` has the file path in the first column and predicted labels in the second. "
]
},
{
"cell_type": "markdown",
"id": "f66c94ef-d9ea-466c-8504-469f34ae3758",
"metadata": {},
"source": [
"\n",
"### Precision and Recall ###\n",
"We can set a threshold on the probability score and classify only images above this threshold as true defects. In order to accomplish this, we'll have to understand two measures: `recall` and `precision`. The first measure is focused on identifying positive cases and is called __recall__. We define recall as the ability of the model to identify all true positive samples of the dataset. In mathematical terms, recall is the ratio of true positives over true positives plus false negatives. By other means, recall tells us, among all the test samples belonging to the output class, how many of them are identified correctly by the model. The next measure, is called __precision__ and is the ability of the model to identify the relevant samples only, and is defined as the ratio of true positives over true positives plus false positives. Selecting a proper threshold, usually stems from a good balance between the precision and recall values. A well-known measure that provides such a balance is __f1-score__, which is a harmonic mean of precision and recall. \n",
"