目前在做分割模型的部署工作,在部署调试中我们想看到网络输出层的结果图。分类任务的网络输出结果就是一个概率图,也就是把概率图可视化,该程序同样适用于热力图可视化等。
代码
# coding=utf-8
import numpy as np
import cv2
import os
import sys
#命令行执行时第一个参数为输出结果保存位置路径,第二个参数为阈值
out_path = sys.argv[1] #网络模型输出文件保存的位置
threshod = sys.argv[2]
#我目前的任务是分割的二分类,即只要区分前景和背景,用阈值区分输出的概率图
x = 0
for root, dirs, files in os.walk(out_path):#遍历所有的网络输出结果
for d in dirs:
print(d) #打印子资料夹的个数
for file in files:
x = x+1
print(file)
#讀入圖像
img_path = root+'/'+file
#img = cv2.imread(img_path,1)
result_bin = np.fromfile(img_path, dtype=np.float32)#直接拿到的网络输出通常是二进制32位浮点,具体是否需要修改解码规格还要看你当前的网络状态
img = result_bin.reshape(400,504) #网络的输出通常是一个一维向量,此时根据实际你的图像w h进行reseize操作
#img = img[:, 4:]
#print("max data in img:",img.max)
for i in range(399):#给全部的像素点按照阈值划分前景和背景
for j in range(503):
if img[i,j] >= float(threshod):
img[i,j] = 255.
else:
img[i,j] = 0.
#img [img < threshod] = 0. #这种阈值划分方式也可以,和上面的二选一
#img [img >= threshod] = 0.5
cv2.imshow("result", img)
cv2.imwrite(img_path + '_res.jpg', 255*img)
cv2.waitKey(100)
防止万一的留言看不到 V: fjj19930707