微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数据增强基础python

如何解决数据增强基础python

我是 Python 编程的初学者,当我遇到以下代码时,我正在学习如何从 YouTube 编写一个项目。

完整代码在这里https://github.com/nikhilroxtomar/Retina-Blood-Vessel-Segmentation-using-UNET-in-TensorFlow/blob/main/data.py 和出现它的 YouTube 是在 24:30 - https://youtu.be/tpbWZVY2dng?t=1470 )

from albumentations import HorizontalFlip
def augment_data(images,masks,save_path,augment=True):

  for idx,(x,y) in tqdm(enumerate(zip(images,masks)),total=len(images)):
      """ Extracting names """
      name = x.split("/")[-1].split(".")[0]

      """ Reading image and mask """
      x = cv2.imread(x,cv2.IMREAD_COLOR)
      y = imageio.mimread(y)[0]

      if augment == True:
          aug = HorizontalFlip(p=1.0)
          augmented = aug(image=x,mask=y)
          x1 = augmented["image"]
          y1 = augmented["mask"]

这部分是我不明白的

if augment == True:
      aug = HorizontalFlip(p=1.0)
      augmented = aug(image=x,mask=y)
      x1 = augmented["image"]
      y1 = augmented["mask"]

如何使用 aug 获取图像的输入参数? augmented 是否被用作字典?你能解释一下吗?

解决方法

aug 是分配给函数对象的变量

方括号表示对象已经实现了 __getitem__() Python 魔术方法。它可能是一个 dict,但不需要是

,

augalbumentations.augmentations.transforms.HorizontalFlip 类的实例

然后,如果您查看 the source code,您会看到它继承自 看 albumentations.core.transforms_interface.DualTransformthe source code 类继承自 BasicTransform 类。

查看 BasicTransform 类,您可以看到它实现了 __call__() 方法。它采用可变数量的关键字参数 **kwargs,经过一些处理后返回 kwargs(即当您调用 aug() 时)。 kwargs 是一个带有您传递的参数的字典。在您的情况下,键是 imagemask

作为旁注,应该是 if augment == True: 而不是 if augment:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?