TransUnet官方代码测试自己的数据集(已训练完毕)

这篇具有很好参考价值的文章主要介绍了TransUnet官方代码测试自己的数据集(已训练完毕)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

***************************************************

码字不易,收藏之余,别忘了给我点个赞吧!

***************************************************

---------Start

首先参考上一篇的训练过程,这是测试过程,需要用到训练过程的权重。

1. TransUnet训练完毕之后,会生成权重文件(默认保存位置如下),snapshot_path为保存权重的路径。

transunet训练自己的数据集,深度学习,深度学习,pytorch,python,人工智能,卷积神经网络
权重文件
transunet训练自己的数据集,深度学习,深度学习,pytorch,python,人工智能,卷积神经网络

2. 修改test.py文件

调整数据集路径。
transunet训练自己的数据集,深度学习,深度学习,pytorch,python,人工智能,卷积神经网络
训练和测试时的图像设置相同大小,并设置主干模型的名称同训练时一致。
transunet训练自己的数据集,深度学习,深度学习,pytorch,python,人工智能,卷积神经网络

配置数据集相关信息。
transunet训练自己的数据集,深度学习,深度学习,pytorch,python,人工智能,卷积神经网络
手动添加权重。
transunet训练自己的数据集,深度学习,深度学习,pytorch,python,人工智能,卷积神经网络

3. 设置DataLoader

设置DataLoader中参数num_workers=0。
transunet训练自己的数据集,深度学习,深度学习,pytorch,python,人工智能,卷积神经网络

4. 修改utils.py文件

替换utils.py中的test_single_volume函数,原网络输出的是0,1,2,3,4像素的图片,分别代表5个类别,直接显示均呈黑色。对此,我们通过像素调整,使每个类别呈现不同的颜色。

def test_single_volume(image, label, net, classes, patch_size=[256, 256], test_save_path=None, case=None, z_spacing=1):
    image, label = image.squeeze(0).cpu().detach().numpy(), label.squeeze(0).cpu().detach().numpy()
    _,x, y = image.shape
    if x != patch_size[0] or y != patch_size[1]:
        #缩放图像符合网络输入
        image = zoom(image, (1,patch_size[0] / x, patch_size[1] / y), order=3)
    input = torch.from_numpy(image).unsqueeze(0).float().cuda()
    net.eval()
    with torch.no_grad():
        out = torch.argmax(torch.softmax(net(input), dim=1), dim=1).squeeze(0)
        out = out.cpu().detach().numpy()
        if x != patch_size[0] or y != patch_size[1]:
            #缩放图像至原始大小
            prediction = zoom(out, (x / patch_size[0], y / patch_size[1]), order=0)
        else:
            prediction = out

    metric_list = []
    for i in range(1, classes):
        metric_list.append(calculate_metric_percase(prediction == i, label == i))

    if test_save_path is not None:
        a1 = copy.deepcopy(prediction)
        a2 = copy.deepcopy(prediction)
        a3 = copy.deepcopy(prediction)

        a1[a1 == 1] = 255
        a1[a1 == 2] = 0
        a1[a1 == 3] = 255
        a1[a1 == 4] = 20

        a2[a2 == 1] = 255
        a2[a2 == 2] = 255
        a2[a2 == 3] = 0
        a2[a2 == 4] = 10

        a3[a3 == 1] = 255
        a3[a3 == 2] = 77
        a3[a3 == 3] = 0
        a3[a3 == 4] = 120

        a1 = Image.fromarray(np.uint8(a1)).convert('L')
        a2 = Image.fromarray(np.uint8(a2)).convert('L')
        a3 = Image.fromarray(np.uint8(a3)).convert('L')
        prediction = Image.merge('RGB', [a1, a2, a3])
        prediction.save(test_save_path+'/'+case+'.png')


    return metric_list


**方便小伙伴理解这部分代码,特意做了个图,a1,a2,a3分别代表RGB三个通道,开始它们的值通过deepcopy函数直接赋值,故三者的值都是一样的。
这里拿类别1举例:a1[a12]=0代表R通道中输出结果为2的赋值0,
a2[a2
2]=255代表G通道中输出结果为2的赋值255,
a3[a3==2]=77代表B通道中输出结果为2的赋值77,(0,255,77)对应就是绿色,类别2就是绿色(轮子)。
然后通过Image.merge(‘RGB’, [a1, a2, a3])函数合并三个通道,此时prediction就成了三通道彩色图。

transunet训练自己的数据集,深度学习,深度学习,pytorch,python,人工智能,卷积神经网络
transunet训练自己的数据集,深度学习,深度学习,pytorch,python,人工智能,卷积神经网络

至此,设置完毕,右键run运行。

5. 测试结束

测试结束后,会在根目录下生成predictions文件夹,文件夹的内容如下。
transunet训练自己的数据集,深度学习,深度学习,pytorch,python,人工智能,卷积神经网络
transunet训练自己的数据集,深度学习,深度学习,pytorch,python,人工智能,卷积神经网络

transunet训练自己的数据集,深度学习,深度学习,pytorch,python,人工智能,卷积神经网络文章来源地址https://www.toymoban.com/news/detail-789703.html

到了这里,关于TransUnet官方代码测试自己的数据集(已训练完毕)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 医学图像分割2 TransUnet:Transformers Make Strong Encoders for Medical Image Segmentation

    TransUnet:Transformers Make Strong Encoders for Medical Image Segmentation 在医学图像分割领域,U形结构的网络,尤其是Unet,已经取得了很优秀的效果。但是,CNN结构并不擅长建立远程信息连接,也就是CNN结构的感受野有限。尽管可以通过堆叠CNN结构、使用空洞卷积等方式增加感受野,但也

    2024年02月05日
    浏览(32)
  • TensorFlow学习:使用官方模型和自己的训练数据进行图片分类

    教程来源:清华大佬重讲机器视觉!TensorFlow+Opencv:深度学习机器视觉图像处理实战教程,物体检测/缺陷检测/图像识别 注: 这个教程与官网教程有些区别,教程里的api比较旧,核心思想是没有变化的。 上一篇文章 TensorFlow学习:使用官方模型进行图像分类、使用自己的数据

    2024年02月08日
    浏览(36)
  • 使用yolox训练自己的数据集并测试

    ​​​​​​https://github.com/bubbliiiing/yolox-pytorch 百度网盘链接给出自己完整的模型(包括数据集以及权重文件): 链接:https://pan.baidu.com/s/1JNjB42u9eGNhRjr1SfD_Tw  提取码:otq0 1.选择配置好的深度学习环境 2.修改train.py里面的classes_path,将自己想要分类的类别填充进去  3.修改权

    2024年02月09日
    浏览(24)
  • yolov8代码梳理 训练自己的数据 最终版

    最开始为了检测不规则的麻包袋,所以采用了目标检测。yolov3,fasterrcnn,ssd。这种矩形框还是可以用。后面检测的物体变成了规则的纸箱,我们还用目标检测发现,没有旋转角度,因为箱子的摆放不是正的。只能通过opencv的minarea去找到最小矩形框去寻找角度。但是opencv的方

    2024年02月12日
    浏览(33)
  • InternImage segmentation部分代码复现及训练自己的数据集(一)

    所谓“复现”,不过是跑通了官方的代码,以下仅为个人的一些经验和理解,欢迎指正。 (其实仅作为个人学习使用,也欢迎交流) 首先贴出官方文献和代码: 官方文献:InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions,链接:InternImage: Exploring Large-Sca

    2024年02月14日
    浏览(29)
  • 【DDRNet】DDRNet项目使用单GPU、自己的数据集训练、得到测试图像

    最近需要对一些细胞图像进行分割,需要比较几个模型之间的优劣,于是找到了DDRNet。 DDRNet项目来源:https://github.com/chenjun2hao/DDRNet.pytorch 电脑环境配置:win11+NVIDIA GeForce RTX 3060 Laptop+CUDA11.7 如果想用他的数据集cityscapes和他的预训练模型,可以根据上面的项目来源中的指示来做

    2024年02月11日
    浏览(30)
  • 深度学习:使用nanodet训练自己制作的数据集并测试模型,通俗易懂,适合小白

    关于目标检测的模型有很多, nanodet 模型小且轻量化,适合移植部署到硬件设备上,非常推荐学习这个模型。经过我自己踩了无数坑后总结了此教程,助学刚接触nanodet,想要快速上手的学者,教程很详细,学者耐心看。 我提供了一个已经调试好的源码包,后面的教程也都是

    2024年02月15日
    浏览(29)
  • 手写数学公式识别领域最新论文CAN代码梳理,以及用自己的数据集训练

    Counting-Aware Network(CAN)-手写数学公式识别网络是好未来与白翔团队一起发布的一篇2022年的被ECCV收录的论文,该论文旨在缓解目前大部分基于注意力机制的手写数学公式识别算法在处理较长或者空间结构较复杂的数学公式时,容易出现的注意力不准确的情况。该论文通过将符号

    2024年02月07日
    浏览(24)
  • U2Net、U2NetP分割模型训练---自定义dataset、训练代码训练自己的数据集

    前言 博客很久没有更新了,今天就来更新一篇博客吧,哈哈; 最近在做图像分割相关的任务,因此,写这么一篇博客来简单实现一下分割是怎么做的,内容简单,枯燥,需要耐心看,哈哈; 博客的内容相对简单,比较适合刚接触分割的同学参考学习(这篇博客在算法训练上

    2024年02月05日
    浏览(26)
  • 深度学习:使用UNet做图像语义分割,训练自己制作的数据集并推理测试(详细图文教程)

    语义分割(Semantic Segmentation)是图像处理和机器视觉一个重要分支。与分类任务不同,语义分割需要判断图像每个像素点的类别,进行精确分割。语义分割目前在自动驾驶、自动抠图、医疗影像等领域有着比较广泛的应用。我总结了使用UNet网络做图像语义分割的方法,教程很详

    2024年01月18日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包