如何将ScikitLearn分类器应用于大图像中的切片/窗口
作者:互联网
鉴于是在scikit学习中训练有素的分类,例如一个RandomForestClassifier.分类器已经过大小样本的训练,例如: 25×25.
如何轻松将其应用于大图像中的所有图块/窗口(例如640×480)?
我能做的是(提前代码慢!)
x_train = np.arange(25*25*1000).reshape(25,25,1000) # just some pseudo training data
y_train = np.arange(1000) # just some pseudo training labels
clf = RandomForestClassifier()
clf.train( ... ) #train the classifier
img = np.arange(640*480).reshape(640,480) #just some pseudo image data
clf.magicallyApplyToAllSubwindoes( img )
如何将clf应用于img中的所有25×25窗口?
解决方法:
也许您正在寻找像skimage.util.view_as_windows
这样的东西.请务必阅读文档末尾有关内存使用情况的警告.
如果使用view_as_windows是一种经济实惠的方法,你可以通过重新整形返回的数组来神奇地从图像中的所有窗口生成测试数据,如下所示:
import numpy as np
from skimage import io
from skimage.util import view_as_windows
img = 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)
标签:python,machine-learning,classification,scikit-learn,scikit-image 来源: https://codeday.me/bug/20190622/1265722.html