Commit dba326cc authored by Vishnu Banna's avatar Vishnu Banna
Browse files

optimization package pr comments

parent 100a716c
......@@ -31,6 +31,5 @@ from official.vision.beta.projects.yolo.tasks import yolo
# import optimization packages
from official.vision.beta.projects.yolo.optimization import optimizer_factory
from official.vision.beta.projects.yolo.optimization.configs import learning_rate_config
from official.vision.beta.projects.yolo.optimization.configs import optimization_config
from official.vision.beta.projects.yolo.optimization.configs import optimizer_config
\ No newline at end of file
runtime:
distribution_strategy: 'mirrored'
mixed_precision_dtype: 'float16'
num_gpus: 1
task:
smart_bias_lr: 0.1
model:
darknet_based_model: True
input_size: [512, 512, 3]
backbone:
type: 'darknet'
darknet:
model_id: 'cspdarknet53'
max_level: 5
min_level: 3
decoder:
type: yolo_decoder
yolo_decoder:
version: v4
type: regular
activation: leaky
head:
smart_bias: true
detection_generator:
box_type:
'all': original
scale_xy:
'5': 1.05
'4': 1.1
'3': 1.2
max_boxes: 200
nms_type: greedy
iou_thresh: 0.25
nms_thresh: 0.45
pre_nms_points: 500
loss:
use_scaled_loss: False
update_on_repeat: False
box_loss_type:
'all': ciou
ignore_thresh:
'all': 0.7
iou_normalizer:
'all': 0.07
cls_normalizer:
'all': 1.0
object_normalizer:
'all': 1.0
objectness_smooth:
'all': 0.0
max_delta:
'all': 5.0
norm_activation:
activation: mish
norm_epsilon: 0.0001
norm_momentum: 0.99
use_sync_bn: true
num_classes: 80
anchor_boxes:
anchors_per_scale: 3
boxes: [box: [12, 16], box: [19, 36], box: [40, 28],
box: [36, 75], box: [76, 55], box: [72, 146],
box: [142, 110], box: [192, 243], box: [459, 401]]
train_data:
global_batch_size: 1
# dtype: float32
input_path: '/media/vbanna/DATA_SHARE/CV/datasets/COCO_raw/records/train*'
# is_training: true
# drop_remainder: true
# seed: 1000
parser:
mosaic:
mosaic_frequency: 1.0
mixup_frequency: 0.0
mosaic_crop_mode: 'scale'
mosaic_center: 0.25
aug_scale_min: 0.1
aug_scale_max: 1.9
max_num_instances: 200
letter_box: True
random_flip: True
aug_rand_translate: 0.1
random_pad: False
validation_data:
# global_batch_size: 1
# dtype: float32
input_path: '/media/vbanna/DATA_SHARE/CV/datasets/COCO_raw/records/val*'
# is_training: false
# drop_remainder: true
# parser:
# max_num_instances: 200
# letter_box: True
# use_tie_breaker: True
# anchor_thresh: 0.213
# weight_decay: 0.000
# init_checkpoint: '../checkpoints/512-wd-baseline-e1'
# init_checkpoint_modules: 'all'
# annotation_file: null
trainer:
optimizer_config:
ema: null
# train_steps: 500500 # 160 epochs at 64 batchsize -> 500500 * 64/2
# validation_steps: 625
# steps_per_loop: 1850
# summary_interval: 1850
# validation_interval: 9250
# checkpoint_interval: 1850
# optimizer_config:
# ema:
# average_decay: 0.9998
# trainable_weights_only: False
# dynamic_decay: True
# learning_rate:
# type: stepwise
# stepwise:
# boundaries: [400000, 450000]
# name: PiecewiseConstantDecay
# values: [0.00131, 0.000131, 0.0000131]
# optimizer:
# type: sgd_torch
# sgd_torch:
# momentum: 0.949
# momentum_start: 0.949
# nesterov: True
# warmup_steps: 1000
# weight_decay: 0.0005
# sim_torch: true
# name: SGD
# warmup:
# type: 'linear'
# linear:
# warmup_steps: 1000 #learning rate rises from 0 to 0.0013 over 1000 steps
......@@ -41,7 +41,7 @@ task:
'all': 0.07
cls_normalizer:
'all': 1.0
object_normalizer:
obj_normalizer:
'all': 1.0
objectness_smooth:
'all': 0.0
......
# Copyright 2021 The TensorFlow Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Dataclasses for learning rate schedule config."""
from typing import List, Optional
import dataclasses
from official.modeling.hyperparams import base_config
# zfrom official.modeling.optimization.configs import learning_rate_config
......@@ -21,9 +21,6 @@ from typing import Optional
import dataclasses
from official.modeling.hyperparams import base_config
from official.modeling.hyperparams import oneof
from official.vision.beta.projects.yolo.optimization.configs import learning_rate_config as lr_cfg
from official.vision.beta.projects.yolo.optimization.configs import optimizer_config as opt_cfg
from official.modeling.optimization.configs import optimization_config as optimization_cfg
......
......@@ -62,11 +62,28 @@ class OptimizerFactory(optimizer_factory.OptimizerFactory):
"""
def get_bias_lr_schedule(self, bias_lr):
"""Used to build additional learning rate schedules."""
temp = self._warmup_config.warmup_learning_rate
self._warmup_config.warmup_learning_rate = bias_lr
lr = self.build_learning_rate()
self._warmup_config.warmup_learning_rate = temp
"""Build learning rate.
Builds learning rate from config. Learning rate schedule is built according
to the learning rate config. If learning rate type is consant,
lr_config.learning_rate is returned.
Returns:
tf.keras.optimizers.schedules.LearningRateSchedule instance. If
learning rate type is consant, lr_config.learning_rate is returned.
"""
if self._lr_type == 'constant':
lr = self._lr_config.learning_rate
else:
lr = LR_CLS[self._lr_type](**self._lr_config.as_dict())
if self._warmup_config:
if self._warmup_type != 'linear':
raise ValueError("Smart Bias is only supported currently with a"
"linear warm up.")
warm_up_cfg = self._warmup_config.as_dict()
warm_up_cfg["warmup_learning_rate"] = bias_lr
lr = WARMUP_CLS['linear'](lr, **warm_up_cfg)
return lr
@gin.configurable
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment