anomalib—2—输入图像大小调整
三个地方
第一:在定义model时,要在pre_processor里面去定义一个前处理,前处理就一个功能,定义图像的大小
pre_processor0 = Patchcore.configure_pre_processor( image_size = (128, 128))
model =Patchcore( backbone="wide_resnet50_2",layers=["layer1", "layer2"], pre_trained=True,pre_processor= pre_processor0)
   第二个地方:在Folder里面定义transform。
    datamodule = Folder(
        name="runzhi",
        root="",
        normal_dir=r"C:\Users\Administrator\Desktop\B\GOOD",
        abnormal_dir=r"C:\Users\Administrator\Desktop\B\BAD",
        num_workers=0,
        train_batch_size=10,
        eval_batch_size=5,
        train_augmentations=train_transform,
        val_augmentations=eval_transform,
        test_augmentations=eval_transform,
        #augmentations=eval_transform,
    )
    datamodule.setup()这里要注意两点,这里的transform是从torchvision.transforms.v2里来的,它的方式也略有不同,定义如下,还有就是在如果定了了图像的归一化,和尺寸缩放,那么,在train_augment,val_augment,test_augment是要保证统一的,不然你可能得不到理想的结果图。
from torchvision.transforms.v2 import Compose, RandomAdjustSharpness, RandomHorizontalFlip, Resize, Normalize, ToPILImage, PILToTensor, ToTensor
    train_transform = Compose(
        [
            ToTensor(),
            RandomAdjustSharpness(sharpness_factor=0.7, p=0.5),
            RandomHorizontalFlip(p=0.5),
            Resize([128,128]),
            Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
        ],
    )
    eval_transform = Compose(
        [
            ToTensor(),
            Resize([128,128]),
            Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
        ],
    )第三,就是在predict层面,也要对输入的待测图像全部进行同样的resize和normalize的操作
我的完整代码如下,给自己看得
# Import the model and engine
import torch
from anomalib.data import Folder
from anomalib.engine import Engine
from anomalib.models import Patchcore
if __name__ == '__main__':
    pre_processor0 = Patchcore.configure_pre_processor( image_size = (128, 128))
    model =Patchcore( backbone="wide_resnet50_2",layers=["layer1", "layer2"], pre_trained=True,pre_processor= pre_processor0)
    engine = Engine()
    #####在这里要注意的是 Folder制作数据集时,它的transform是从torchvision.transforms.v2已入使用的
    from torchvision.transforms.v2 import Compose, RandomAdjustSharpness, RandomHorizontalFlip, Resize, Normalize, \
    ToPILImage, PILToTensor, ToTensor
    train_transform = Compose(
        [
            ToTensor(),
            RandomAdjustSharpness(sharpness_factor=0.7, p=0.5),
            RandomHorizontalFlip(p=0.5),
            Resize([128,128]),
            Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
        ],
    )
    eval_transform = Compose(
        [
            ToTensor(),
            Resize([128,128]),
            Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
        ],
    )
    datamodule = Folder(
        name="runzhi",
        root="",
        normal_dir=r"C:\Users\Administrator\Desktop\B\GOOD",
        abnormal_dir=r"C:\Users\Administrator\Desktop\B\BAD",
        num_workers=0,
        train_batch_size=10,
        eval_batch_size=5,
        train_augmentations=train_transform,
        val_augmentations=eval_transform,
        test_augmentations=eval_transform,
        #augmentations=eval_transform,
    )
    datamodule.setup()
    engine.train(datamodule=datamodule, model=model)
