SKImage работает очень медленно и выдает неожиданные результаты - PullRequest
0 голосов
/ 26 января 2019

Я впервые использую scikit-Image для использования на хакатоне в эти выходные.Выполняя некоторые тесты, я обнаружил, что API работает очень медленно, несмотря на то, что в нижней части страница говорит, что время их выполнения скрипта составило 4,780 секунды.Каждый раз, когда я запускаю мой, это занимает более 20 минут.

Их пример кода не работал для меня, так как я не мог заставить работать matplotlib.Я пытался адаптировать его и использовал PIL для сохранения моих изображений

import numpy as np
from PIL import Image
from skimage import data, img_as_float, img_as_ubyte
from skimage.segmentation import (morphological_chan_vese, 
morphological_geodesic_active_contour, inverse_gaussian_gradient, 
checkerboard_level_set)

def store_evolution_in(lst):
    """Returns a callback function to store the evolution of the 
level sets in
    the given list.
    """

    def _store(x):
        lst.append(np.copy(x))

    return _store

imarray = np.asarray(Image.open("./images/bottle.jpg"))
# Morphological ACWE
image = img_as_float(imarray)
# Initial level set
init_ls = checkerboard_level_set(image.shape, 6)
# List with intermediate results for plotting the evolution
evolution = []
callback = store_evolution_in(evolution)

gimage = inverse_gaussian_gradient(image)
ls = morphological_geodesic_active_contour(gimage, 100, init_ls,
                                       smoothing=1, balloon=-1,
                                       threshold=0.69,
                                       iter_callback=callback)
intls = img_as_ubyte(ls)
Image.fromarray(intls).save('./results/ls.jpg', 'JPEG')

Я надеюсь вернуть сегментированное изображение, как в результатах (конечная цель - получить только темную жидкостьв бутылке осталось).Но время выполнения не только намного дольше, чем у них, оно возвращает только черное изображение.Может я что-то не так делаю?

Мой Activity Monitor говорит, что Python потребляет 100% мощности процессора, но загрузка процессора внизу говорит, что пользователь потребляет 9%, поэтому я могу предположить, что не все мои ядраиспользуются.

...