如何将ScikitLearn分类器应用于大图像中的瓦片/窗口

假设我们有一个在scikit-learn中训练好的分类器,例如一个RandomForestClassifier。该分类器已经使用例如25×25大小的样本进行训练。

如何将这个分类器轻松地应用于大图像(例如640×480)中的所有瓦片/窗口呢?

可以做的(以下是低效的代码!)

x_train = np.arange(25*25*1000).reshape(25,25,1000) # 一些伪训练数据y_train = np.arange(1000) # 一些伪训练标签clf = RandomForestClassifier()clf.train( ... ) # 训练分类器img = np.arange(640*480).reshape(640,480) # 一些伪图像数据clf.magicallyApplyToAllSubwindoes( img )

如何将clf应用于img中的所有25×25窗口呢?


回答:

或许你正在寻找类似于skimage.util.view_as_windows的东西。请务必阅读文档末尾关于内存使用情况的注意事项。

如果你能承受使用view_as_windows的方法,你可以通过像这样重塑返回的数组来神奇地从图像中的所有窗口生成测试数据:

import numpy as npfrom skimage import iofrom skimage.util import view_as_windowsimg = io.imread('image_name.png')    window_shape = (25, 25)windows = view_as_windows(img, window_shape)    n_windows = np.prod(windows.shape[:2])n_pixels = np.prod(windows.shape[2:])x_test = windows.reshape(n_windows, n_pixels)clf.apply(x_test)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注