这个txt文件实际上是一个图像吗?

is this txt file actually an image?

我找到了这个GitHub关于使用人工神经网络进行图像分类(男性和女性图像)的代表,训练数据是 2 个目录“./male”和“./female”,每个目录包含 txt 文件列表。

这些文本文件包含多行数字,每行 16 个数字。 预览

37 40 48 49 49 45 41 34 34 34 33 34 33 33 33 33
32 31 31 31 30 30 29 29 28 27 28 27 27 26 26 26
25 25 24 24 24 23 23 22 22 21 21 20 20 19 19 19
18 19 20 21 25 25 24 22 16 17 15 22 21 20 21 20
20 20 19 19 19 16 20 21 23 23 23 23 23 23 23 24
24 24 25 24 24 25 26 25 25 26 26 25 26 26 26 26
27 27 27 28 28 29 29 29 29 30 29 29 29 29 29 29
29 30 29 29 30 30 30 30 30 30 29 29 29 29 28 29
...

没看懂!这些应该是图像吗(像素值矩阵)?

代表link: https://github.com/Kurispy/neuralnet

是的,文件包含灰度图像。看实际代码就很明显了。

通过调查 Main.java 的源代码,我们发现文件旨在 painted https://github.com/Kurispy/neuralnet/blob/master/Main.java#L90

public static void painter(FileInputStream fin) {
double[] store = new double[120 * 128];
    byte[] buffer = new byte[(15360 + 1) * 8];
    ByteBuffer b = ByteBuffer.wrap(buffer);
    DoubleBuffer db = b.asDoubleBuffer();
    
    try {
        while(fin.available() > 0) {
            fin.read(buffer, 0, (15360 + 1) * 8);
        
            
            db.get();
            db.get(store);
            db.rewind();
            paint(store);
        }
    }
    catch (java.io.IOException e) {
        System.err.println(e.getMessage());
    }
    
    
}

我们看到每个文件都被解释为 120 x 128 灰度图像,通过加载第一个文件并尝试像这样绘制它,我们看到它是一张脸的图片。