问题标签 [image-preprocessing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何加速处理图像中的大量补丁?
我编写了一个函数来处理图像,在其中我提取了许多补丁,然后使用相同的函数(func)处理它们以生成新图像。但是,这非常慢,因为有两个循环,func,补丁的数量,补丁的大小。我不知道如何加速这段代码。
功能如下。
func 可以非常灵活且耗时。我以一个为例。下面的函数要计算补丁的中心点除以补丁的中位数。但是,我不希望那些值为 255 的像素计算中位数(255 是无效像素的默认值)。所以我在 numpy 中使用掩码数组。屏蔽数组使代码变慢了好几次,我不知道如何优化它。
我尝试过或得到的想法:
- 我在循环之前使用了一些 numpy 函数来提取补丁,期望这可以比
patch = img[i:i+f_height,j:j+f_width]
. 我找到 了从python中有效地从图像中提取特定大小的补丁中提取补丁的函数 起初我尝试了skimage.util.shape中的view_as_windows。代码已更改,如下所示。这比 code1 需要更多的时间。我还尝试了 sklearn.feature_extraction.image.extract_patches_2d 并发现这比 code3 快,但仍然比 code1 慢。(谁能告诉我为什么会这样?)
这个操作有点像卷积或滤波器,除了func。我想知道那些lib如何处理这个问题,你们能给我一些线索吗?
在这种情况下我们可以避免两个循环吗?也许这可以加速代码。
我有显卡。我可以更改代码以在 gpus 上运行它并使其并行处理补丁以使其更快吗?
将代码更改为 C。这是我想做的最后一件事,因为这可能有点乱。
大家能给我一些想法或建议吗?
python - 图像预处理和数据增强应该如何用于语义分割?
我有一个不平衡的小数据集,其中包含 4116 个 224x224x3 (RGB) 航拍图像。由于数据集不够大,我很可能会遇到过拟合问题。图像预处理和数据增强有助于解决这个问题,如下所述。
“过度拟合是由于要学习的样本太少,导致您无法训练可以泛化到新数据的模型。给定无限数据,您的模型将暴露于手头数据分布的每个可能方面:您永远不会过拟合。数据增强采用从现有训练样本中生成更多训练数据的方法,通过大量随机变换来增强样本,从而产生看起来可信的图像。”
Deep Learning with Python by François Chollet,第 138-139 页,5.2.5 使用数据增强。
我已阅读Medium - Image Data Preprocessing for Neural Networks并查看了斯坦福的CS230 - 数据预处理和 CS231 - 数据预处理课程。它在SO question中再次突出显示,我知道没有“一刀切”的解决方案。这就是迫使我问这个问题的原因:
“因为我们想要实现高空间分辨率,所以没有使用翻译增强。”
我知道我将使用Keras - ImageDataGenerator 类,但不知道在小对象任务的语义分割中使用哪些技术和哪些参数。有人可以启发我吗?提前致谢。:)
python - 如何使用python制作矢量图形图像
我正在尝试制作一个将图像转换为矢量图形图像的项目,我该怎么做?
python - 对输入数据进行白化时模型未训练和负损失
我正在做分割,我的数据集有点小(1840 张图像),所以我想使用数据增强。我正在使用 keras 文档中提供的生成器,它产生一个包含一批图像和相应掩码的元组,这些掩码以相同的方式增强。
然后我用这个生成器训练我的模型:
但是通过使用这个我得到了负损失并且模型没有训练:
我还想补充一点,如果我不使用 featurewise_center 和 featurewise_std_normalization,模型正在训练。但是我正在使用一个带有批量标准化的模型,如果输入被标准化,它的性能会更好,所以这就是我真的想使用特征参数的原因。
我希望我能很好地解释我的问题,并且你们中的一些人可能会帮助我,因为我真的不明白。
编辑:我的模型是带有自定义 Conv2D 和 Conv2DTranspose 块的 U-Net:
我创建我的模型并编译它:
deep-learning - 深度学习中哪种图像预处理更好
下面介绍三种从uint8转换为float32的预处理方法。建议在 conv2d->batch norm->ReLU 结构中使用哪一个(例如鲁棒性和避免死亡 ReLU 问题),或者有什么建议?
如cs231n中所述,使用在训练集上计算的均值和标准差的零中心和归一化图像。我认为当训练集很大时,这种方法会花费很多。
就像tensorflow 模型中的代码一样,
image /= 255 image -= 0.5 image *= 2.0
只需将图像除以 255
python - 使用 keras 中的图像数据生成器进行图像数据增强
我目前正在从事计算机视觉项目,我想使用图像数据生成器根据相应目录中的类加载我的图像。
我想通过feature_std_normalization
我在创建数据生成器对象时声明了 feature_std_normalization=True 但在训练时它给出了错误:
local/lib/python3.6/dist-packages/keras_preprocessing/image/image_data_generator.py:716:UserWarning:此 ImageDataGenerator 指定
featurewise_center
,但它不适合任何训练数据。首先调用.fit(numpy_data)
. warnings.warn('此 ImageDataGenerator 指定 '
dategen.fit ()
当图像来自generator.flow_from_directory()
原样datagen.fit()
使用 X_train
但我没有它时如何使用
scikit-image - AttributeError: 'str' object has no attribute 'shape' - 使用 scikit-image 调整图像大小时
我正在尝试遍历目录并使用 scikit-image 调整每个图像的大小,但我不断收到以下错误:
我的代码:
python - numpy.core._exceptions.UFuncTypeError: ufunc 'add' 不包含带有签名匹配的循环
我正在遍历一个目录以调整图像大小,然后将新调整的图像保存在另一个现有目录中。我不断收到以下错误:
编码: