Базовый 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 для получения входных параметров изображения? Используется ли дополненное как словарь? Не могли бы вы объяснить, как?
2 ответа
aug
это пример albumentations.augmentations.transforms.HorizontalFlip
класс
Затем, если вы посмотрите исходный код, вы увидите, что он наследуется отalbumentations.core.transforms_interface.DualTransform
класс, который, глядя на исходный код, наследуется от класс.
Глядя на
BasicTransform
класс, вы можете видеть, что он реализует
__call__()
метод. Требуется переменное количество аргументов ключевого слова
**kwargs
и после некоторой обработки возвращается (т.е. когда вы вызываете
aug()
).
kwargs
это диктовка с аргументами, которые вы передаете. В вашем случае ключи
image
а также
mask
.
В качестве примечания вместо
if augment == True:
это должно быть просто
if augment:
aug
это переменная, которая присваивается функциональному объекту
Квадратные скобки означают, что объект внедрил
__getitem__()
Магический метод Python. Это может быть диктат, но не обязательно