Skip to content

Commit

Permalink
Merge pull request #23 from visionNoob/issue_22
Browse files Browse the repository at this point in the history
Initial Commit (#22)
  • Loading branch information
MijeongJeon authored Oct 8, 2019
2 parents cc027b7 + b9062d8 commit d031e49
Show file tree
Hide file tree
Showing 18 changed files with 183 additions and 0 deletions.
1 change: 1 addition & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# see https://github.com/keras-team/keras
Empty file added ISSUE_TEMPLATE.md
Empty file.
Empty file added LICENSE
Empty file.
49 changes: 49 additions & 0 deletions Untitled.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import keras\n",
"import yolk \n",
"\n",
"voc_train, voc_valid = yolk.datasets.pascal_voc07()\n",
"yolov3 = yolk.models.yolov3()\n",
"\n",
"yolov3.compile(\n",
" loss=yolk.losses.yolov3Loss\n",
" optimizer='adam', metrics=['coco']\n",
" )\n",
" \n",
"yolov3.fit_generator(\n",
" generator=voc_train,\n",
" validation_data=voc_valid,\n",
" epochs=20\n",
")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.9"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Empty file added docker/todo
Empty file.
Empty file added docs/todo
Empty file.
Empty file added examples/todo
Empty file.
Empty file added test/todo
Empty file.
Empty file added yolk/applications/todo
Empty file.
Empty file added yolk/callbacks/todo
Empty file.
Empty file added yolk/datasets/__init__.py
Empty file.
133 changes: 133 additions & 0 deletions yolk/datasets/pascal.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@

def create_generators(args, preprocess_image):
""" Create generators for training and validation.
Args
args : parseargs object containing configuration for generators.
preprocess_image : Function that preprocesses an image for the network.
"""
common_args = {
'batch_size' : args.batch_size,
'config' : args.config,
'image_min_side' : args.image_min_side,
'image_max_side' : args.image_max_side,
'preprocess_image' : preprocess_image,
}

# create random transform generator for augmenting training data
if args.random_transform:
transform_generator = random_transform_generator(
min_rotation=-0.1,
max_rotation=0.1,
min_translation=(-0.1, -0.1),
max_translation=(0.1, 0.1),
min_shear=-0.1,
max_shear=0.1,
min_scaling=(0.9, 0.9),
max_scaling=(1.1, 1.1),
flip_x_chance=0.5,
flip_y_chance=0.5,
)
visual_effect_generator = random_visual_effect_generator(
contrast_range=(0.9, 1.1),
brightness_range=(-.1, .1),
hue_range=(-0.05, 0.05),
saturation_range=(0.95, 1.05)
)
else:
transform_generator = random_transform_generator(flip_x_chance=0.5)
visual_effect_generator = None

if args.dataset_type == 'coco':
# import here to prevent unnecessary dependency on cocoapi
from ..preprocessing.coco import CocoGenerator

train_generator = CocoGenerator(
args.coco_path,
'train2017',
transform_generator=transform_generator,
visual_effect_generator=visual_effect_generator,
**common_args
)

validation_generator = CocoGenerator(
args.coco_path,
'val2017',
shuffle_groups=False,
**common_args
)
elif args.dataset_type == 'pascal':
train_generator = PascalVocGenerator(
args.pascal_path,
'trainval',
transform_generator=transform_generator,
visual_effect_generator=visual_effect_generator,
**common_args
)

validation_generator = PascalVocGenerator(
args.pascal_path,
'test',
shuffle_groups=False,
**common_args
)
elif args.dataset_type == 'csv':
train_generator = CSVGenerator(
args.annotations,
args.classes,
transform_generator=transform_generator,
visual_effect_generator=visual_effect_generator,
**common_args
)

if args.val_annotations:
validation_generator = CSVGenerator(
args.val_annotations,
args.classes,
shuffle_groups=False,
**common_args
)
else:
validation_generator = None
elif args.dataset_type == 'oid':
train_generator = OpenImagesGenerator(
args.main_dir,
subset='train',
version=args.version,
labels_filter=args.labels_filter,
annotation_cache_dir=args.annotation_cache_dir,
parent_label=args.parent_label,
transform_generator=transform_generator,
visual_effect_generator=visual_effect_generator,
**common_args
)

validation_generator = OpenImagesGenerator(
args.main_dir,
subset='validation',
version=args.version,
labels_filter=args.labels_filter,
annotation_cache_dir=args.annotation_cache_dir,
parent_label=args.parent_label,
shuffle_groups=False,
**common_args
)
elif args.dataset_type == 'kitti':
train_generator = KittiGenerator(
args.kitti_path,
subset='train',
transform_generator=transform_generator,
visual_effect_generator=visual_effect_generator,
**common_args
)

validation_generator = KittiGenerator(
args.kitti_path,
subset='val',
shuffle_groups=False,
**common_args
)
else:
raise ValueError('Invalid data type received: {}'.format(args.dataset_type))

return train_generator, validation_generator
Empty file added yolk/datasets/todo
Empty file.
Empty file added yolk/engine/todo
Empty file.
Empty file added yolk/layers/todo
Empty file.
Empty file added yolk/models/todo
Empty file.
Empty file added yolk/preprocessing/todo
Empty file.
Empty file added yolk/utils/todo
Empty file.

0 comments on commit d031e49

Please sign in to comment.