YOLOv5 Forward Compatibility Update (#1569)

* YOLOv5 forward compatibility update

* add data dir

* ci test yolov3

* update build_targets()

* update build_targets()

* update build_targets()

* update yolov3-spp.yaml

* add yolov3-tiny.yaml

* add yolov3-tiny.yaml

* Update yolov3-tiny.yaml

* thop bug fix

* Detection() device bug fix

* Use torchvision.ops.nms()

* Remove redundant download mirror

* CI tests with yolov3-tiny

* Update README.md

* Synch train and test iou_thresh

* update requirements.txt

* Cat apriori autolabels

* Confusion matrix

* Autosplit

* Autosplit

* Update README.md

* AP no plot

* Update caching

* Update caching

* Caching bug fix

* --image-weights bug fix

* datasets bug fix

* mosaic plots bug fix

* plot_study

* boxes.max()

* boxes.max()

* boxes.max()

* boxes.max()

* boxes.max()

* boxes.max()

* update

* Update README

* Update README

* Update README.md

* Update README.md

* results png

* Update README

* Targets scaling bug fix

* update plot_study

* update plot_study

* update plot_study

* update plot_study

* Targets scaling bug fix

* Finish Readme.md

* Finish Readme.md

* Finish Readme.md

* Update README.md

* Creado con Colaboratory
This commit is contained in:
Glenn Jocher
2020-11-26 20:24:00 +01:00
committed by GitHub
parent 98068efebc
commit 76807fae71
87 changed files with 5613 additions and 18673 deletions
-80
View File
@@ -1,80 +0,0 @@
person
bicycle
car
motorcycle
airplane
bus
train
truck
boat
traffic light
fire hydrant
stop sign
parking meter
bench
bird
cat
dog
horse
sheep
cow
elephant
bear
zebra
giraffe
backpack
umbrella
handbag
tie
suitcase
frisbee
skis
snowboard
sports ball
kite
baseball bat
baseball glove
skateboard
surfboard
tennis racket
bottle
wine glass
cup
fork
knife
spoon
bowl
banana
apple
sandwich
orange
broccoli
carrot
hot dog
pizza
donut
cake
chair
couch
potted plant
bed
dining table
toilet
tv
laptop
mouse
remote
keyboard
cell phone
microwave
oven
toaster
sink
refrigerator
book
clock
vase
scissors
teddy bear
hair drier
toothbrush
+35
View File
@@ -0,0 +1,35 @@
# COCO 2017 dataset http://cocodataset.org
# Train command: python train.py --data coco.yaml
# Default dataset location is next to /yolov3:
# /parent_folder
# /coco
# /yolov3
# download command/URL (optional)
download: bash data/scripts/get_coco.sh
# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
train: ../coco/train2017.txt # 118287 images
val: ../coco/val2017.txt # 5000 images
test: ../coco/test-dev2017.txt # 20288 of 40670 images, submit to https://competitions.codalab.org/competitions/20794
# number of classes
nc: 80
# class names
names: ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light',
'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow',
'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee',
'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard',
'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple',
'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch',
'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone',
'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear',
'hair drier', 'toothbrush']
# Print classes
# with open('data/coco.yaml') as f:
# d = yaml.load(f, Loader=yaml.FullLoader) # dict
# for i, x in enumerate(d['names']):
# print(i, x)
-4
View File
@@ -1,4 +0,0 @@
classes=80
train=data/coco1.txt
valid=data/coco1.txt
names=data/coco.names
-1
View File
@@ -1 +0,0 @@
../coco/images/train2017/000000109622.jpg
+28
View File
@@ -0,0 +1,28 @@
# COCO 2017 dataset http://cocodataset.org - first 128 training images
# Train command: python train.py --data coco128.yaml
# Default dataset location is next to /yolov3:
# /parent_folder
# /coco128
# /yolov3
# download command/URL (optional)
download: https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip
# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
train: ../coco128/images/train2017/ # 128 images
val: ../coco128/images/train2017/ # 128 images
# number of classes
nc: 80
# class names
names: ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light',
'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow',
'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee',
'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard',
'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple',
'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch',
'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone',
'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear',
'hair drier', 'toothbrush']
-4
View File
@@ -1,4 +0,0 @@
classes=80
train=data/coco16.txt
valid=data/coco16.txt
names=data/coco.names
-16
View File
@@ -1,16 +0,0 @@
../coco/images/train2017/000000109622.jpg
../coco/images/train2017/000000160694.jpg
../coco/images/train2017/000000308590.jpg
../coco/images/train2017/000000327573.jpg
../coco/images/train2017/000000062929.jpg
../coco/images/train2017/000000512793.jpg
../coco/images/train2017/000000371735.jpg
../coco/images/train2017/000000148118.jpg
../coco/images/train2017/000000309856.jpg
../coco/images/train2017/000000141882.jpg
../coco/images/train2017/000000318783.jpg
../coco/images/train2017/000000337760.jpg
../coco/images/train2017/000000298197.jpg
../coco/images/train2017/000000042421.jpg
../coco/images/train2017/000000328898.jpg
../coco/images/train2017/000000458856.jpg
-4
View File
@@ -1,4 +0,0 @@
classes=1
train=data/coco1cls.txt
valid=data/coco1cls.txt
names=data/coco.names
-16
View File
@@ -1,16 +0,0 @@
../coco/images/train2017/000000000901.jpg
../coco/images/train2017/000000001464.jpg
../coco/images/train2017/000000003220.jpg
../coco/images/train2017/000000003365.jpg
../coco/images/train2017/000000004772.jpg
../coco/images/train2017/000000009987.jpg
../coco/images/train2017/000000010498.jpg
../coco/images/train2017/000000012455.jpg
../coco/images/train2017/000000013992.jpg
../coco/images/train2017/000000014125.jpg
../coco/images/train2017/000000016314.jpg
../coco/images/train2017/000000016670.jpg
../coco/images/train2017/000000018412.jpg
../coco/images/train2017/000000021212.jpg
../coco/images/train2017/000000021826.jpg
../coco/images/train2017/000000030566.jpg
-4
View File
@@ -1,4 +0,0 @@
classes=80
train=../coco/trainvalno5k.txt
valid=../coco/5k.txt
names=data/coco.names
-4
View File
@@ -1,4 +0,0 @@
classes=80
train=../coco/train2017.txt
valid=../coco/val2017.txt
names=data/coco.names
-4
View File
@@ -1,4 +0,0 @@
classes=80
train=data/coco64.txt
valid=data/coco64.txt
names=data/coco.names
-64
View File
@@ -1,64 +0,0 @@
../coco/images/train2017/000000109622.jpg
../coco/images/train2017/000000160694.jpg
../coco/images/train2017/000000308590.jpg
../coco/images/train2017/000000327573.jpg
../coco/images/train2017/000000062929.jpg
../coco/images/train2017/000000512793.jpg
../coco/images/train2017/000000371735.jpg
../coco/images/train2017/000000148118.jpg
../coco/images/train2017/000000309856.jpg
../coco/images/train2017/000000141882.jpg
../coco/images/train2017/000000318783.jpg
../coco/images/train2017/000000337760.jpg
../coco/images/train2017/000000298197.jpg
../coco/images/train2017/000000042421.jpg
../coco/images/train2017/000000328898.jpg
../coco/images/train2017/000000458856.jpg
../coco/images/train2017/000000073824.jpg
../coco/images/train2017/000000252846.jpg
../coco/images/train2017/000000459590.jpg
../coco/images/train2017/000000273650.jpg
../coco/images/train2017/000000331311.jpg
../coco/images/train2017/000000156326.jpg
../coco/images/train2017/000000262985.jpg
../coco/images/train2017/000000253580.jpg
../coco/images/train2017/000000447976.jpg
../coco/images/train2017/000000378077.jpg
../coco/images/train2017/000000259913.jpg
../coco/images/train2017/000000424553.jpg
../coco/images/train2017/000000000612.jpg
../coco/images/train2017/000000267625.jpg
../coco/images/train2017/000000566012.jpg
../coco/images/train2017/000000196664.jpg
../coco/images/train2017/000000363331.jpg
../coco/images/train2017/000000057992.jpg
../coco/images/train2017/000000520047.jpg
../coco/images/train2017/000000453903.jpg
../coco/images/train2017/000000162083.jpg
../coco/images/train2017/000000268516.jpg
../coco/images/train2017/000000277436.jpg
../coco/images/train2017/000000189744.jpg
../coco/images/train2017/000000041128.jpg
../coco/images/train2017/000000527728.jpg
../coco/images/train2017/000000465269.jpg
../coco/images/train2017/000000246833.jpg
../coco/images/train2017/000000076784.jpg
../coco/images/train2017/000000323715.jpg
../coco/images/train2017/000000560463.jpg
../coco/images/train2017/000000006263.jpg
../coco/images/train2017/000000094701.jpg
../coco/images/train2017/000000521359.jpg
../coco/images/train2017/000000302903.jpg
../coco/images/train2017/000000047559.jpg
../coco/images/train2017/000000480583.jpg
../coco/images/train2017/000000050025.jpg
../coco/images/train2017/000000084512.jpg
../coco/images/train2017/000000508913.jpg
../coco/images/train2017/000000093708.jpg
../coco/images/train2017/000000070493.jpg
../coco/images/train2017/000000539270.jpg
../coco/images/train2017/000000474402.jpg
../coco/images/train2017/000000209842.jpg
../coco/images/train2017/000000028820.jpg
../coco/images/train2017/000000154257.jpg
../coco/images/train2017/000000342499.jpg
-91
View File
@@ -1,91 +0,0 @@
person
bicycle
car
motorcycle
airplane
bus
train
truck
boat
traffic light
fire hydrant
street sign
stop sign
parking meter
bench
bird
cat
dog
horse
sheep
cow
elephant
bear
zebra
giraffe
hat
backpack
umbrella
shoe
eye glasses
handbag
tie
suitcase
frisbee
skis
snowboard
sports ball
kite
baseball bat
baseball glove
skateboard
surfboard
tennis racket
bottle
plate
wine glass
cup
fork
knife
spoon
bowl
banana
apple
sandwich
orange
broccoli
carrot
hot dog
pizza
donut
cake
chair
couch
potted plant
bed
mirror
dining table
window
desk
toilet
door
tv
laptop
mouse
remote
keyboard
cell phone
microwave
oven
toaster
sink
refrigerator
blender
book
clock
vase
scissors
teddy bear
hair drier
toothbrush
hair brush
-24
View File
@@ -1,24 +0,0 @@
#!/bin/bash
# Zip coco folder
# zip -r coco.zip coco
# tar -czvf coco.tar.gz coco
# Download labels from Google Drive, accepting presented query
filename="coco2014labels.zip"
fileid="1s6-CmF5_SElM28r52P1OUrCcuXZN-SFo"
curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" >/dev/null
curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=$(awk '/download/ {print $NF}' ./cookie)&id=${fileid}" -o ${filename}
rm ./cookie
# Unzip labels
unzip -q ${filename} # for coco.zip
# tar -xzf ${filename} # for coco.tar.gz
rm ${filename}
# Download and unzip images
cd coco/images
f="train2014.zip" && curl http://images.cocodataset.org/zips/$f -o $f && unzip -q $f && rm $f
f="val2014.zip" && curl http://images.cocodataset.org/zips/$f -o $f && unzip -q $f && rm $f
# cd out
cd ../..
-24
View File
@@ -1,24 +0,0 @@
#!/bin/bash
# Zip coco folder
# zip -r coco.zip coco
# tar -czvf coco.tar.gz coco
# Download labels from Google Drive, accepting presented query
filename="coco2017labels.zip"
fileid="1cXZR_ckHki6nddOmcysCuuJFM--T-Q6L"
curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" >/dev/null
curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=$(awk '/download/ {print $NF}' ./cookie)&id=${fileid}" -o ${filename}
rm ./cookie
# Unzip labels
unzip -q ${filename} # for coco.zip
# tar -xzf ${filename} # for coco.tar.gz
rm ${filename}
# Download and unzip images
cd coco/images
f="train2017.zip" && curl http://images.cocodataset.org/zips/$f -o $f && unzip -q $f && rm $f
f="val2017.zip" && curl http://images.cocodataset.org/zips/$f -o $f && unzip -q $f && rm $f
# cd out
cd ../..
+38
View File
@@ -0,0 +1,38 @@
# Hyperparameters for VOC finetuning
# python train.py --batch 64 --weights yolov5m.pt --data voc.yaml --img 512 --epochs 50
# See tutorials for hyperparameter evolution https://github.com/ultralytics/yolov5#tutorials
# Hyperparameter Evolution Results
# Generations: 306
# P R mAP.5 mAP.5:.95 box obj cls
# Metrics: 0.6 0.936 0.896 0.684 0.0115 0.00805 0.00146
lr0: 0.0032
lrf: 0.12
momentum: 0.843
weight_decay: 0.00036
warmup_epochs: 2.0
warmup_momentum: 0.5
warmup_bias_lr: 0.05
box: 0.0296
cls: 0.243
cls_pw: 0.631
obj: 0.301
obj_pw: 0.911
iou_t: 0.2
anchor_t: 2.91
# anchors: 3.63
fl_gamma: 0.0
hsv_h: 0.0138
hsv_s: 0.664
hsv_v: 0.464
degrees: 0.373
translate: 0.245
scale: 0.898
shear: 0.602
perspective: 0.0
flipud: 0.00856
fliplr: 0.5
mosaic: 1.0
mixup: 0.243
+33
View File
@@ -0,0 +1,33 @@
# Hyperparameters for COCO training from scratch
# python train.py --batch 40 --cfg yolov5m.yaml --weights '' --data coco.yaml --img 640 --epochs 300
# See tutorials for hyperparameter evolution https://github.com/ultralytics/yolov5#tutorials
lr0: 0.01 # initial learning rate (SGD=1E-2, Adam=1E-3)
lrf: 0.2 # final OneCycleLR learning rate (lr0 * lrf)
momentum: 0.937 # SGD momentum/Adam beta1
weight_decay: 0.0005 # optimizer weight decay 5e-4
warmup_epochs: 3.0 # warmup epochs (fractions ok)
warmup_momentum: 0.8 # warmup initial momentum
warmup_bias_lr: 0.1 # warmup initial bias lr
box: 0.05 # box loss gain
cls: 0.5 # cls loss gain
cls_pw: 1.0 # cls BCELoss positive_weight
obj: 1.0 # obj loss gain (scale with pixels)
obj_pw: 1.0 # obj BCELoss positive_weight
iou_t: 0.20 # IoU training threshold
anchor_t: 4.0 # anchor-multiple threshold
# anchors: 3 # anchors per output layer (0 to ignore)
fl_gamma: 0.0 # focal loss gamma (efficientDet default gamma=1.5)
hsv_h: 0.015 # image HSV-Hue augmentation (fraction)
hsv_s: 0.7 # image HSV-Saturation augmentation (fraction)
hsv_v: 0.4 # image HSV-Value augmentation (fraction)
degrees: 0.0 # image rotation (+/- deg)
translate: 0.1 # image translation (+/- fraction)
scale: 0.5 # image scale (+/- gain)
shear: 0.0 # image shear (+/- deg)
perspective: 0.0 # image perspective (+/- fraction), range 0-0.001
flipud: 0.0 # image flip up-down (probability)
fliplr: 0.5 # image flip left-right (probability)
mosaic: 1.0 # image mosaic (probability)
mixup: 0.0 # image mixup (probability)

Before

Width:  |  Height:  |  Size: 476 KiB

After

Width:  |  Height:  |  Size: 476 KiB

Before

Width:  |  Height:  |  Size: 165 KiB

After

Width:  |  Height:  |  Size: 165 KiB

+24
View File
@@ -0,0 +1,24 @@
#!/bin/bash
# COCO 2017 dataset http://cocodataset.org
# Download command: bash data/scripts/get_coco.sh
# Train command: python train.py --data coco.yaml
# Default dataset location is next to /yolov3:
# /parent_folder
# /coco
# /yolov3
# Download/unzip labels
d='../' # unzip directory
url=https://github.com/ultralytics/yolov5/releases/download/v1.0/
f='coco2017labels.zip' # 68 MB
echo 'Downloading' $url$f ' ...' && curl -L $url$f -o $f && unzip -q $f -d $d && rm $f # download, unzip, remove
# Download/unzip images
d='../coco/images' # unzip directory
url=http://images.cocodataset.org/zips/
f1='train2017.zip' # 19G, 118k images
f2='val2017.zip' # 1G, 5k images
f3='test2017.zip' # 7G, 41k images (optional)
for f in $f1 $f2; do
echo 'Downloading' $url$f ' ...' && curl -L $url$f -o $f && unzip -q $f -d $d && rm $f # download, unzip, remove
done
+137
View File
@@ -0,0 +1,137 @@
#!/bin/bash
# PASCAL VOC dataset http://host.robots.ox.ac.uk/pascal/VOC/
# Download command: bash data/scripts/get_voc.sh
# Train command: python train.py --data voc.yaml
# Default dataset location is next to /yolov5:
# /parent_folder
# /VOC
# /yolov5
start=$(date +%s)
mkdir -p ../tmp
cd ../tmp/
# Download/unzip images and labels
d='.' # unzip directory
url=https://github.com/ultralytics/yolov5/releases/download/v1.0/
f1=VOCtrainval_06-Nov-2007.zip # 446MB, 5012 images
f2=VOCtest_06-Nov-2007.zip # 438MB, 4953 images
f3=VOCtrainval_11-May-2012.zip # 1.95GB, 17126 images
for f in $f1 $f2 $f3; do
echo 'Downloading' $url$f ' ...' && curl -L $url$f -o $f && unzip -q $f -d $d && rm $f # download, unzip, remove
done
end=$(date +%s)
runtime=$((end - start))
echo "Completed in" $runtime "seconds"
echo "Splitting dataset..."
python3 - "$@" <<END
import xml.etree.ElementTree as ET
import pickle
import os
from os import listdir, getcwd
from os.path import join
sets=[('2012', 'train'), ('2012', 'val'), ('2007', 'train'), ('2007', 'val'), ('2007', 'test')]
classes = ["aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow", "diningtable", "dog", "horse", "motorbike", "person", "pottedplant", "sheep", "sofa", "train", "tvmonitor"]
def convert(size, box):
dw = 1./(size[0])
dh = 1./(size[1])
x = (box[0] + box[1])/2.0 - 1
y = (box[2] + box[3])/2.0 - 1
w = box[1] - box[0]
h = box[3] - box[2]
x = x*dw
w = w*dw
y = y*dh
h = h*dh
return (x,y,w,h)
def convert_annotation(year, image_id):
in_file = open('VOCdevkit/VOC%s/Annotations/%s.xml'%(year, image_id))
out_file = open('VOCdevkit/VOC%s/labels/%s.txt'%(year, image_id), 'w')
tree=ET.parse(in_file)
root = tree.getroot()
size = root.find('size')
w = int(size.find('width').text)
h = int(size.find('height').text)
for obj in root.iter('object'):
difficult = obj.find('difficult').text
cls = obj.find('name').text
if cls not in classes or int(difficult)==1:
continue
cls_id = classes.index(cls)
xmlbox = obj.find('bndbox')
b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text), float(xmlbox.find('ymax').text))
bb = convert((w,h), b)
out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')
wd = getcwd()
for year, image_set in sets:
if not os.path.exists('VOCdevkit/VOC%s/labels/'%(year)):
os.makedirs('VOCdevkit/VOC%s/labels/'%(year))
image_ids = open('VOCdevkit/VOC%s/ImageSets/Main/%s.txt'%(year, image_set)).read().strip().split()
list_file = open('%s_%s.txt'%(year, image_set), 'w')
for image_id in image_ids:
list_file.write('%s/VOCdevkit/VOC%s/JPEGImages/%s.jpg\n'%(wd, year, image_id))
convert_annotation(year, image_id)
list_file.close()
END
cat 2007_train.txt 2007_val.txt 2012_train.txt 2012_val.txt >train.txt
cat 2007_train.txt 2007_val.txt 2007_test.txt 2012_train.txt 2012_val.txt >train.all.txt
python3 - "$@" <<END
import shutil
import os
os.system('mkdir ../VOC/')
os.system('mkdir ../VOC/images')
os.system('mkdir ../VOC/images/train')
os.system('mkdir ../VOC/images/val')
os.system('mkdir ../VOC/labels')
os.system('mkdir ../VOC/labels/train')
os.system('mkdir ../VOC/labels/val')
import os
print(os.path.exists('../tmp/train.txt'))
f = open('../tmp/train.txt', 'r')
lines = f.readlines()
for line in lines:
line = "/".join(line.split('/')[-5:]).strip()
if (os.path.exists("../" + line)):
os.system("cp ../"+ line + " ../VOC/images/train")
line = line.replace('JPEGImages', 'labels')
line = line.replace('jpg', 'txt')
if (os.path.exists("../" + line)):
os.system("cp ../"+ line + " ../VOC/labels/train")
print(os.path.exists('../tmp/2007_test.txt'))
f = open('../tmp/2007_test.txt', 'r')
lines = f.readlines()
for line in lines:
line = "/".join(line.split('/')[-5:]).strip()
if (os.path.exists("../" + line)):
os.system("cp ../"+ line + " ../VOC/images/val")
line = line.replace('JPEGImages', 'labels')
line = line.replace('jpg', 'txt')
if (os.path.exists("../" + line)):
os.system("cp ../"+ line + " ../VOC/labels/val")
END
rm -rf ../tmp # remove temporary directory
echo "VOC download done."
+21
View File
@@ -0,0 +1,21 @@
# PASCAL VOC dataset http://host.robots.ox.ac.uk/pascal/VOC/
# Train command: python train.py --data voc.yaml
# Default dataset location is next to /yolov3:
# /parent_folder
# /VOC
# /yolov3
# download command/URL (optional)
download: bash data/scripts/get_voc.sh
# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
train: ../VOC/images/train/ # 16551 images
val: ../VOC/images/val/ # 4952 images
# number of classes
nc: 20
# class names
names: ['aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog',
'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor']