[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/samindaw/aima-python/master/tests/test_perception4e.py [Back]  [Original]

import random

import pytest

from perception4e import *
from PIL import Image
import numpy as np
import os

random.seed("aima-python")


def test_array_normalization():
    assert list(array_normalization([1, 2, 3, 4, 5], 0, 1)) == [0, 0.25, 0.5, 0.75, 1]
    assert list(array_normalization([1, 2, 3, 4, 5], 1, 2)) == [1, 1.25, 1.5, 1.75, 2]


def test_sum_squared_difference():
    image = Image.open(os.path.abspath("./images/broxrevised.png"))
    arr = np.asarray(image)
    arr1 = arr[10:500, :514]
    arr2 = arr[10:500, 514:1028]
    assert sum_squared_difference(arr1, arr1)[1] == 0
    assert sum_squared_difference(arr1, arr1)[0] == (0, 0)
    assert sum_squared_difference(arr1, arr2)[1] > 200000


def test_gen_gray_scale_picture():
    assert list(gen_gray_scale_picture(size=3, level=3)[0]) == [0, 125, 250]
    assert list(gen_gray_scale_picture(size=3, level=3)[1]) == [125, 125, 250]
    assert list(gen_gray_scale_picture(size=3, level=3)[2]) == [250, 250, 250]
    assert list(gen_gray_scale_picture(2, level=2)[0]) == [0, 250]
    assert list(gen_gray_scale_picture(2, level=2)[1]) == [250, 250]


def test_generate_edge_weight():
    assert generate_edge_weight(gray_scale_image, (0, 0), (2, 2)) == 5
    assert generate_edge_weight(gray_scale_image, (1, 0), (0, 1)) == 255


def test_graph_bfs():
    graph = Graph(gray_scale_image)
    assert not graph.bfs((1, 1), (0, 0), [])
    parents = []
    assert graph.bfs((0, 0), (2, 2), parents)
    assert len(parents) == 8


def test_graph_min_cut():
    image = gen_gray_scale_picture(size=3, level=2)
    graph = Graph(image)
    assert len(graph.min_cut((0, 0), (2, 2))) == 4
    image = gen_gray_scale_picture(size=10, level=2)
    graph = Graph(image)
    assert len(graph.min_cut((0, 0), (9, 9))) == 10


def test_gen_discs():
    discs = gen_discs(100, 2)
    assert len(discs) == 2
    assert len(discs[1]) == len(discs[0]) == 8


def test_simple_convnet():
    train, val, test = load_MINST(1000, 100, 10)
    model = simple_convnet()
    model.fit(train[0], train[1], validation_data=(val[0], val[1]), epochs=5, verbose=2, batch_size=32)
    scores = model.evaluate(test[0], test[1], verbose=1)
    assert scores[1] > 0.2


def test_ROIPoolingLayer():
    # Create feature map input
    feature_maps_shape = (200, 100, 1)
    feature_map = np.ones(feature_maps_shape, dtype='float32')
    feature_map[200 - 1, 100 - 3, 0] = 50
    roiss = np.asarray([[0.5, 0.2, 0.7, 0.4], [0.0, 0.0, 1.0, 1.0]])
    assert pool_rois(feature_map, roiss, 3, 7)[0].tolist() == [[1, 1, 1, 1, 1, 1, 1],
                                                               [1, 1, 1, 1, 1, 1, 1],
                                                               [1, 1, 1, 1, 1, 1, 1]]
    assert pool_rois(feature_map, roiss, 3, 7)[1].tolist() == [[1, 1, 1, 1, 1, 1, 1],
                                                               [1, 1, 1, 1, 1, 1, 1],
                                                               [1, 1, 1, 1, 1, 1, 50]]


if __name__ == '__main__':
    pytest.main()

Web Proxy Viewer  |  New URL  |  Original Page