def svm_classifiy(img): training_labels = np.zeros(img.shape[:2], dtype=np.uint8) # training_labels[:10] = 1 training_labels[180:, 420:] = 1 training_labels[70:110, 360:390] = 2 training_labels[55:85, 310:320] = 2 training_labels[120:140, 220:240] = 3 # training_labels[150:200, 720:860] = 4 sigma_min = 1 sigma_max = 16 features_func = partial(feature.multiscale_basic_features, intensity=True, edges=False, texture=True, sigma_min=sigma_min, sigma_max=sigma_max, multichannel=True) features = features_func(img) clf = RandomForestClassifier(n_estimators=50, n_jobs=-1, max_depth=10, max_samples=0.05) clf = future.fit_segmenter(training_labels, features, clf) result = future.predict_segmenter(features, clf) fig, ax = plt.subplots(1, 2, sharex=True, sharey=True, figsize=(9, 4)) ax[0].imshow(segmentation.mark_boundaries(img, result, mode='thick')) ax[0].contour(training_labels) ax[0].set_title('Image, mask and segmentation boundaries') ax[1].imshow(result) ax[1].set_title('Segmentation') fig.tight_layout() plt.show()
def test_trainable_segmentation_multichannel(): img = np.zeros((20, 20, 3)) img[:10] = 1 img += 0.05 * np.random.randn(*img.shape) labels = np.zeros_like(img[..., 0], dtype=np.uint8) labels[:2] = 1 labels[-2:] = 2 clf = DummyNNClassifier() features_func = partial(multiscale_basic_features, edges=False, texture=False, sigma_min=0.5, sigma_max=2, multichannel=True) features = features_func(img) clf = fit_segmenter(labels, features, clf) out = predict_segmenter(features, clf) assert np.all(out[:10] == 1) assert np.all(out[10:] == 2)
def test_trainable_segmentation_predict(): img = np.zeros((20, 20)) img[:10] = 1 img += 0.05 * np.random.randn(*img.shape) labels = np.zeros_like(img, dtype=np.uint8) labels[:2] = 1 labels[-2:] = 2 clf = DummyNNClassifier() features_func = partial( multiscale_basic_features, edges=False, texture=False, sigma_min=0.5, sigma_max=2, ) features = features_func(img) clf = fit_segmenter(labels, features, clf) test_features = np.random.random((5, 20, 20)) with pytest.raises(ValueError) as err: _ = predict_segmenter(test_features, clf) assert 'type of features' in str(err.value)
training_labels[:170, :400] = 1 training_labels[600:900, 200:650] = 2 training_labels[330:430, 210:320] = 3 training_labels[260:340, 60:170] = 4 training_labels[150:200, 720:860] = 4 sigma_min = 1 sigma_max = 16 features_func = partial(feature.multiscale_basic_features, intensity=True, edges=False, texture=True, sigma_min=sigma_min, sigma_max=sigma_max, channel_axis=-1) features = features_func(img) clf = RandomForestClassifier(n_estimators=50, n_jobs=-1, max_depth=10, max_samples=0.05) clf = future.fit_segmenter(training_labels, features, clf) result = future.predict_segmenter(features, clf) fig, ax = plt.subplots(1, 2, sharex=True, sharey=True, figsize=(9, 4)) ax[0].imshow(segmentation.mark_boundaries(img, result, mode='thick')) ax[0].contour(training_labels) ax[0].set_title('Image, mask and segmentation boundaries') ax[1].imshow(result) ax[1].set_title('Segmentation') fig.tight_layout() ############################################################################## # Feature importance # ------------------ # # We inspect below the importance of the different features, as computed by