Example #1
0
def perf_test():
    """畳み込み演算のパフォーマンスを比較する"""

    # 画像を読み込む (グレースケール)
    # img_type = "conv_sample"
    img_type = "lenna_gray"
    img, original = load_with_orig(img_type)

    # フィルターを生成する
    fc = filter_conv_sample()

    # ネイティブなPython
    """img_copy = img.copy()
    start_native = time()
    img_result_native = conv_gray(img_copy, fc)
    elapsed_native = time() - start_native"""

    # Cython
    img_copy_cy = img.copy()
    start_cy = time()
    img_result_cy = conv_gray_cy(img_copy_cy, fc, stride=10)
    elapsed_cy = time() - start_cy

    # 結果
    # print("native: %s(sec)" % elapsed_native)
    print("cython: %s(sec)" % elapsed_cy)

    # 結果を確認する
    check_result = True
    if check_result:
        """images = (original, img_result_native, img_result_cy)
        titles = ("Original", "Native", "Cython")
        collate(images, titles, nr=1, nc=3)"""
        collate((original, img_result_cy), ("Orig", "Cyp"), nr=1, nc=2)
Example #2
0
def test2():
    """画像の読み込み & 畳み込み演算のテスト (Cython版)"""

    # 画像を読み込む (グレースケール)
    img_type = "conv_sample"
    img, original = load_with_orig(img_type)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    # フィルターを生成する
    fc = filter_conv_sample()

    # 畳み込み処理を行う
    img_result = conv_gray_cy(img, fc)

    # 結果を確認する
    check_result = True
    if check_result:
        images = (
            original,
            img_result,
        )
        titles = (
            "Original",
            "Convolution",
        )
        collate(images, titles, nr=1, nc=2)
Example #3
0
def test3():
    """ストライドが1より大きい場合の畳み込み演算"""

    # 画像を読み込む (グレースケール)
    img_type = "conv_sample"
    img, original = load_with_orig(img_type)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
Example #4
0
def test1():
    """画像の読み込み & 畳み込み演算のテスト"""

    # 画像を読み込む (グレースケール)
    img_type = "conv_sample"
    # img_type = "lenna"
    # img_type = "dassen_blog"
    # img_type = "cpu"
    img, original = load_with_orig(img_type)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    # 画像を確認する
    check_img = False
    if check_img:
        plt.imshow(img, cmap=plt.cm.gray)
        plt.show()

    # フィルターを生成する
    fc = filter_conv_sample()

    # 畳み込み処理を行う
    img_result = conv_gray(img, fc, stride=15, padding=False)

    # 結果を確認する
    check_result = True
    if check_result:
        images = (original, img_result)
        titles = ("Original", "Convolution")
        collate(images, titles, nr=1, nc=2)
Example #5
0
def test1():
    """プーリング処理のテスト"""

    # 画像を読み込む
    # img_type = "conv_sample"
    # img_type = "lenna"
    # img_type = "dassen_blog"
    img_type = "cpu"
    img, original = load_with_orig(img_type)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    # 画像を確認する
    check_imgs = False
    if check_imgs:
        images = (original, img)
        titles = ("Original", "Image")
        collate(images, titles, nr=1, nc=2)

    # フィルターを生成する
    f = filter_conv_sample()

    # 畳み込み演算を行う
    img_conv = conv_cy(img, f, padding=True)

    # 畳み込み演算の結果を確認する
    check_conved = False
    if check_conved:
        images = (original, img_conv)
        titles = ("Original", "Convolution")
        collate(images, titles, nr=1, nc=2)

    # プーリングを行う
    k = 3
    # start_pool = time()
    img_pool = pool_cy(img_conv, k, stride=3)
    # elapsed = time() - start_pool
    # print("pooling: %s (sec)" % elapsed)

    # プーリングの結果を確認する
    check_pooled = True
    if check_pooled:
        images = (original, img_conv, img_pool)
        titles = ("Original", "Convolution", "Pooling")
        collate(images, titles, nr=2, nc=2)