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)