列车组的SegNet结果(通过test_segmentation.py测试)

时间:2016-10-10 10:46:32

标签: python-2.7 neural-network caffe conv-neural-network

我在自己的数据集上运行SegNet(Segnet tutorial)。我通过test_segmentation.py看到了很好的结果。 我的问题是我想看到真正的净结果,而不是test_segmentation自己的着色(通过类)。 例如,如果我训练了2个班级的网,那么在火车之后,我将不仅会看到2种颜色(正如我们在课程中看到的那样),但我们将看到真正的净颜色分割([0.22,0.19,0.3 .. ..)更轻更深,如网看到它] 我希望我能很好地解释自己。谢谢你的帮助。

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保存方法中将cmincmax从0到1范围。例如:scipy.misc.toimage(output, cmin=0.0, amax=1).save(/path/.../image.png)