【问题标题】:is this txt file actually an image?这个 txt 文件实际上是图像吗?
【发布时间】:2022-01-27 01:45:51
【问题描述】:

我在 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
...

我不明白!这些应该是图像(像素值矩阵)吗?

代表链接: https://github.com/Kurispy/neuralnet

【问题讨论】:

  • 看起来有点像没有标题的 ASCII(“普通”或 P2)PGM 文件...

标签: java image neural-network image-classification


【解决方案1】:

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

【讨论】:

  • 虽然您的答案可能实际上是正确的,但它显然没有帮助。一个人提出问题的全部原因是因为它确实对他们来说并不明显。为了提供帮助,您的答案需要向他们展示您所看到的,以便他们也能清楚地看到。
【解决方案2】:

通过调查 Main.java 的源代码,我们发现文件是为了绘制 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 灰度图像,通过加载第一个文件并尝试像这样绘制它,我们看到它是一张人脸的图片。

【讨论】:

  • 非常感谢,这真的很有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-17
  • 2012-03-21
  • 1970-01-01
  • 2016-10-06
  • 2018-06-05
  • 2016-01-06
  • 1970-01-01
相关资源
最近更新 更多