使用来自r keras的image_data_generator具有符号概率

发布于 2025-01-23 16:29:52 字数 1501 浏览 0 评论 0 原文

Albimotations(在Python中)具有图像转换,可以采用概率参数 p “ nofollow noreferrer”>例如

transform = A.Compose([
        A.RandomRotate90(),
        A.Flip(),
        A.Transpose(),
        A.OneOf([
            A.IAAAdditiveGaussianNoise(),
            A.GaussNoise(),
        ], p=0.2),
        A.OneOf([
            A.MotionBlur(p=.2),
            A.MedianBlur(blur_limit=3, p=0.1),
            A.Blur(blur_limit=3, p=0.1),
        ], p=0.2),
        A.ShiftScaleRotate(shift_limit=0.0625, scale_limit=0.2, rotate_limit=45, p=0.2),
        A.OneOf([
            A.OpticalDistortion(p=0.3),
            A.GridDistortion(p=.1),
            A.IAAPiecewiseAffine(p=0.3),
        ], p=0.2),
        A.OneOf([
            A.CLAHE(clip_limit=2),
            A.IAASharpen(),
            A.IAAEmboss(),
            A.RandomBrightnessContrast(),            
        ], p=0.3),
        A.HueSaturationValue(p=0.3),
    ])

rstudio的keras实现具有 A>,具有图像转换,但没有概率参数。

在Rstudio的Keras中将图像转换整合在一起的最简单方法是什么?

一种方法是通过比看起来更难。

想法?

Albumentations (in python) has image transformations that can take a probability argument p, for example:

transform = A.Compose([
        A.RandomRotate90(),
        A.Flip(),
        A.Transpose(),
        A.OneOf([
            A.IAAAdditiveGaussianNoise(),
            A.GaussNoise(),
        ], p=0.2),
        A.OneOf([
            A.MotionBlur(p=.2),
            A.MedianBlur(blur_limit=3, p=0.1),
            A.Blur(blur_limit=3, p=0.1),
        ], p=0.2),
        A.ShiftScaleRotate(shift_limit=0.0625, scale_limit=0.2, rotate_limit=45, p=0.2),
        A.OneOf([
            A.OpticalDistortion(p=0.3),
            A.GridDistortion(p=.1),
            A.IAAPiecewiseAffine(p=0.3),
        ], p=0.2),
        A.OneOf([
            A.CLAHE(clip_limit=2),
            A.IAASharpen(),
            A.IAAEmboss(),
            A.RandomBrightnessContrast(),            
        ], p=0.3),
        A.HueSaturationValue(p=0.3),
    ])

Rstudio's Keras implementation has image_data_generator, which has image transformations, but no probability argument.

What's the easiest way to put together image transformations in Rstudio's Keras that are applied only at some level of probability?

One way would be to use Albumentations in python through reticulate, but practically speaking it's harder than it looks.

Ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甜心 2025-01-30 16:29:52

实现数据集管道的推荐方法是将{tfdatasets}与Keras预处理层结合使用。

data_augmentation <- keras_model_sequential() %>%
  layer_random_flip("horizontal") %>%
  layer_random_rotation(0.1) %>%
  layer_random_zoom(0.2)

ds <- image_dataset_from_directory(image_size = c(180, 180)) %>%
  dataset_map(~ list(data_augmentation(.x), .y))

可以在此处找到更多示例:

如果您从事自定义转换,也可以在当地的后卫中放置:

maybe_add_noise <- tf_function(function(x) {
  if(tf$random$uniform() > .5) {
    x <- x + tf$random$uniform(x$shape)
  }
  x
})

ds <- ds %>%
  dataset_map(~ list(maybe_add_noise(.x), .y))

The recommended way to implement a dataset pipeline is to use {tfdatasets} in combination with keras preprocessing layers.

data_augmentation <- keras_model_sequential() %>%
  layer_random_flip("horizontal") %>%
  layer_random_rotation(0.1) %>%
  layer_random_zoom(0.2)

ds <- image_dataset_from_directory(image_size = c(180, 180)) %>%
  dataset_map(~ list(data_augmentation(.x), .y))

More examples can be found here: https://keras.rstudio.com/articles/new-guides/preprocessing_layers.html#quick-recipes-1

If you get into making custom transformations, you can also put then in a guard locally like this:

maybe_add_noise <- tf_function(function(x) {
  if(tf$random$uniform() > .5) {
    x <- x + tf$random$uniform(x$shape)
  }
  x
})

ds <- ds %>%
  dataset_map(~ list(maybe_add_noise(.x), .y))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文