Skip to content
This repository was archived by the owner on Mar 24, 2021. It is now read-only.

Commit 6654417

Browse files
committed
simplify augmentation
* update show data
1 parent c3c79b6 commit 6654417

File tree

7 files changed

+36
-30
lines changed

7 files changed

+36
-30
lines changed

keras_yolo3/model.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from functools import wraps
88

99
import tensorflow as tf
10-
from keras import backend as K
10+
import keras.backend as K
1111
from keras.layers import Conv2D, Add, ZeroPadding2D, UpSampling2D, Concatenate, MaxPooling2D
1212
from keras.layers import Input, Lambda
1313
from keras.layers.advanced_activations import LeakyReLU

keras_yolo3/utils.py

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -460,35 +460,37 @@ def get_augmented_data(annotation_line, input_shape, augment=True, max_boxes=20,
460460
boxes = np.array([list(map(float, box.split(',')))
461461
for box in line_split[1:]]).astype(int)
462462

463-
if not augment:
464-
# resize image
465-
img_data, adj_box_data = normalize_image_bboxes(
466-
image, boxes, input_shape, resize_img=resize_img,
467-
allow_rnd_shift=allow_rnd_shift, interp=interp)
468-
box_data = _copy_bboxes(boxes, adj_box_data, max_boxes, check_dropped=False)
469-
# yolo3.visual.show_augment_data(image_open(line_split[0]), boxes, img_data, box_data)
470-
return img_data, box_data
463+
# if not augment:
464+
# img_data, adj_box_data = normalize_image_bboxes(
465+
# image, boxes, input_shape, resize_img=resize_img,
466+
# allow_rnd_shift=allow_rnd_shift, interp=interp)
467+
# box_data = _copy_bboxes(boxes, adj_box_data, max_boxes, check_dropped=False)
468+
# return img_data, box_data
471469

472470
# resize image
473471
# new_ar = cnn_w / cnn_h * _rand(1 - jitter, 1 + jitter) / _rand(1 - jitter, 1 + jitter)
474-
scaling = _rand(1. / img_scaling, img_scaling)
475472
if resize_img:
473+
scaling = _rand(1. / img_scaling, img_scaling) if augment else 1.
476474
img_data, scaling, (dx, dy) = _scale_image_to_cnn(
477475
image, input_shape, scaling, allow_rnd_shift=allow_rnd_shift, interp=interp)
478476
else:
479477
img_data, scaling, (dx, dy) = _crop_image_to_cnn(image, input_shape, allow_rnd_shift)
480478
image = Image.fromarray(np.round(img_data * 255).astype(np.uint8))
481479

482-
# flip image or not
483-
flip_horizontal = np.random.random() < 0.5 and flip_horizontal
484-
if flip_horizontal:
485-
image = image.transpose(Image.FLIP_LEFT_RIGHT)
486-
flip_vertical = np.random.random() < 0.5 and flip_vertical
487-
if flip_vertical:
488-
image = image.transpose(Image.FLIP_TOP_BOTTOM)
489-
490-
# distort image
491-
img_data = augment_image_color(image, hue, sat, val)
480+
if augment:
481+
# flip image or not
482+
flip_horizontal = np.random.random() < 0.5 and flip_horizontal
483+
if flip_horizontal:
484+
image = image.transpose(Image.FLIP_LEFT_RIGHT)
485+
flip_vertical = np.random.random() < 0.5 and flip_vertical
486+
if flip_vertical:
487+
image = image.transpose(Image.FLIP_TOP_BOTTOM)
488+
489+
# distort image
490+
img_data = augment_image_color(image, hue, sat, val)
491+
else:
492+
flip_horizontal = False
493+
flip_vertical = False
492494

493495
if len(boxes) == 0:
494496
max_boxes = max_boxes if max_boxes else 1
@@ -499,7 +501,7 @@ def get_augmented_data(annotation_line, input_shape, augment=True, max_boxes=20,
499501
adj_box_data = adjust_bboxes(boxes, input_shape, flip_horizontal, flip_vertical,
500502
scaling, scaling, dx, dy)
501503
box_data = _copy_bboxes(boxes, adj_box_data, max_boxes)
502-
# yolo3.visual.show_augment_data(image_open(line_split[0]), boxes, img_data, box_data)
504+
# yolo3.visual.show_augment_data(image_open(line_split[0]), boxes, img_data, box_data, title=line_split[0])
503505
return img_data, box_data
504506

505507

keras_yolo3/visual.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def _draw_bbox(ax, bbox, color='r'):
6767
ax.plot(x, y, color=color)
6868

6969

70-
def show_augment_data(image_in, bboxes, img_data, box_data):
70+
def show_augment_data(image_in, bboxes, img_data, box_data, title=''):
7171
"""visualise image_data and box_data
7272
7373
:param ndaaray image_in: original image
@@ -81,13 +81,15 @@ def show_augment_data(image_in, bboxes, img_data, box_data):
8181
>>> show_augment_data(img, [box], img, [box, [0] * 5]) # doctest: +ELLIPSIS
8282
<...>
8383
"""
84-
fig, axarr = plt.subplots(ncols=2, figsize=(12, 5))
84+
fig, axarr = plt.subplots(ncols=2, figsize=(14, 8), constrained_layout=True)
8585
axarr[0].set_title('Original image with annotation')
8686
axarr[0].imshow(np.array(image_in))
8787
for box in bboxes:
8888
_draw_bbox(axarr[0], box)
89-
axarr[1].set_title('Augmented image with adjusted bboxes')
90-
axarr[1].imshow(np.array(img_data))
89+
axarr[1].set_title('Augmented image with adjusted bounding boxes')
90+
axarr[1].imshow(np.array(img_data), vmin=0, vmax=1)
9191
for box in box_data:
9292
_draw_bbox(axarr[1], box)
93+
fig.suptitle(title)
94+
fig.tight_layout()
9395
return fig

keras_yolo3/yolo.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import colorsys
1010

1111
import numpy as np
12-
from keras import backend as K
12+
import keras.backend as K
1313
from keras.models import load_model
1414
from keras.layers import Input
1515
from keras.utils import multi_gpu_model

requirements.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
numpy
22
matplotlib<3.0.0 # dropped support for py3.5 and lower
33
Pillow
4-
keras>=2.2.0, <2.2.5 # missing control_flow_ops in keras.backend
4+
# keras!=2.2.3,2.2.4 # crash multi GPU training, see https://github.com/keras-team/keras/issues/11348
5+
# keras!=2.2.5 # missing control_flow_ops in keras.backend
6+
keras>=2.2.0, <2.2.5
57
pydot
68
pydot-ng
79
graphviz
8-
tensorflow>=1.4.0, <2.0.0
10+
tensorflow>=1.4.0, <2.0.0 # breaking compatibility
911
pandas
1012
opencv-python
1113
tqdm

scripts/convert_weights.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131

3232
import tqdm
3333
import numpy as np
34-
from keras import backend as K
34+
import keras.backend as K
3535
from keras.layers import (Conv2D, Input, ZeroPadding2D, Add,
3636
UpSampling2D, MaxPooling2D, Concatenate)
3737
from keras.layers.advanced_activations import LeakyReLU

tox.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ deps =
1616
commands =
1717
check-manifest --ignore tox.ini,tests*
1818
python setup.py check -m -s
19-
coverage run --source keras_yolo3 -m py.test keras_yolo3 scripts -v --doctest-modules
19+
coverage run --source keras_yolo3 -m py.test keras_yolo3 -v --doctest-modules
2020
coverage report
2121
flake8 .
2222

0 commit comments

Comments
 (0)