From 43aa81acaeca4dbf39596801d637eecbde374256 Mon Sep 17 00:00:00 2001 From: DHRUV BANSAL Date: Mon, 15 Feb 2021 13:42:46 +0530 Subject: [PATCH 01/10] Code edited just for Evaluation on COCO validation dataset --- COCO_Evaluation.ipynb | 575 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 575 insertions(+) create mode 100644 COCO_Evaluation.ipynb diff --git a/COCO_Evaluation.ipynb b/COCO_Evaluation.ipynb new file mode 100644 index 000000000..4b0d1b058 --- /dev/null +++ b/COCO_Evaluation.ipynb @@ -0,0 +1,575 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "accelerator": "GPU", + "colab": { + "name": "COCO_Evaluation.ipynb", + "provenance": [], + "toc_visible": true, + "authorship_tag": "ABX9TyNGc6quC7zRw1BbfN5prcwc", + "include_colab_link": true + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ANIjJa0SskDI" + }, + "source": [ + "# EfficientDet Tutorial: inference, eval, and training \n", + "\n", + "\n", + "\n", + "
\n", + " \n", + " View source on github\n", + " \n", + "\n", + " \n", + " Run in Google Colab\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "q4xF-IV6tFZF" + }, + "source": [ + "## Installing packages and donwloading source code/image" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "background_save": true + }, + "id": "1uEKAUKjtMXY" + }, + "source": [ + "%%capture\n", + "#@title\n", + "import os\n", + "import sys\n", + "import tensorflow.compat.v1 as tf\n", + "\n", + "# Download source code.\n", + "if \"efficientdet\" not in os.getcwd():\n", + " !git clone --depth 1 https://github.com/google/automl\n", + " os.chdir('automl/efficientdet')\n", + " sys.path.append('.')\n", + " !pip install -r requirements.txt\n", + " !pip install -U 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'\n", + "else:\n", + " !git pull" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "DEkyGkSftOhv", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "72648260-40e1-4086-ac70-3725e63d2bea" + }, + "source": [ + "MODEL = 'efficientdet-d0' #@param\n", + "# the model name varies from d0 - d7 with increase in evaluation metircs of the model\n", + "def download(m):\n", + " if m not in os.listdir():\n", + " !wget https://storage.googleapis.com/cloud-tpu-checkpoints/efficientdet/coco/{m}.tar.gz\n", + " !tar zxf {m}.tar.gz\n", + " ckpt_path = os.path.join(os.getcwd(), m)\n", + " return ckpt_path\n", + "\n", + "# Download checkpoint.\n", + "ckpt_path = download(MODEL)\n", + "print('Use model in {}'.format(ckpt_path))\n", + "\n", + "# Prepare image and visualization settings.\n", + "image_url = 'https://user-images.githubusercontent.com/11736571/77320690-099af300-6d37-11ea-9d86-24f14dc2d540.png'#@param\n", + "image_name = 'img.png' #@param\n", + "!wget {image_url} -O img.png\n", + "import os\n", + "img_path = os.path.join(os.getcwd(), 'img.png')\n", + "\n", + "min_score_thresh = 0.35 #@param\n", + "max_boxes_to_draw = 200 #@param\n", + "line_thickness = 2#@param\n", + "\n", + "import PIL\n", + "# Get the largest of height/width and round to 128.\n", + "image_size = max(PIL.Image.open(img_path).size)" + ], + "execution_count": 2, + "outputs": [ + { + "output_type": "stream", + "text": [ + "--2021-02-15 08:03:41-- https://storage.googleapis.com/cloud-tpu-checkpoints/efficientdet/coco/efficientdet-d0.tar.gz\n", + "Resolving storage.googleapis.com (storage.googleapis.com)... 74.125.204.128, 64.233.187.128, 64.233.189.128, ...\n", + "Connecting to storage.googleapis.com (storage.googleapis.com)|74.125.204.128|:443... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 28994253 (28M) [application/octet-stream]\n", + "Saving to: ‘efficientdet-d0.tar.gz’\n", + "\n", + "efficientdet-d0.tar 100%[===================>] 27.65M 31.1MB/s in 0.9s \n", + "\n", + "2021-02-15 08:03:44 (31.1 MB/s) - ‘efficientdet-d0.tar.gz’ saved [28994253/28994253]\n", + "\n", + "Use model in /content/automl/efficientdet/efficientdet-d0\n", + "--2021-02-15 08:03:44-- https://user-images.githubusercontent.com/11736571/77320690-099af300-6d37-11ea-9d86-24f14dc2d540.png\n", + "Resolving user-images.githubusercontent.com (user-images.githubusercontent.com)... 185.199.110.133, 185.199.109.133, 185.199.111.133, ...\n", + "Connecting to user-images.githubusercontent.com (user-images.githubusercontent.com)|185.199.110.133|:443... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 4080549 (3.9M) [image/png]\n", + "Saving to: ‘img.png’\n", + "\n", + "img.png 100%[===================>] 3.89M --.-KB/s in 0.09s \n", + "\n", + "2021-02-15 08:03:45 (43.1 MB/s) - ‘img.png’ saved [4080549/4080549]\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "vXHI6qsAuQYy" + }, + "source": [ + "# 3. Evaluating COCO Dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "M2t3l5Z9uZnG" + }, + "source": [ + "## 3.1 Downloading COCO dataset and converint into tfrecords" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "d7eSA5pNt2x2", + "outputId": "7ab11376-964b-4328-ba0b-fb2f9eb07a1f" + }, + "source": [ + "if 'val2017' not in os.listdir():\n", + " !wget http://images.cocodataset.org/zips/val2017.zip\n", + " !wget http://images.cocodataset.org/annotations/annotations_trainval2017.zip\n", + " !unzip -q val2017.zip\n", + " !unzip annotations_trainval2017.zip\n", + "\n", + " !mkdir tfrecord\n", + " !PYTHONPATH=\".:$PYTHONPATH\" python dataset/create_coco_tfrecord.py \\\n", + " --image_dir=val2017 \\\n", + " --caption_annotations_file=annotations/captions_val2017.json \\\n", + " --output_file_prefix=tfrecord/val \\\n", + " --num_shards=32" + ], + "execution_count": 3, + "outputs": [ + { + "output_type": "stream", + "text": [ + "--2021-02-15 08:06:47-- http://images.cocodataset.org/zips/val2017.zip\n", + "Resolving images.cocodataset.org (images.cocodataset.org)... 52.217.36.156\n", + "Connecting to images.cocodataset.org (images.cocodataset.org)|52.217.36.156|:80... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 815585330 (778M) [application/zip]\n", + "Saving to: ‘val2017.zip’\n", + "\n", + "val2017.zip 100%[===================>] 777.80M 16.9MB/s in 48s \n", + "\n", + "2021-02-15 08:07:35 (16.2 MB/s) - ‘val2017.zip’ saved [815585330/815585330]\n", + "\n", + "--2021-02-15 08:07:35-- http://images.cocodataset.org/annotations/annotations_trainval2017.zip\n", + "Resolving images.cocodataset.org (images.cocodataset.org)... 52.216.132.139\n", + "Connecting to images.cocodataset.org (images.cocodataset.org)|52.216.132.139|:80... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 252907541 (241M) [application/zip]\n", + "Saving to: ‘annotations_trainval2017.zip’\n", + "\n", + "annotations_trainva 100%[===================>] 241.19M 16.8MB/s in 16s \n", + "\n", + "2021-02-15 08:07:52 (15.2 MB/s) - ‘annotations_trainval2017.zip’ saved [252907541/252907541]\n", + "\n", + "Archive: annotations_trainval2017.zip\n", + " inflating: annotations/instances_train2017.json \n", + " inflating: annotations/instances_val2017.json \n", + " inflating: annotations/captions_train2017.json \n", + " inflating: annotations/captions_val2017.json \n", + " inflating: annotations/person_keypoints_train2017.json \n", + " inflating: annotations/person_keypoints_val2017.json \n", + "2021-02-15 08:08:07.232728: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.10.1\n", + "I0215 08:08:09.284386 139876403943296 create_coco_tfrecord.py:285] writing to output path: tfrecord/val\n", + "I0215 08:08:09.619695 139876403943296 create_coco_tfrecord.py:237] Building caption index.\n", + "I0215 08:08:09.626409 139876403943296 create_coco_tfrecord.py:249] 0 images are missing captions.\n", + "I0215 08:08:09.776298 139876403943296 create_coco_tfrecord.py:323] On image 0 of 5000\n", + "I0215 08:08:09.940375 139876403943296 create_coco_tfrecord.py:323] On image 100 of 5000\n", + "I0215 08:08:10.086762 139876403943296 create_coco_tfrecord.py:323] On image 200 of 5000\n", + "I0215 08:08:10.225423 139876403943296 create_coco_tfrecord.py:323] On image 300 of 5000\n", + "I0215 08:08:10.376513 139876403943296 create_coco_tfrecord.py:323] On image 400 of 5000\n", + "I0215 08:08:10.512861 139876403943296 create_coco_tfrecord.py:323] On image 500 of 5000\n", + "I0215 08:08:10.660977 139876403943296 create_coco_tfrecord.py:323] On image 600 of 5000\n", + "I0215 08:08:10.791800 139876403943296 create_coco_tfrecord.py:323] On image 700 of 5000\n", + "I0215 08:08:11.023546 139876403943296 create_coco_tfrecord.py:323] On image 800 of 5000\n", + "I0215 08:08:11.165428 139876403943296 create_coco_tfrecord.py:323] On image 900 of 5000\n", + "I0215 08:08:11.319842 139876403943296 create_coco_tfrecord.py:323] On image 1000 of 5000\n", + "I0215 08:08:11.481098 139876403943296 create_coco_tfrecord.py:323] On image 1100 of 5000\n", + "I0215 08:08:11.632011 139876403943296 create_coco_tfrecord.py:323] On image 1200 of 5000\n", + "I0215 08:08:11.771724 139876403943296 create_coco_tfrecord.py:323] On image 1300 of 5000\n", + "I0215 08:08:11.906335 139876403943296 create_coco_tfrecord.py:323] On image 1400 of 5000\n", + "I0215 08:08:12.064010 139876403943296 create_coco_tfrecord.py:323] On image 1500 of 5000\n", + "I0215 08:08:12.211949 139876403943296 create_coco_tfrecord.py:323] On image 1600 of 5000\n", + "I0215 08:08:12.356715 139876403943296 create_coco_tfrecord.py:323] On image 1700 of 5000\n", + "I0215 08:08:12.626727 139876403943296 create_coco_tfrecord.py:323] On image 1800 of 5000\n", + "I0215 08:08:12.774333 139876403943296 create_coco_tfrecord.py:323] On image 1900 of 5000\n", + "I0215 08:08:12.932412 139876403943296 create_coco_tfrecord.py:323] On image 2000 of 5000\n", + "I0215 08:08:13.085657 139876403943296 create_coco_tfrecord.py:323] On image 2100 of 5000\n", + "I0215 08:08:13.247072 139876403943296 create_coco_tfrecord.py:323] On image 2200 of 5000\n", + "I0215 08:08:13.411663 139876403943296 create_coco_tfrecord.py:323] On image 2300 of 5000\n", + "I0215 08:08:13.570645 139876403943296 create_coco_tfrecord.py:323] On image 2400 of 5000\n", + "I0215 08:08:13.728673 139876403943296 create_coco_tfrecord.py:323] On image 2500 of 5000\n", + "I0215 08:08:13.870792 139876403943296 create_coco_tfrecord.py:323] On image 2600 of 5000\n", + "I0215 08:08:14.177845 139876403943296 create_coco_tfrecord.py:323] On image 2700 of 5000\n", + "I0215 08:08:14.616946 139876403943296 create_coco_tfrecord.py:323] On image 2800 of 5000\n", + "I0215 08:08:15.110459 139876403943296 create_coco_tfrecord.py:323] On image 2900 of 5000\n", + "I0215 08:08:15.560891 139876403943296 create_coco_tfrecord.py:323] On image 3000 of 5000\n", + "I0215 08:08:15.966990 139876403943296 create_coco_tfrecord.py:323] On image 3100 of 5000\n", + "I0215 08:08:16.388808 139876403943296 create_coco_tfrecord.py:323] On image 3200 of 5000\n", + "I0215 08:08:16.826037 139876403943296 create_coco_tfrecord.py:323] On image 3300 of 5000\n", + "I0215 08:08:17.257006 139876403943296 create_coco_tfrecord.py:323] On image 3400 of 5000\n", + "I0215 08:08:17.665015 139876403943296 create_coco_tfrecord.py:323] On image 3500 of 5000\n", + "I0215 08:08:18.077958 139876403943296 create_coco_tfrecord.py:323] On image 3600 of 5000\n", + "I0215 08:08:18.566764 139876403943296 create_coco_tfrecord.py:323] On image 3700 of 5000\n", + "I0215 08:08:19.050907 139876403943296 create_coco_tfrecord.py:323] On image 3800 of 5000\n", + "I0215 08:08:22.784773 139876403943296 create_coco_tfrecord.py:323] On image 3900 of 5000\n", + "I0215 08:08:22.810469 139876403943296 create_coco_tfrecord.py:323] On image 4000 of 5000\n", + "I0215 08:08:22.833685 139876403943296 create_coco_tfrecord.py:323] On image 4100 of 5000\n", + "I0215 08:08:22.857089 139876403943296 create_coco_tfrecord.py:323] On image 4200 of 5000\n", + "I0215 08:08:22.879511 139876403943296 create_coco_tfrecord.py:323] On image 4300 of 5000\n", + "I0215 08:08:22.924930 139876403943296 create_coco_tfrecord.py:323] On image 4400 of 5000\n", + "I0215 08:08:23.059330 139876403943296 create_coco_tfrecord.py:323] On image 4500 of 5000\n", + "I0215 08:08:23.227055 139876403943296 create_coco_tfrecord.py:323] On image 4600 of 5000\n", + "I0215 08:08:23.450253 139876403943296 create_coco_tfrecord.py:323] On image 4700 of 5000\n", + "I0215 08:08:23.710522 139876403943296 create_coco_tfrecord.py:323] On image 4800 of 5000\n", + "I0215 08:08:24.064316 139876403943296 create_coco_tfrecord.py:323] On image 4900 of 5000\n", + "I0215 08:08:24.332943 139876403943296 create_coco_tfrecord.py:335] Finished writing, skipped 0 annotations.\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "MIXuSSBqukXE", + "outputId": "f810e133-9f99-4ea6-b500-5f226c57a1f9" + }, + "source": [ + "# Evalute on validation set (takes about 10 mins for efficientdet-d0)\n", + "# the model (currently efficientdet-do) can be changed in cell 2\n", + "!python main.py --mode=eval \\\n", + " --model_name={MODEL} --model_dir={ckpt_path} \\\n", + " --val_file_pattern=tfrecord/val* \\\n", + " --val_json_file=annotations/instances_val2017.json" + ], + "execution_count": 4, + "outputs": [ + { + "output_type": "stream", + "text": [ + "2021-02-15 08:10:45.712174: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.10.1\n", + "I0215 08:10:48.285151 140394613462912 main.py:264] {'name': 'efficientdet-d0', 'act_type': 'swish', 'image_size': (512, 512), 'target_size': None, 'input_rand_hflip': True, 'jitter_min': 0.1, 'jitter_max': 2.0, 'autoaugment_policy': None, 'grid_mask': False, 'sample_image': None, 'map_freq': 5, 'num_classes': 90, 'seg_num_classes': 3, 'heads': ['object_detection'], 'skip_crowd_during_training': True, 'label_map': None, 'max_instances_per_image': 100, 'regenerate_source_id': False, 'min_level': 3, 'max_level': 7, 'num_scales': 3, 'aspect_ratios': [1.0, 2.0, 0.5], 'anchor_scale': 4.0, 'is_training_bn': True, 'momentum': 0.9, 'optimizer': 'sgd', 'learning_rate': 0.08, 'lr_warmup_init': 0.008, 'lr_warmup_epoch': 1.0, 'first_lr_drop_epoch': 200.0, 'second_lr_drop_epoch': 250.0, 'poly_lr_power': 0.9, 'clip_gradients_norm': 10.0, 'num_epochs': 300, 'data_format': 'channels_last', 'label_smoothing': 0.0, 'alpha': 0.25, 'gamma': 1.5, 'delta': 0.1, 'box_loss_weight': 50.0, 'iou_loss_type': None, 'iou_loss_weight': 1.0, 'weight_decay': 4e-05, 'strategy': None, 'mixed_precision': False, 'loss_scale': None, 'model_optimizations': {}, 'box_class_repeats': 3, 'fpn_cell_repeats': 3, 'fpn_num_filters': 64, 'separable_conv': True, 'apply_bn_for_resampling': True, 'conv_after_downsample': False, 'conv_bn_act_pattern': False, 'drop_remainder': True, 'nms_configs': {'method': 'gaussian', 'iou_thresh': None, 'score_thresh': 0.0, 'sigma': None, 'pyfunc': False, 'max_nms_inputs': 0, 'max_output_size': 100}, 'fpn_name': None, 'fpn_weight_method': None, 'fpn_config': None, 'survival_prob': None, 'img_summary_steps': None, 'lr_decay_method': 'cosine', 'moving_average_decay': 0.9998, 'ckpt_var_scope': None, 'skip_mismatch': True, 'backbone_name': 'efficientnet-b0', 'backbone_config': None, 'var_freeze_expr': None, 'use_keras_model': True, 'dataset_type': None, 'positives_momentum': None, 'grad_checkpoint': False, 'model_name': 'efficientdet-d0', 'iterations_per_loop': 100, 'model_dir': '/content/automl/efficientdet/efficientdet-d0', 'num_shards': 8, 'num_examples_per_epoch': 120000, 'backbone_ckpt': '', 'ckpt': None, 'val_json_file': 'annotations/instances_val2017.json', 'testdev_dir': None, 'profile': False, 'mode': 'eval'}\n", + "INFO:tensorflow:Using config: {'_model_dir': '/content/automl/efficientdet/efficientdet-d0', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': 100, '_save_checkpoints_secs': None, '_session_config': allow_soft_placement: true\n", + ", '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_train_distribute': None, '_device_fn': None, '_protocol': None, '_eval_distribute': None, '_experimental_distribute': None, '_experimental_max_worker_delay_secs': None, '_session_creation_timeout_secs': 7200, '_checkpoint_save_graph_def': True, '_service': None, '_cluster_spec': ClusterSpec({}), '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': '', '_evaluation_master': '', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1}\n", + "I0215 08:10:48.395855 140394613462912 estimator.py:191] Using config: {'_model_dir': '/content/automl/efficientdet/efficientdet-d0', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': 100, '_save_checkpoints_secs': None, '_session_config': allow_soft_placement: true\n", + ", '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_train_distribute': None, '_device_fn': None, '_protocol': None, '_eval_distribute': None, '_experimental_distribute': None, '_experimental_max_worker_delay_secs': None, '_session_creation_timeout_secs': 7200, '_checkpoint_save_graph_def': True, '_service': None, '_cluster_spec': ClusterSpec({}), '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': '', '_evaluation_master': '', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1}\n", + "INFO:tensorflow:Using config: {'_model_dir': '/content/automl/efficientdet/efficientdet-d0', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': 100, '_save_checkpoints_secs': None, '_session_config': allow_soft_placement: true\n", + ", '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_train_distribute': None, '_device_fn': None, '_protocol': None, '_eval_distribute': None, '_experimental_distribute': None, '_experimental_max_worker_delay_secs': None, '_session_creation_timeout_secs': 7200, '_checkpoint_save_graph_def': True, '_service': None, '_cluster_spec': ClusterSpec({}), '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': '', '_evaluation_master': '', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1}\n", + "I0215 08:10:48.397253 140394613462912 estimator.py:191] Using config: {'_model_dir': '/content/automl/efficientdet/efficientdet-d0', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': 100, '_save_checkpoints_secs': None, '_session_config': allow_soft_placement: true\n", + ", '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_train_distribute': None, '_device_fn': None, '_protocol': None, '_eval_distribute': None, '_experimental_distribute': None, '_experimental_max_worker_delay_secs': None, '_session_creation_timeout_secs': 7200, '_checkpoint_save_graph_def': True, '_service': None, '_cluster_spec': ClusterSpec({}), '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': '', '_evaluation_master': '', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1}\n", + "INFO:tensorflow:Waiting for new checkpoint at /content/automl/efficientdet/efficientdet-d0\n", + "I0215 08:10:48.397713 140394613462912 checkpoint_utils.py:139] Waiting for new checkpoint at /content/automl/efficientdet/efficientdet-d0\n", + "INFO:tensorflow:Found new checkpoint at /content/automl/efficientdet/efficientdet-d0/model\n", + "I0215 08:10:48.398653 140394613462912 checkpoint_utils.py:148] Found new checkpoint at /content/automl/efficientdet/efficientdet-d0/model\n", + "I0215 08:10:48.398843 140394613462912 main.py:344] Starting to evaluate.\n", + "2021-02-15 08:10:48.627714: I tensorflow/compiler/jit/xla_cpu_device.cc:41] Not creating XLA devices, tf_xla_enable_xla_devices not set\n", + "2021-02-15 08:10:48.629010: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcuda.so.1\n", + "2021-02-15 08:10:48.693651: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:941] 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", + "2021-02-15 08:10:48.694437: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1720] Found device 0 with properties: \n", + "pciBusID: 0000:00:04.0 name: Tesla K80 computeCapability: 3.7\n", + "coreClock: 0.8235GHz coreCount: 13 deviceMemorySize: 11.17GiB deviceMemoryBandwidth: 223.96GiB/s\n", + "2021-02-15 08:10:48.694492: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.10.1\n", + "2021-02-15 08:10:48.917975: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcublas.so.10\n", + "2021-02-15 08:10:48.918099: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcublasLt.so.10\n", + "2021-02-15 08:10:49.035688: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcufft.so.10\n", + "2021-02-15 08:10:49.075830: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcurand.so.10\n", + "2021-02-15 08:10:49.320592: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcusolver.so.10\n", + "2021-02-15 08:10:49.375899: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcusparse.so.10\n", + "2021-02-15 08:10:49.846333: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudnn.so.7\n", + "2021-02-15 08:10:49.846547: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:941] 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", + "2021-02-15 08:10:49.847750: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:941] 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", + "2021-02-15 08:10:49.868450: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1862] Adding visible gpu devices: 0\n", + "INFO:tensorflow:Calling model_fn.\n", + "I0215 08:10:50.559364 140394613462912 estimator.py:1162] Calling model_fn.\n", + "I0215 08:10:50.566413 140394613462912 efficientnet_builder.py:215] global_params= GlobalParams(batch_norm_momentum=0.99, batch_norm_epsilon=0.001, dropout_rate=0.2, data_format='channels_last', num_classes=1000, width_coefficient=1.0, depth_coefficient=1.0, depth_divisor=8, min_depth=None, survival_prob=0.0, relu_fn=functools.partial(, act_type='swish'), batch_norm=, use_se=True, local_pooling=None, condconv_num_experts=None, clip_projection_output=False, blocks_args=['r1_k3_s11_e1_i32_o16_se0.25', 'r2_k3_s22_e6_i16_o24_se0.25', 'r2_k5_s22_e6_i24_o40_se0.25', 'r3_k3_s22_e6_i40_o80_se0.25', 'r3_k5_s11_e6_i80_o112_se0.25', 'r4_k5_s22_e6_i112_o192_se0.25', 'r1_k3_s11_e6_i192_o320_se0.25'], fix_head_stem=None, grad_checkpoint=False)\n", + "I0215 08:10:50.895886 140394613462912 efficientdet_keras.py:749] fnode 0 : {'feat_level': 6, 'inputs_offsets': [3, 4]}\n", + "I0215 08:10:50.897055 140394613462912 efficientdet_keras.py:749] fnode 1 : {'feat_level': 5, 'inputs_offsets': [2, 5]}\n", + "I0215 08:10:50.898112 140394613462912 efficientdet_keras.py:749] fnode 2 : {'feat_level': 4, 'inputs_offsets': [1, 6]}\n", + "I0215 08:10:50.899170 140394613462912 efficientdet_keras.py:749] fnode 3 : {'feat_level': 3, 'inputs_offsets': [0, 7]}\n", + "I0215 08:10:50.900268 140394613462912 efficientdet_keras.py:749] fnode 4 : {'feat_level': 4, 'inputs_offsets': [1, 7, 8]}\n", + "I0215 08:10:50.901242 140394613462912 efficientdet_keras.py:749] fnode 5 : {'feat_level': 5, 'inputs_offsets': [2, 6, 9]}\n", + "I0215 08:10:50.902491 140394613462912 efficientdet_keras.py:749] fnode 6 : {'feat_level': 6, 'inputs_offsets': [3, 5, 10]}\n", + "I0215 08:10:50.903546 140394613462912 efficientdet_keras.py:749] fnode 7 : {'feat_level': 7, 'inputs_offsets': [4, 11]}\n", + "I0215 08:10:50.905227 140394613462912 efficientdet_keras.py:749] fnode 0 : {'feat_level': 6, 'inputs_offsets': [3, 4]}\n", + "I0215 08:10:50.906406 140394613462912 efficientdet_keras.py:749] fnode 1 : {'feat_level': 5, 'inputs_offsets': [2, 5]}\n", + "I0215 08:10:50.907436 140394613462912 efficientdet_keras.py:749] fnode 2 : {'feat_level': 4, 'inputs_offsets': [1, 6]}\n", + "I0215 08:10:50.908470 140394613462912 efficientdet_keras.py:749] fnode 3 : {'feat_level': 3, 'inputs_offsets': [0, 7]}\n", + "I0215 08:10:50.909642 140394613462912 efficientdet_keras.py:749] fnode 4 : {'feat_level': 4, 'inputs_offsets': [1, 7, 8]}\n", + "I0215 08:10:50.910905 140394613462912 efficientdet_keras.py:749] fnode 5 : {'feat_level': 5, 'inputs_offsets': [2, 6, 9]}\n", + "I0215 08:10:50.911958 140394613462912 efficientdet_keras.py:749] fnode 6 : {'feat_level': 6, 'inputs_offsets': [3, 5, 10]}\n", + "I0215 08:10:50.912943 140394613462912 efficientdet_keras.py:749] fnode 7 : {'feat_level': 7, 'inputs_offsets': [4, 11]}\n", + "I0215 08:10:50.914578 140394613462912 efficientdet_keras.py:749] fnode 0 : {'feat_level': 6, 'inputs_offsets': [3, 4]}\n", + "I0215 08:10:50.915685 140394613462912 efficientdet_keras.py:749] fnode 1 : {'feat_level': 5, 'inputs_offsets': [2, 5]}\n", + "I0215 08:10:50.916701 140394613462912 efficientdet_keras.py:749] fnode 2 : {'feat_level': 4, 'inputs_offsets': [1, 6]}\n", + "I0215 08:10:50.917805 140394613462912 efficientdet_keras.py:749] fnode 3 : {'feat_level': 3, 'inputs_offsets': [0, 7]}\n", + "I0215 08:10:50.918872 140394613462912 efficientdet_keras.py:749] fnode 4 : {'feat_level': 4, 'inputs_offsets': [1, 7, 8]}\n", + "I0215 08:10:50.919909 140394613462912 efficientdet_keras.py:749] fnode 5 : {'feat_level': 5, 'inputs_offsets': [2, 6, 9]}\n", + "I0215 08:10:50.921087 140394613462912 efficientdet_keras.py:749] fnode 6 : {'feat_level': 6, 'inputs_offsets': [3, 5, 10]}\n", + "I0215 08:10:50.922116 140394613462912 efficientdet_keras.py:749] fnode 7 : {'feat_level': 7, 'inputs_offsets': [4, 11]}\n", + "I0215 08:10:51.035507 140394613462912 efficientnet_model.py:735] Built stem stem : (1, 256, 256, 32)\n", + "I0215 08:10:51.036176 140394613462912 efficientnet_model.py:374] Block blocks_0 input shape: (1, 256, 256, 32)\n", + "I0215 08:10:51.064666 140394613462912 efficientnet_model.py:393] DWConv shape: (1, 256, 256, 32)\n", + "I0215 08:10:51.093082 140394613462912 efficientnet_model.py:195] Built SE se : (1, 1, 1, 32)\n", + "I0215 08:10:51.119867 140394613462912 efficientnet_model.py:414] Project shape: (1, 256, 256, 16)\n", + "I0215 08:10:51.120517 140394613462912 efficientnet_model.py:374] Block blocks_1 input shape: (1, 256, 256, 16)\n", + "I0215 08:10:51.147840 140394613462912 efficientnet_model.py:390] Expand shape: (1, 256, 256, 96)\n", + "I0215 08:10:51.182270 140394613462912 efficientnet_model.py:393] DWConv shape: (1, 128, 128, 96)\n", + "I0215 08:10:51.211130 140394613462912 efficientnet_model.py:195] Built SE se : (1, 1, 1, 96)\n", + "I0215 08:10:51.238853 140394613462912 efficientnet_model.py:414] Project shape: (1, 128, 128, 24)\n", + "I0215 08:10:51.239474 140394613462912 efficientnet_model.py:374] Block blocks_2 input shape: (1, 128, 128, 24)\n", + "I0215 08:10:51.268710 140394613462912 efficientnet_model.py:390] Expand shape: (1, 128, 128, 144)\n", + "I0215 08:10:51.298249 140394613462912 efficientnet_model.py:393] DWConv shape: (1, 128, 128, 144)\n", + "I0215 08:10:51.328128 140394613462912 efficientnet_model.py:195] Built SE se : (1, 1, 1, 144)\n", + "I0215 08:10:51.356158 140394613462912 efficientnet_model.py:414] Project shape: (1, 128, 128, 24)\n", + "I0215 08:10:51.356903 140394613462912 efficientnet_model.py:374] Block blocks_3 input shape: (1, 128, 128, 24)\n", + "I0215 08:10:51.385811 140394613462912 efficientnet_model.py:390] Expand shape: (1, 128, 128, 144)\n", + "I0215 08:10:51.414741 140394613462912 efficientnet_model.py:393] DWConv shape: (1, 64, 64, 144)\n", + "I0215 08:10:51.444014 140394613462912 efficientnet_model.py:195] Built SE se : (1, 1, 1, 144)\n", + "I0215 08:10:51.473085 140394613462912 efficientnet_model.py:414] Project shape: (1, 64, 64, 40)\n", + "I0215 08:10:51.474085 140394613462912 efficientnet_model.py:374] Block blocks_4 input shape: (1, 64, 64, 40)\n", + "I0215 08:10:51.502791 140394613462912 efficientnet_model.py:390] Expand shape: (1, 64, 64, 240)\n", + "I0215 08:10:51.532240 140394613462912 efficientnet_model.py:393] DWConv shape: (1, 64, 64, 240)\n", + "I0215 08:10:51.561150 140394613462912 efficientnet_model.py:195] Built SE se : (1, 1, 1, 240)\n", + "I0215 08:10:51.589206 140394613462912 efficientnet_model.py:414] Project shape: (1, 64, 64, 40)\n", + "I0215 08:10:51.589968 140394613462912 efficientnet_model.py:374] Block blocks_5 input shape: (1, 64, 64, 40)\n", + "I0215 08:10:51.623336 140394613462912 efficientnet_model.py:390] Expand shape: (1, 64, 64, 240)\n", + "I0215 08:10:51.654567 140394613462912 efficientnet_model.py:393] DWConv shape: (1, 32, 32, 240)\n", + "I0215 08:10:51.685555 140394613462912 efficientnet_model.py:195] Built SE se : (1, 1, 1, 240)\n", + "I0215 08:10:51.713986 140394613462912 efficientnet_model.py:414] Project shape: (1, 32, 32, 80)\n", + "I0215 08:10:51.714636 140394613462912 efficientnet_model.py:374] Block blocks_6 input shape: (1, 32, 32, 80)\n", + "I0215 08:10:51.742813 140394613462912 efficientnet_model.py:390] Expand shape: (1, 32, 32, 480)\n", + "I0215 08:10:51.773987 140394613462912 efficientnet_model.py:393] DWConv shape: (1, 32, 32, 480)\n", + "I0215 08:10:51.806489 140394613462912 efficientnet_model.py:195] Built SE se : (1, 1, 1, 480)\n", + "I0215 08:10:51.837665 140394613462912 efficientnet_model.py:414] Project shape: (1, 32, 32, 80)\n", + "I0215 08:10:51.838323 140394613462912 efficientnet_model.py:374] Block blocks_7 input shape: (1, 32, 32, 80)\n", + "I0215 08:10:51.871118 140394613462912 efficientnet_model.py:390] Expand shape: (1, 32, 32, 480)\n", + "I0215 08:10:51.901251 140394613462912 efficientnet_model.py:393] DWConv shape: (1, 32, 32, 480)\n", + "I0215 08:10:51.930241 140394613462912 efficientnet_model.py:195] Built SE se : (1, 1, 1, 480)\n", + "I0215 08:10:51.957861 140394613462912 efficientnet_model.py:414] Project shape: (1, 32, 32, 80)\n", + "I0215 08:10:51.958518 140394613462912 efficientnet_model.py:374] Block blocks_8 input shape: (1, 32, 32, 80)\n", + "I0215 08:10:51.987040 140394613462912 efficientnet_model.py:390] Expand shape: (1, 32, 32, 480)\n", + "I0215 08:10:52.016878 140394613462912 efficientnet_model.py:393] DWConv shape: (1, 32, 32, 480)\n", + "I0215 08:10:52.046546 140394613462912 efficientnet_model.py:195] Built SE se : (1, 1, 1, 480)\n", + "I0215 08:10:52.075405 140394613462912 efficientnet_model.py:414] Project shape: (1, 32, 32, 112)\n", + "I0215 08:10:52.076481 140394613462912 efficientnet_model.py:374] Block blocks_9 input shape: (1, 32, 32, 112)\n", + "I0215 08:10:52.107595 140394613462912 efficientnet_model.py:390] Expand shape: (1, 32, 32, 672)\n", + "I0215 08:10:52.137681 140394613462912 efficientnet_model.py:393] DWConv shape: (1, 32, 32, 672)\n", + "I0215 08:10:52.171384 140394613462912 efficientnet_model.py:195] Built SE se : (1, 1, 1, 672)\n", + "I0215 08:10:52.199980 140394613462912 efficientnet_model.py:414] Project shape: (1, 32, 32, 112)\n", + "I0215 08:10:52.200653 140394613462912 efficientnet_model.py:374] Block blocks_10 input shape: (1, 32, 32, 112)\n", + "I0215 08:10:52.230742 140394613462912 efficientnet_model.py:390] Expand shape: (1, 32, 32, 672)\n", + "I0215 08:10:52.260191 140394613462912 efficientnet_model.py:393] DWConv shape: (1, 32, 32, 672)\n", + "I0215 08:10:52.290162 140394613462912 efficientnet_model.py:195] Built SE se : (1, 1, 1, 672)\n", + "I0215 08:10:52.317845 140394613462912 efficientnet_model.py:414] Project shape: (1, 32, 32, 112)\n", + "I0215 08:10:52.318554 140394613462912 efficientnet_model.py:374] Block blocks_11 input shape: (1, 32, 32, 112)\n", + "I0215 08:10:52.347153 140394613462912 efficientnet_model.py:390] Expand shape: (1, 32, 32, 672)\n", + "I0215 08:10:52.378805 140394613462912 efficientnet_model.py:393] DWConv shape: (1, 16, 16, 672)\n", + "I0215 08:10:52.409205 140394613462912 efficientnet_model.py:195] Built SE se : (1, 1, 1, 672)\n", + "I0215 08:10:52.436485 140394613462912 efficientnet_model.py:414] Project shape: (1, 16, 16, 192)\n", + "I0215 08:10:52.437105 140394613462912 efficientnet_model.py:374] Block blocks_12 input shape: (1, 16, 16, 192)\n", + "I0215 08:10:52.470740 140394613462912 efficientnet_model.py:390] Expand shape: (1, 16, 16, 1152)\n", + "I0215 08:10:52.506080 140394613462912 efficientnet_model.py:393] DWConv shape: (1, 16, 16, 1152)\n", + "I0215 08:10:52.536857 140394613462912 efficientnet_model.py:195] Built SE se : (1, 1, 1, 1152)\n", + "I0215 08:10:52.564273 140394613462912 efficientnet_model.py:414] Project shape: (1, 16, 16, 192)\n", + "I0215 08:10:52.565061 140394613462912 efficientnet_model.py:374] Block blocks_13 input shape: (1, 16, 16, 192)\n", + "I0215 08:10:52.599982 140394613462912 efficientnet_model.py:390] Expand shape: (1, 16, 16, 1152)\n", + "I0215 08:10:52.634805 140394613462912 efficientnet_model.py:393] DWConv shape: (1, 16, 16, 1152)\n", + "I0215 08:10:52.665519 140394613462912 efficientnet_model.py:195] Built SE se : (1, 1, 1, 1152)\n", + "I0215 08:10:52.696212 140394613462912 efficientnet_model.py:414] Project shape: (1, 16, 16, 192)\n", + "I0215 08:10:52.696923 140394613462912 efficientnet_model.py:374] Block blocks_14 input shape: (1, 16, 16, 192)\n", + "I0215 08:10:52.731099 140394613462912 efficientnet_model.py:390] Expand shape: (1, 16, 16, 1152)\n", + "I0215 08:10:52.765751 140394613462912 efficientnet_model.py:393] DWConv shape: (1, 16, 16, 1152)\n", + "I0215 08:10:52.797348 140394613462912 efficientnet_model.py:195] Built SE se : (1, 1, 1, 1152)\n", + "I0215 08:10:52.830531 140394613462912 efficientnet_model.py:414] Project shape: (1, 16, 16, 192)\n", + "I0215 08:10:52.831233 140394613462912 efficientnet_model.py:374] Block blocks_15 input shape: (1, 16, 16, 192)\n", + "I0215 08:10:52.865934 140394613462912 efficientnet_model.py:390] Expand shape: (1, 16, 16, 1152)\n", + "I0215 08:10:52.901147 140394613462912 efficientnet_model.py:393] DWConv shape: (1, 16, 16, 1152)\n", + "I0215 08:10:52.932100 140394613462912 efficientnet_model.py:195] Built SE se : (1, 1, 1, 1152)\n", + "I0215 08:10:52.959492 140394613462912 efficientnet_model.py:414] Project shape: (1, 16, 16, 320)\n", + "Traceback (most recent call last):\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/resource_variable_ops.py\", line 1748, in _init_from_args\n", + " gen_resource_variable_ops.var_is_initialized_op(handle))\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/gen_resource_variable_ops.py\", line 1278, in var_is_initialized_op\n", + " \"VarIsInitializedOp\", resource=resource, name=name)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/op_def_library.py\", line 750, in _apply_op_helper\n", + " attrs=attr_protos, op_def=op_def)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py\", line 3536, in _create_op_internal\n", + " op_def=op_def)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py\", line 2027, in __init__\n", + " output_type = pywrap_tf_session.TF_OperationOutputType(tf_output)\n", + "KeyboardInterrupt\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"main.py\", line 402, in \n", + " app.run(main)\n", + " File \"/usr/local/lib/python3.6/dist-packages/absl/app.py\", line 300, in run\n", + " _run_main(main, args)\n", + " File \"/usr/local/lib/python3.6/dist-packages/absl/app.py\", line 251, in _run_main\n", + " sys.exit(main(argv))\n", + " File \"main.py\", line 346, in main\n", + " eval_results = eval_est.evaluate(eval_input_fn, steps=eval_steps)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow_estimator/python/estimator/estimator.py\", line 467, in evaluate\n", + " name=name)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow_estimator/python/estimator/estimator.py\", line 510, in _actual_eval\n", + " return _evaluate()\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow_estimator/python/estimator/estimator.py\", line 492, in _evaluate\n", + " self._evaluate_build_graph(input_fn, hooks, checkpoint_path))\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow_estimator/python/estimator/estimator.py\", line 1531, in _evaluate_build_graph\n", + " self._call_model_fn_eval(input_fn, self.config))\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow_estimator/python/estimator/estimator.py\", line 1567, in _call_model_fn_eval\n", + " config)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow_estimator/python/estimator/estimator.py\", line 1163, in _call_model_fn\n", + " model_fn_results = self._model_fn(features=features, **kwargs)\n", + " File \"/content/automl/efficientdet/det_model_fn.py\", line 618, in efficientdet_model_fn\n", + " variable_filter_fn=variable_filter_fn)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/autograph/impl/api.py\", line 620, in wrapper\n", + " return func(*args, **kwargs)\n", + " File \"/content/automl/efficientdet/det_model_fn.py\", line 344, in _model_fn\n", + " precision, model_fn, features)\n", + " File \"/content/automl/efficientdet/utils.py\", line 631, in build_model_with_precision\n", + " outputs = mm(ii, *args, **kwargs)\n", + " File \"/content/automl/efficientdet/det_model_fn.py\", line 333, in model_fn\n", + " cls_out_list, box_out_list = model(inputs, params['is_training_bn'])\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer_v1.py\", line 786, in __call__\n", + " outputs = call_fn(cast_inputs, *args, **kwargs)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/autograph/impl/api.py\", line 620, in wrapper\n", + " return func(*args, **kwargs)\n", + " File \"/content/automl/efficientdet/keras/efficientdet_keras.py\", line 894, in call\n", + " fpn_feats = self.fpn_cells(feats, training)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer_v1.py\", line 786, in __call__\n", + " outputs = call_fn(cast_inputs, *args, **kwargs)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/autograph/impl/api.py\", line 620, in wrapper\n", + " return func(*args, **kwargs)\n", + " File \"/content/automl/efficientdet/keras/efficientdet_keras.py\", line 720, in call\n", + " cell_feats = cell(feats, training)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer_v1.py\", line 786, in __call__\n", + " outputs = call_fn(cast_inputs, *args, **kwargs)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/autograph/impl/api.py\", line 620, in wrapper\n", + " return func(*args, **kwargs)\n", + " File \"/content/automl/efficientdet/keras/efficientdet_keras.py\", line 773, in call\n", + " return _call(feats)\n", + " File \"/content/automl/efficientdet/keras/efficientdet_keras.py\", line 771, in _call\n", + " feats = fnode(feats, training)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer_v1.py\", line 786, in __call__\n", + " outputs = call_fn(cast_inputs, *args, **kwargs)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/autograph/impl/api.py\", line 620, in wrapper\n", + " return func(*args, **kwargs)\n", + " File \"/content/automl/efficientdet/keras/efficientdet_keras.py\", line 184, in call\n", + " new_node = self.op_after_combine(new_node)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer_v1.py\", line 786, in __call__\n", + " outputs = call_fn(cast_inputs, *args, **kwargs)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/autograph/impl/api.py\", line 620, in wrapper\n", + " return func(*args, **kwargs)\n", + " File \"/content/automl/efficientdet/keras/efficientdet_keras.py\", line 236, in call\n", + " new_node = self.bn(new_node, training=training)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer_v1.py\", line 766, in __call__\n", + " self._maybe_build(inputs)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer_v1.py\", line 2106, in _maybe_build\n", + " self.build(input_shapes)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/layers/normalization.py\", line 449, in build\n", + " experimental_autocast=False)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer_v1.py\", line 457, in add_weight\n", + " caching_device=caching_device)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/tracking/base.py\", line 810, in _add_variable_with_custom_getter\n", + " **kwargs_for_getter)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer_utils.py\", line 142, in make_variable\n", + " shape=variable_shape if variable_shape else None)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/variables.py\", line 260, in __call__\n", + " return cls._variable_v1_call(*args, **kwargs)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/variables.py\", line 221, in _variable_v1_call\n", + " shape=shape)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/variables.py\", line 199, in \n", + " previous_getter = lambda **kwargs: default_variable_creator(None, **kwargs)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/variable_scope.py\", line 2618, in default_variable_creator\n", + " shape=shape)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/variables.py\", line 264, in __call__\n", + " return super(VariableMetaclass, cls).__call__(*args, **kwargs)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/resource_variable_ops.py\", line 1585, in __init__\n", + " distribute_strategy=distribute_strategy)\n", + " File \"/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/resource_variable_ops.py\", line 1748, in _init_from_args\n", + " gen_resource_variable_ops.var_is_initialized_op(handle))\n", + "KeyboardInterrupt\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "u8FNQ6CvveZq" + }, + "source": [ + "" + ], + "execution_count": null, + "outputs": [] + } + ] +} \ No newline at end of file From 1646b755ffa0fbfee1c913bd84aada8a9b40e4ae Mon Sep 17 00:00:00 2001 From: DHRUV BANSAL Date: Mon, 15 Feb 2021 13:45:32 +0530 Subject: [PATCH 02/10] Code edited for just Evaluation of COCO validation DATASET --- COCO_Evaluation.ipynb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/COCO_Evaluation.ipynb b/COCO_Evaluation.ipynb index 4b0d1b058..2f7495107 100644 --- a/COCO_Evaluation.ipynb +++ b/COCO_Evaluation.ipynb @@ -6,8 +6,9 @@ "colab": { "name": "COCO_Evaluation.ipynb", "provenance": [], + "collapsed_sections": [], "toc_visible": true, - "authorship_tag": "ABX9TyNGc6quC7zRw1BbfN5prcwc", + "authorship_tag": "ABX9TyNULbIgi5QDjqd9Hty5jV5l", "include_colab_link": true }, "kernelspec": { @@ -41,7 +42,7 @@ " View source on github\n", " \n", "\n", - " \n", + " \n", " Run in Google Colab\n", "" ] From a0f3818ab807aad5baf779c00ececd53d12413fa Mon Sep 17 00:00:00 2001 From: DHRUV BANSAL Date: Mon, 15 Feb 2021 13:48:18 +0530 Subject: [PATCH 03/10] Code Edited for just COCO validation DATA evaluation --- COCO_Evaluation.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/COCO_Evaluation.ipynb b/COCO_Evaluation.ipynb index 2f7495107..38009d34a 100644 --- a/COCO_Evaluation.ipynb +++ b/COCO_Evaluation.ipynb @@ -8,7 +8,7 @@ "provenance": [], "collapsed_sections": [], "toc_visible": true, - "authorship_tag": "ABX9TyNULbIgi5QDjqd9Hty5jV5l", + "authorship_tag": "ABX9TyPra04wTh99LSRE7k5vNE8f", "include_colab_link": true }, "kernelspec": { @@ -42,7 +42,7 @@ " View source on github\n", " \n", "\n", - " \n", + " \n", " Run in Google Colab\n", "" ] From add8ce8bd12dbab23127610e2019b6671834ae7d Mon Sep 17 00:00:00 2001 From: DHRUV BANSAL Date: Mon, 15 Feb 2021 13:50:00 +0530 Subject: [PATCH 04/10] Code edited for Evaluation for COCO validation dataset --- COCO_Evaluation.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/COCO_Evaluation.ipynb b/COCO_Evaluation.ipynb index 38009d34a..78c9861a7 100644 --- a/COCO_Evaluation.ipynb +++ b/COCO_Evaluation.ipynb @@ -8,7 +8,7 @@ "provenance": [], "collapsed_sections": [], "toc_visible": true, - "authorship_tag": "ABX9TyPra04wTh99LSRE7k5vNE8f", + "authorship_tag": "ABX9TyPjg5f7zwfebGhai91U15pb", "include_colab_link": true }, "kernelspec": { @@ -42,7 +42,7 @@ " View source on github\n", " \n", "\n", - " \n", + " \n", " Run in Google Colab\n", "" ] From 3cc242c1ab615cc01770f37e8c87cdbf918e561d Mon Sep 17 00:00:00 2001 From: DHRUV BANSAL Date: Mon, 15 Feb 2021 14:46:08 +0530 Subject: [PATCH 05/10] Update COCO_Evaluation.ipynb --- COCO_Evaluation.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/COCO_Evaluation.ipynb b/COCO_Evaluation.ipynb index 78c9861a7..ca2e07f50 100644 --- a/COCO_Evaluation.ipynb +++ b/COCO_Evaluation.ipynb @@ -33,7 +33,7 @@ "id": "ANIjJa0SskDI" }, "source": [ - "# EfficientDet Tutorial: inference, eval, and training \n", + "# EfficientDet Evaluation \n", "\n", "\n", "\n", @@ -573,4 +573,4 @@ "outputs": [] } ] -} \ No newline at end of file +} From 352446f8af00989ee9e04372c1a314f0c4a91519 Mon Sep 17 00:00:00 2001 From: DHRUV BANSAL Date: Mon, 15 Feb 2021 14:47:19 +0530 Subject: [PATCH 06/10] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index eb3b0b9d1..3476331cc 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ # Brain AutoML This repository contains a list of AutoML related models and libraries. +COCO_Evaluation.ipynb is the edited file for coco validation dataset evaluation From bfb5490dbc2ad365295e46ea5fe00b985a1ea4fe Mon Sep 17 00:00:00 2001 From: DHRUV BANSAL Date: Mon, 15 Feb 2021 14:47:38 +0530 Subject: [PATCH 07/10] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3476331cc..b63349fb7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ # Brain AutoML This repository contains a list of AutoML related models and libraries. -COCO_Evaluation.ipynb is the edited file for coco validation dataset evaluation +"\n" COCO_Evaluation.ipynb is the edited file for coco validation dataset evaluation From 17247a4efa6b38d4eac30ff0daf5022be0a9a5f1 Mon Sep 17 00:00:00 2001 From: DHRUV BANSAL Date: Mon, 15 Feb 2021 14:47:55 +0530 Subject: [PATCH 08/10] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b63349fb7..a45ed184a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ # Brain AutoML This repository contains a list of AutoML related models and libraries. -"\n" COCO_Evaluation.ipynb is the edited file for coco validation dataset evaluation + + +COCO_Evaluation.ipynb is the edited file for coco validation dataset evaluation From 355e4ed7b72368df67bc60ccf75c726dcf7492c0 Mon Sep 17 00:00:00 2001 From: DHRUV BANSAL Date: Fri, 19 Feb 2021 12:02:48 +0530 Subject: [PATCH 09/10] Add files via upload This contains the flow of how to evaluate DETR models on COCO dataset --- Evaluation_DETR.ipynb | 299 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 299 insertions(+) create mode 100644 Evaluation_DETR.ipynb diff --git a/Evaluation_DETR.ipynb b/Evaluation_DETR.ipynb new file mode 100644 index 000000000..da40a0745 --- /dev/null +++ b/Evaluation_DETR.ipynb @@ -0,0 +1,299 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "Evaluation_DETR.ipynb", + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "accelerator": "GPU" + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "40eerXBw-y1k" + }, + "source": [ + "
\n", + " \n", + " View source on github\n", + " \n", + "\n", + " \n", + " Run in Google Colab\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "kVHSajq37ANN" + }, + "source": [ + "## Clone the github repository for the DETR and install other dependencies" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "EFhyWR-3HBeg" + }, + "source": [ + "!git clone https://github.com/facebookresearch/detr.git" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "SEk86t1aHJsr" + }, + "source": [ + "!pip install cython scipy" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "g8-6FklzHNPj" + }, + "source": [ + "!pip install -U 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "lTVVENnG7xfX" + }, + "source": [ + "## Setting up the Directory\n", + "(Either use the following code from the terminal in your wokrspace directory or make the directory in the way shown at the last first)" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "uVsrNn1771iW" + }, + "source": [ + "!mkdir path" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "loGV5Zo473hK" + }, + "source": [ + "cd path" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "0FXDs72-74q0" + }, + "source": [ + "!mkdir to" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "3vs8-5vn76Ej" + }, + "source": [ + "cd to" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "E9HdTgsH766N" + }, + "source": [ + "!mkdir coco" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "yUgxqsaJ781k" + }, + "source": [ + "cd coco" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HSGYxfEo8SRB" + }, + "source": [ + "Path formed will be in case of google colab : \"/content/path/to/coco\"\n", + "For personal machine: \"./path/to/coco\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Eo5zPVQ27JUT" + }, + "source": [ + "## Preparing the dataset" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "NxxKioTt7NU-" + }, + "source": [ + "!wget http://images.cocodataset.org/zips/train2017.zip" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "sJ8VA8Wy7lYY" + }, + "source": [ + "!wget http://images.cocodataset.org/zips/val2017.zip" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "eaGKEkoF7uCB" + }, + "source": [ + "!wget http://images.cocodataset.org/annotations/annotations_trainval2017.zip" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "2zPz_a368QqN" + }, + "source": [ + "!unzip /content/path/to/coco/train2017.zip\n", + "!unzip /content/path/to/coco/val2017.zip\n", + "!unzip /content/path/to/coco/annotation_trainval2017.zip" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "U9sdUgtR8z0C" + }, + "source": [ + "You can delete the zipped files after unzipping them" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "l3l_2lCn88LY" + }, + "source": [ + "Make sure to change the directory back to the cloned repository before running the following command which will be \"/content/detr\" in case of google colab and \"./detr\" in case of your personal machine" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2ANPdttf1ouU" + }, + "source": [ + "## Models provided by Facebook AI:\n", + "1. https://dl.fbaipublicfiles.com/detr/detr-r50-e632da11.pth (FOR DETR-R50)\n", + "\n", + "2. https://dl.fbaipublicfiles.com/detr/detr-r50-dc5-f0fb7ef5.pth (FOR DETR-R50-DC5)\n", + "\n", + "3. https://dl.fbaipublicfiles.com/detr/detr-r101-2c7b67e5.pth (FOR DETR-R101)\n", + "\n", + "4. https://dl.fbaipublicfiles.com/detr/detr-r101-dc5-a2e86def.pth FOR DETR_R101-DC5)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ortqIgK33U8N" + }, + "source": [ + "For changing the model choosen for evaluation we can change the link below with four of the folowing mentioned above." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "bhwA3pwZJJaY" + }, + "source": [ + "!python main.py --batch_size 2 --no_aux_loss --eval --resume https://dl.fbaipublicfiles.com/detr/detr-r50-e632da11.pth --coco_path /content/path/to/coco" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "JqWjRw1b35fK" + }, + "source": [ + "Below is shown how the data should be kept for running the above code" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NRLWle_o30WF" + }, + "source": [ + "![Screenshot from 2021-02-18 18-55-22.png](data:image/png;base64,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)" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "AMDCSAAf346K" + }, + "source": [ + "" + ], + "execution_count": null, + "outputs": [] + } + ] +} \ No newline at end of file From ef9e3ec5d40d5edad0e654fceb81b8f710c13e62 Mon Sep 17 00:00:00 2001 From: DHRUV BANSAL Date: Fri, 19 Feb 2021 12:03:06 +0530 Subject: [PATCH 10/10] Delete Evaluation_DETR.ipynb --- Evaluation_DETR.ipynb | 299 ------------------------------------------ 1 file changed, 299 deletions(-) delete mode 100644 Evaluation_DETR.ipynb diff --git a/Evaluation_DETR.ipynb b/Evaluation_DETR.ipynb deleted file mode 100644 index da40a0745..000000000 --- a/Evaluation_DETR.ipynb +++ /dev/null @@ -1,299 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "Evaluation_DETR.ipynb", - "provenance": [] - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "accelerator": "GPU" - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "40eerXBw-y1k" - }, - "source": [ - "
\n", - " \n", - " View source on github\n", - " \n", - "\n", - " \n", - " Run in Google Colab\n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "kVHSajq37ANN" - }, - "source": [ - "## Clone the github repository for the DETR and install other dependencies" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "EFhyWR-3HBeg" - }, - "source": [ - "!git clone https://github.com/facebookresearch/detr.git" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "SEk86t1aHJsr" - }, - "source": [ - "!pip install cython scipy" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "g8-6FklzHNPj" - }, - "source": [ - "!pip install -U 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "lTVVENnG7xfX" - }, - "source": [ - "## Setting up the Directory\n", - "(Either use the following code from the terminal in your wokrspace directory or make the directory in the way shown at the last first)" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "uVsrNn1771iW" - }, - "source": [ - "!mkdir path" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "loGV5Zo473hK" - }, - "source": [ - "cd path" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "0FXDs72-74q0" - }, - "source": [ - "!mkdir to" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "3vs8-5vn76Ej" - }, - "source": [ - "cd to" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "E9HdTgsH766N" - }, - "source": [ - "!mkdir coco" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "yUgxqsaJ781k" - }, - "source": [ - "cd coco" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "HSGYxfEo8SRB" - }, - "source": [ - "Path formed will be in case of google colab : \"/content/path/to/coco\"\n", - "For personal machine: \"./path/to/coco\"" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Eo5zPVQ27JUT" - }, - "source": [ - "## Preparing the dataset" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "NxxKioTt7NU-" - }, - "source": [ - "!wget http://images.cocodataset.org/zips/train2017.zip" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "sJ8VA8Wy7lYY" - }, - "source": [ - "!wget http://images.cocodataset.org/zips/val2017.zip" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "eaGKEkoF7uCB" - }, - "source": [ - "!wget http://images.cocodataset.org/annotations/annotations_trainval2017.zip" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "2zPz_a368QqN" - }, - "source": [ - "!unzip /content/path/to/coco/train2017.zip\n", - "!unzip /content/path/to/coco/val2017.zip\n", - "!unzip /content/path/to/coco/annotation_trainval2017.zip" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "U9sdUgtR8z0C" - }, - "source": [ - "You can delete the zipped files after unzipping them" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "l3l_2lCn88LY" - }, - "source": [ - "Make sure to change the directory back to the cloned repository before running the following command which will be \"/content/detr\" in case of google colab and \"./detr\" in case of your personal machine" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "2ANPdttf1ouU" - }, - "source": [ - "## Models provided by Facebook AI:\n", - "1. https://dl.fbaipublicfiles.com/detr/detr-r50-e632da11.pth (FOR DETR-R50)\n", - "\n", - "2. https://dl.fbaipublicfiles.com/detr/detr-r50-dc5-f0fb7ef5.pth (FOR DETR-R50-DC5)\n", - "\n", - "3. https://dl.fbaipublicfiles.com/detr/detr-r101-2c7b67e5.pth (FOR DETR-R101)\n", - "\n", - "4. https://dl.fbaipublicfiles.com/detr/detr-r101-dc5-a2e86def.pth FOR DETR_R101-DC5)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ortqIgK33U8N" - }, - "source": [ - "For changing the model choosen for evaluation we can change the link below with four of the folowing mentioned above." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "bhwA3pwZJJaY" - }, - "source": [ - "!python main.py --batch_size 2 --no_aux_loss --eval --resume https://dl.fbaipublicfiles.com/detr/detr-r50-e632da11.pth --coco_path /content/path/to/coco" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "JqWjRw1b35fK" - }, - "source": [ - "Below is shown how the data should be kept for running the above code" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "NRLWle_o30WF" - }, - "source": [ - "![Screenshot from 2021-02-18 18-55-22.png](data:image/png;base64,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)" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "AMDCSAAf346K" - }, - "source": [ - "" - ], - "execution_count": null, - "outputs": [] - } - ] -} \ No newline at end of file