YOLO / tests /test_model /test_module.py
henry000's picture
✅ [Add] tests, increase test coverage
88e45b9
import sys
from pathlib import Path
import torch
project_root = Path(__file__).resolve().parent.parent.parent
sys.path.append(str(project_root))
from yolo.model.module import SPPELAN, ADown, CBLinear, Conv, Pool
STRIDE = 2
KERNEL_SIZE = 3
IN_CHANNELS = 64
OUT_CHANNELS = 128
NECK_CHANNELS = 64
def test_conv():
conv = Conv(IN_CHANNELS, OUT_CHANNELS, KERNEL_SIZE)
x = torch.randn(1, IN_CHANNELS, 64, 64)
out = conv(x)
assert out.shape == (1, OUT_CHANNELS, 64, 64)
def test_pool_max():
pool = Pool("max", 2, stride=2)
x = torch.randn(1, IN_CHANNELS, 64, 64)
out = pool(x)
assert out.shape == (1, IN_CHANNELS, 32, 32)
def test_pool_avg():
pool = Pool("avg", 2, stride=2)
x = torch.randn(1, IN_CHANNELS, 64, 64)
out = pool(x)
assert out.shape == (1, IN_CHANNELS, 32, 32)
def test_adown():
adown = ADown(IN_CHANNELS, OUT_CHANNELS)
x = torch.randn(1, IN_CHANNELS, 64, 64)
out = adown(x)
assert out.shape == (1, OUT_CHANNELS, 32, 32)
def test_cblinear():
cblinear = CBLinear(IN_CHANNELS, [5, 5])
x = torch.randn(1, IN_CHANNELS, 64, 64)
outs = cblinear(x)
assert len(outs) == 2
assert outs[0].shape == (1, 5, 64, 64)
assert outs[1].shape == (1, 5, 64, 64)
def test_sppelan():
sppelan = SPPELAN(IN_CHANNELS, OUT_CHANNELS, NECK_CHANNELS)
x = torch.randn(1, IN_CHANNELS, 64, 64)
out = sppelan(x)
assert out.shape == (1, OUT_CHANNELS, 64, 64)