| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- # Copyright (c) 2021 PaddlePaddle 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.
- # This code is based on https://github.com/uoguelph-mlrg/Cutout
- import numpy as np
- import random
- class Cutout(object):
- def __init__(self, n_holes=1, length=112):
- self.n_holes = n_holes
- self.length = length
- def __call__(self, img):
- """ cutout_image """
- h, w = img.shape[:2]
- mask = np.ones((h, w), np.float32)
- for n in range(self.n_holes):
- y = np.random.randint(h)
- x = np.random.randint(w)
- y1 = np.clip(y - self.length // 2, 0, h)
- y2 = np.clip(y + self.length // 2, 0, h)
- x1 = np.clip(x - self.length // 2, 0, w)
- x2 = np.clip(x + self.length // 2, 0, w)
- img[y1:y2, x1:x2] = 0
- return img
|