前言:目前在做这个医学图像算法研究的项目,实际是项目,这里说成研究是指边做边学习这样的意思。毕竟也不容易,课程多,杂事多,还要做两个项目,真的想学会多重影分身术来帮我解决问题。话不多说,给大家看下基于这个数据集训练的效果吧。具体的代码目前还不支持公开,到时候做完了整个项目我再放出来,目前给大家看下测试的效果。

这个是kvasir v2胃病数据集,里面有8个类别,每个类别1000张图片,共8000张。本次测试将训练集:验证集:测试集=7:2:1进行测试

数据预处理及数据增强代码如下图所示

def get_torch_transforms(img_size=224):
    data_transforms = {
        'train': transforms.Compose([
            # transforms.RandomResizedCrop(img_size),
            transforms.Resize((img_size, img_size)),
            transforms.RandomHorizontalFlip(p=0.2),
            transforms.RandomRotation((-5, 5)),
            transforms.RandomAutocontrast(p=0.2),
            transforms.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2, hue=0.2),  # 增加的代码
            transforms.ToTensor(),
            transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
        ]),
        'val': transforms.Compose([
            # transforms.Resize((img_size, img_size)),
            # transforms.Resize(256),
            # transforms.CenterCrop(img_size),
            transforms.Resize((img_size, img_size)),
            transforms.ToTensor(),
            transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
        ]),
    }
    return data_transforms


# 训练集的预处理以及数据增强
def get_train_transforms(img_size=320):
    return albumentations.Compose(
        [
            albumentations.Resize(img_size, img_size),
            albumentations.HorizontalFlip(p=0.5),
            albumentations.VerticalFlip(p=0.5),
            albumentations.Rotate(limit=180, p=0.7),
            # albumentations.RandomBrightnessContrast(),
            albumentations.ShiftScaleRotate(
                shift_limit=0.25, scale_limit=0.1, rotate_limit=0
            ),
            albumentations.Blur(blur_limit=3, p=0.1),  # 增加的代码
            # albumentations.Random
            albumentations.Normalize(
                [0.485, 0.456, 0.406], [0.229, 0.224, 0.225],
                max_pixel_value=255.0, always_apply=True
            ),
            ToTensorV2(p=1.0),
        ]
    )


# 验证集和测试集的预处理
def get_valid_transforms(img_size=224):
    return albumentations.Compose(
        [
            albumentations.Resize(img_size, img_size),
            albumentations.Normalize(
                [0.485, 0.456, 0.406], [0.229, 0.224, 0.225],
                max_pixel_value=255.0, always_apply=True
            ),
            ToTensorV2(p=1.0)
        ]
    )

下面是ResNet50的测试效果,超参数,训练图,测试图,以及测试准确率都在图中

下面是ResNet101的测试效果,超参数,训练图,测试图,以及测试准确率都在图中

下面是ResNext50的测试效果,超参数,训练图,测试图,以及测试准确率都在图中

 下面是ResNext101的测试效果,超参数,训练图,测试图,以及测试准确率都在图中

下面是DenseNet121的测试效果,超参数,训练图,测试图,以及测试准确率都在图中

  下面是Shufflenet v2的测试效果,超参数,训练图,测试图,以及测试准确率都在图中

总结

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐