我在自己的数据集上运行SegNet(Segnet tutorial)。我通过test_segmentation.py
看到了很好的结果。
我的问题是我想看到真正的净结果,而不是test_segmentation自己的着色(通过类)。
例如,如果我训练了2个班级的网,那么在火车之后,我将不仅会看到2种颜色(正如我们在课程中看到的那样),但我们将看到真正的净颜色分割([0.22,0.19,0.3 .. ..)更轻更深,如网看到它]
我希望我能很好地解释自己。谢谢你的帮助。
答案 0 :(得分:0)
您可以使用python脚本来实现您想要的效果。看看this script。
命令out = out['argmax']
,提取原始输出,因此您可以根据需要获得具有“更亮和更暗”值的分割图。
答案 1 :(得分:0)
当你说'真实'净颜色分割我将假设您的意思是概率图。实际上,最后一层将为每个类提供一个映射;如果你在inference.py中检查函数predict,它们会取argmax;这是具有最高概率的通道(代表类)。如果你想获得这些地图,你只需要在不计算argmax的情况下获取数据;类似的东西:
#include "stdafx.h"
#include <iostream>
using namespace std;
void averScore(int test[], int size);
void highScore(int test[], int size);
void lowestScore(int test[], int size);
int main()
{
const int SIZE1 = 5;
const int SIZE2 = 6;
const int SIZE3 = 4;
const int SIZE4 = 5;
int set1[SIZE1] = { 90,85, 88, 80, 85 };
int set2[SIZE2] = { 89, 75, 78, 82, 83, 80 };
int set3[SIZE3] = { 88, 82, 88, 90 };
int set4[SIZE1] = { 85, 87, 88, 90, 92 };
highScore(set1, SIZE1);
return 0;
}
void highScore(int num[], int size)
{
int highnum = 0;
for (int i = 0; i < size; i++)
{
if (num[i] > highnum)
highnum = num[i];
cout << num[i];
}
cout << highnum;
}
答案 2 :(得分:0)
我解决了。解决方法是在scipy保存方法中将cmin
和cmax
从0到1范围。例如:scipy.misc.toimage(output, cmin=0.0, amax=1).save(/path/.../image.png)