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)
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)
def test3(): """ストライドが1より大きい場合の畳み込み演算""" # 画像を読み込む (グレースケール) img_type = "conv_sample" img, original = load_with_orig(img_type) img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
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)
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)