torch 数据增强

编程入门 行业动态 更新时间:2024-10-18 16:47:46

torch <a href=https://www.elefans.com/category/jswz/34/1771445.html style=数据增强"/>

torch 数据增强

第一种
原文

class RandomErasing(object):def __init__(self, p=0.5, sl=0.02, sh=0.4, r1=0.3, r2=3):self.p = pself.sl = slself.sh = shself.r1 = r1self.r2 = r2def __call__(self, img):if np.random.rand() > self.p:return imgimg = np.array(img)while True:img_h, img_w, img_c = img.shapeimg_area = img_h * img_wmask_area = np.random.uniform(self.sl, self.sh) * img_areamask_aspect_ratio = np.random.uniform(self.r1, self.r2)mask_w = int(np.sqrt(mask_area / mask_aspect_ratio))mask_h = int(np.sqrt(mask_area * mask_aspect_ratio))mask = np.random.rand(mask_h, mask_w, img_c) * 255left = np.random.randint(0, img_w)top = np.random.randint(0, img_h)right = left + mask_wbottom = top + mask_hif right <= img_w and bottom <= img_h:breakimg[top:bottom, left:right, :] = maskreturn Image.fromarray(img)

效果:

第二种:

原文

class RandomErasing(object):
def init(self, probability=0.5, sl=0.02, sh=0.4, r1=0.3, mean=(0.485, 0.456, 0.406)):
self.probability = probability
self.mean = mean
self.sl = sl
self.sh = sh
self.rl = r1
self.rh = 1./r1

def __call__(self, sample):                                                                    image, landmarks_crop = sample['image_crop'], sample['landmarks_crop']                     image = image / 0.0078125 + 127.5                                                          image = self._random_erase(image)                                                          image_crop = image.astype(int)                                                             # image_crop = (image_crop - 127.5) * 0.0078125                                            return {'image_crop': torch.from_numpy(image_crop),                                        'landmarks_crop': landmarks_crop,                                                  'img_name': sample['img_name'],                                                    'image_ori': sample['image_ori'],                                                  'landmarks_ori': sample['landmarks_ori'],                                          'landmarks_train': sample['landmarks_train'],                                      }                                                                                  # return Image.fromarray(img)                                                              def _random_erase(self,image):                                                                 image = np.asarray(image).copy()                                                           if np.random.random() > self.probability:                                                  return image                                                                           h, w = image.shape[:2]                                                                     image_area = h * w                                                                         for _ in range(20):                                                                        mask_area = np.random.uniform(self.sl, self.sh) * image_area                           aspect_ratio = np.random.uniform(self.rl, self.rh)                                     mask_h = int(np.sqrt(mask_area * aspect_ratio))                                        mask_w = int(np.sqrt(mask_area / aspect_ratio))                                        if mask_w < w and mask_h < h:                                                          x0 = np.random.randint(0, w - mask_w)                                              y0 = np.random.randint(0, h - mask_h)                                              x1 = x0 + mask_w                                                                   y1 = y0 + mask_h                                                                   image[y0:y1, x0:x1] = np.random.uniform(0, 1)                                      break                                                                              return image                                                                               

效果:

更多推荐

torch 数据增强

本文发布于:2024-02-03 09:22:11,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1744754.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据   torch

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!