[net]
# Testing
#batch=1
#subdivisions=1
# Training
batch=64
subdivisions=8
width=512
height=512
channels=3
momentum=0.949
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1

learning_rate=0.00261
burn_in=1000
max_batches = 500500
policy=steps
steps=400000,450000
scales=.1,.1

#cutmix=1
mosaic=1


# ============ Backbone ============ #

# Stem 

# 0
[convolutional]
batch_normalize=1
filters=32
size=3
stride=1
pad=1
activation=mish

# P1

# Downsample

[convolutional]
batch_normalize=1
filters=80
size=3
stride=2
pad=1
activation=mish

# Residual Block

[convolutional]
batch_normalize=1
filters=40
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=80
size=3
stride=1
pad=1
activation=mish

# 4 (previous+1+3k)
[shortcut]
from=-3
activation=linear

# P2

# Downsample

[convolutional]
batch_normalize=1
filters=160
size=3
stride=2
pad=1
activation=mish

# Split

[convolutional]
batch_normalize=1
filters=80
size=1
stride=1
pad=1
activation=mish

[route]
layers = -2

[convolutional]
batch_normalize=1
filters=80
size=1
stride=1
pad=1
activation=mish

# Residual Block

[convolutional]
batch_normalize=1
filters=80
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=80
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=80
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=80
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=80
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=80
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

# Transition first

[convolutional]
batch_normalize=1
filters=80
size=1
stride=1
pad=1
activation=mish

# Merge [-1, -(3k+4)]

[route]
layers = -1,-13

# Transition last

# 20 (previous+7+3k)
[convolutional]
batch_normalize=1
filters=160
size=1
stride=1
pad=1
activation=mish

# P3

# Downsample

[convolutional]
batch_normalize=1
filters=320
size=3
stride=2
pad=1
activation=mish

# Split

[convolutional]
batch_normalize=1
filters=160
size=1
stride=1
pad=1
activation=mish

[route]
layers = -2

[convolutional]
batch_normalize=1
filters=160
size=1
stride=1
pad=1
activation=mish

# Residual Block

[convolutional]
batch_normalize=1
filters=160
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=160
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=160
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=160
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=160
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=160
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=160
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=160
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=160
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=160
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=160
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=160
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=160
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=160
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=160
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=160
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=160
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=160
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=160
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=160
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

# Transition first

[convolutional]
batch_normalize=1
filters=160
size=1
stride=1
pad=1
activation=mish

# Merge [-1 -(4+3k)]

[route]
layers = -1,-34

# Transition last

# 57 (previous+7+3k)
[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

# P4

# Downsample

[convolutional]
batch_normalize=1
filters=640
size=3
stride=2
pad=1
activation=mish

# Split

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

[route]
layers = -2

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

# Residual Block

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=320
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=320
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=320
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=320
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=320
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=320
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=320
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=320
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=320
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=320
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

# Transition first

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

# Merge [-1 -(3k+4)]

[route]
layers = -1,-34

# Transition last

# 94 (previous+7+3k)
[convolutional]
batch_normalize=1
filters=640
size=1
stride=1
pad=1
activation=mish

# P5

# Downsample

[convolutional]
batch_normalize=1
filters=1280
size=3
stride=2
pad=1
activation=mish

# Split

[convolutional]
batch_normalize=1
filters=640
size=1
stride=1
pad=1
activation=mish

[route]
layers = -2

[convolutional]
batch_normalize=1
filters=640
size=1
stride=1
pad=1
activation=mish

# Residual Block

[convolutional]
batch_normalize=1
filters=640
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=640
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=640
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=640
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=640
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=640
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=640
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=640
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

[convolutional]
batch_normalize=1
filters=640
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
filters=640
size=3
stride=1
pad=1
activation=mish

[shortcut]
from=-3
activation=linear

# Transition first

[convolutional]
batch_normalize=1
filters=640
size=1
stride=1
pad=1
activation=mish

# Merge [-1 -(3k+4)]

[route]
layers = -1,-19

# Transition last

# 116 (previous+7+3k)
[convolutional]
batch_normalize=1
filters=1280
size=1
stride=1
pad=1
activation=mish

# ============ End of Backbone ============ #

# ============ Neck ============ #

# CSPSPP

[convolutional]
batch_normalize=1
filters=640
size=1
stride=1
pad=1
activation=mish

[route]
layers = -2

[convolutional]
batch_normalize=1
filters=640
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=640
activation=mish

[convolutional]
batch_normalize=1
filters=640
size=1
stride=1
pad=1
activation=mish

### SPP ###
[maxpool]
stride=1
size=5

[route]
layers=-2

[maxpool]
stride=1
size=9

[route]
layers=-4

[maxpool]
stride=1
size=13

[route]
layers=-1,-3,-5,-6
### End SPP ###

[convolutional]
batch_normalize=1
filters=640
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=640
activation=mish

[convolutional]
batch_normalize=1
filters=640
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=640
activation=mish

[route]
layers = -1, -15

# 133 (previous+6+5+2k)
[convolutional]
batch_normalize=1
filters=640
size=1
stride=1
pad=1
activation=mish

# End of CSPSPP


# FPN-4

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

[upsample]
stride=2

[route]
layers = 94

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

[route]
layers = -1, -3

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

# Split

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

[route]
layers = -2

# Plain Block

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=320
activation=mish

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=320
activation=mish

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=320
activation=mish

# Merge [-1, -(2k+2)]

[route]
layers = -1, -8

# Transition last

# 149 (previous+6+4+2k)
[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish


# FPN-3

[convolutional]
batch_normalize=1
filters=160
size=1
stride=1
pad=1
activation=mish

[upsample]
stride=2

[route]
layers = 57

[convolutional]
batch_normalize=1
filters=160
size=1
stride=1
pad=1
activation=mish

[route]
layers = -1, -3

[convolutional]
batch_normalize=1
filters=160
size=1
stride=1
pad=1
activation=mish

# Split

[convolutional]
batch_normalize=1
filters=160
size=1
stride=1
pad=1
activation=mish

[route]
layers = -2

# Plain Block

[convolutional]
batch_normalize=1
filters=160
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=160
activation=mish

[convolutional]
batch_normalize=1
filters=160
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=160
activation=mish

[convolutional]
batch_normalize=1
filters=160
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=160
activation=mish

# Merge [-1, -(2k+2)]

[route]
layers = -1, -8

# Transition last

# 165 (previous+6+4+2k)
[convolutional]
batch_normalize=1
filters=160
size=1
stride=1
pad=1
activation=mish


# PAN-4

[convolutional]
batch_normalize=1
size=3
stride=2
pad=1
filters=320
activation=mish

[route]
layers = -1, 149

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

# Split

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

[route]
layers = -2

# Plain Block

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=320
activation=mish

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=320
activation=mish

[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=320
activation=mish

[route]
layers = -1,-8

# Transition last

# 178 (previous+3+4+2k)
[convolutional]
batch_normalize=1
filters=320
size=1
stride=1
pad=1
activation=mish


# PAN-5

[convolutional]
batch_normalize=1
size=3
stride=2
pad=1
filters=640
activation=mish

[route]
layers = -1, 133

[convolutional]
batch_normalize=1
filters=640
size=1
stride=1
pad=1
activation=mish

# Split

[convolutional]
batch_normalize=1
filters=640
size=1
stride=1
pad=1
activation=mish

[route]
layers = -2

# Plain Block

[convolutional]
batch_normalize=1
filters=640
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=640
activation=mish

[convolutional]
batch_normalize=1
filters=640
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=640
activation=mish

[convolutional]
batch_normalize=1
filters=640
size=1
stride=1
pad=1
activation=mish

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=640
activation=mish

[route]
layers = -1,-8

# Transition last

# 191 (previous+3+4+2k)
[convolutional]
batch_normalize=1
filters=640
size=1
stride=1
pad=1
activation=mish

# ============ End of Neck ============ #

# ============ Head ============ #

# YOLO-3

[route]
layers = 165

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=320
activation=mish

[convolutional]
size=1
stride=1
pad=1
filters=255
activation=linear

[yolo]
mask = 0,1,2
anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401
classes=80
num=9
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1
scale_x_y = 1.05
iou_thresh=0.213
cls_normalizer=1.0
iou_normalizer=0.07
iou_loss=ciou
nms_kind=greedynms
beta_nms=0.6


# YOLO-4

[route]
layers = 178

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=640
activation=mish

[convolutional]
size=1
stride=1
pad=1
filters=255
activation=linear

[yolo]
mask = 3,4,5
anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401
classes=80
num=9
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1
scale_x_y = 1.05
iou_thresh=0.213
cls_normalizer=1.0
iou_normalizer=0.07
iou_loss=ciou
nms_kind=greedynms
beta_nms=0.6


# YOLO-5

[route]
layers = 191

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=1280
activation=mish

[convolutional]
size=1
stride=1
pad=1
filters=255
activation=linear

[yolo]
mask = 6,7,8
anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401
classes=80
num=9
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1
scale_x_y = 1.05
iou_thresh=0.213
cls_normalizer=1.0
iou_normalizer=0.07
iou_loss=ciou
nms_kind=greedynms
beta_nms=0.6