windows10使用cuda11搭建pytorch深度学习框架——运行Dlinknet提取道路(四)——计算iou评估预测精度

再进行精度评估时使用了这个包的
from utils.utils_metrics import compute_mIoU

尝试:
安装utils包
去anaconda的powershell中输入安装指令
pip install
但貌似不是该头文件
还是报错找不到该文件
因此只能同级引用
引用方法见此博文

python引入其他文件夹里的py文件的方法

因为我有该util文件夹
直接放在运行程序里
也是多新建了一个_init_文件就成功运行了
不能文件夹套文件夹
不然会报错找不到该文件的

No such file or directory: ‘C:/Users/Administrator/Desktop/DeepGlobe-Road-Extraction-link34-py3/submits/log01_link34/235133_mask.png’

这个问题我分析了一下是因为下划线的问题,导致无法对应起来图片
预测之后新生成的图片名字是这样的
在这里插入图片描述
而real里面真实图片是这样的
在这里插入图片描述
这两者看似名字一样
实际上下划线长度不同
哭了
生成了半天
都没法比较。。。

源代码中test.py
最后一句:

cv2.imwrite(target+name[:-7]+'_mask.png',mask.astype(np.uint8))

改成

cv2.imwrite(target+name[:-7]+'mask.png',mask.astype(np.uint8))

就没有两个下划线了
在这里插入图片描述
这下终于正常了

return np.bincount(n * a[k].astype(int) + b[k], minlength=n ** 2).reshape(n, n) ValueError: cannot reshape array of size 256 into shape (2,2)

现在又出现了问题
通过我的小同伴的帮助,这个问题主要是函数没了解清楚
np.bincount()用法介绍
在这里插入图片描述

因为我生成的像素是0,255
所以是256大小的数字
因此会报错
在这里插入图片描述
为了计算需要将图片都化成0,1的图像

可以使用下面的代码

##除以255
import os
from PIL import Image
import cv2
import numpy as np
 
path = 'xxxxx'
savedpath = 'xxxxx'
filelist = os.listdir(path)
for item in filelist:
    im = Image.open(path + item) #打开图片
    im = cv2.imread(path + item)
    im2=im/255
    cv2.imwrite(savedpath + item, im2)
    print('item of %s is saved '%(item))

在这里,我想直接在读取图像数组时除以255即可
但是类型转换出现了问题

 a=label.flatten()/255        
 print(a)        
 a.astype(np.int64)        
 b=pred.flatten()/255        
 b.astype(np.int64)        
 hist += fast_hist(a, b,num_classes)  

这段代码报错

TypeError: Cannot cast array data from dtype(‘float64’) to dtype(‘int64’) according to the rule ‘safe’

这里生成的a数组[0. 0. 0. … 0. 0. 0.]
但需要的是[0 0 0 … 0 0 0]
这两者是不同的
于是使用循环来处理更保险:

 a=label.flatten()        
 for i in range(len(a)):            
 	a[i]=a[i]/255        
 print(a)                
 b=pred.flatten()        
 for i in range(len(b)):            
 	b[i]=b[i]/255

printa可以发现数组是[0 0 0 … 0 0 0]
程序正常运行啦!
我修改后的代码如下
在这里插入图片描述
这样就不用生成文件夹来储存0,1的图像啦


到现在,全部流程已经跑通
开始进行测试:
试跑了160个测试样本(都是训练的样本)
算出结果为
在这里插入图片描述
现在试试3221张另一个数据集的测试数据,对其进行预测
开始时间:
2022年1月17日19:48
20:13跑了大概1000张样本
25min一千张
目测3000张需要75min
21:03能跑完

22:57开始跑精度评估miou程序
2022年1月18日11:03已经跑完
结果如图:
在这里插入图片描述
具体类别的比例因为比较小
所以算下来的miou就不是很高
但这里可以看总的miou来判断精度

两个程序之前是单独运行的
现在程序跑通
把两个程序合并
进行完predict之后自动进行miou计算

这里继续进行尝试
试试用train做训练样本
还使用train来predict看看效果怎么样
不知道这样做是不是合理的
但是想满足一下我的好奇心
看看他的学习效果

3005个需要预测的样本
记录一下预测以及精度计算时间:
2022年1月18日11:54开始
2022年1月18日21:21预测+精度计算结束
在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Laney_Midory

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值