【问题标题】:How did you run FCN code semantic segmentation?你是如何运行 FCN 代码语义分割的?
【发布时间】:2025-12-22 21:25:11
【问题描述】:

我想运行 [FCN 代码][1] 进行语义分割。但是,我是 Caffe 的初学者,我不知道应该从什么时候开始运行代码。

跑步有分步指导吗?

【问题讨论】:

  • 据我所知,你只需要运行你想要的solve.py 脚本,就是这样。
  • @hbaderts 非常感谢您的回答,您知道如何学习整个网络和层吗?以及如何将其应用于我的特定数据?如果您知道任何微调资源给我介绍,我将不胜感激。再次感谢。
  • @hbaderts 如何下载 caffemodel?谢谢
  • @hbaderts 如果您详细说明您的答案,那将非常有帮助。
  • @S.EB 如果您想通了,请发布答案。它将帮助未来的学习者。

标签: caffe pycaffe matcaffe


【解决方案1】:

由于我无法在此处获得太多帮助,因此我将步骤发布在此处。对于那些没有经验的人(比如我)可能会有所帮助。我花了很长时间才弄清楚如何运行它并获得结果。应该可以运行成功,但是和我的情况类似,结果是空白图片很久,终于知道应该怎么设置了。

我可以在我的数据上成功执行FCN8s,我执行了以下步骤:

  1. 将数据分为两组(训练、验证)以及训练和验证中对应图像的标签(共 4 个文件夹:train_img_lmdbtrain_label_lmdbval_img_lmdbval_label_lmdb

  2. 将您的数据(每个数据单独)转换为 LMDB 格式(如果不是 RGB,使用 cv2 函数转换),您将拥有 4 个 lmdb 文件夹,包括 data.mdblock.mdb。示例代码是available here

  3. 从作者提供的url 下载.caffemodel

  4. 将路径更改为train_val.ptototxt文件中的lmdb文件路径,您应该有4个数据层,sourcetrain_img_lmdbtrain_label_lmdbval_img_lmdbval_label_lmdb的路径,类似于this link

  5. this line之后添加convolution层(这里,我有五个类,然后根据地面实况图像中的类数更改num_output):

    层{ 名称:“score_5classes” 类型:“卷积” 底部:“分数” 顶部:“score_5classes” 卷积参数 { 数字输出:5 垫:0 内核大小:1 } }

  6. 改变损失层如下(根据你在底层的名字):

    层{ 名称:《损失》 类型:“SoftmaxWithLoss” 底部:“score_5classes” 底部:“标签” 顶部:“损失” 损失参数{ 标准化:真 } }

  7. 在您拥有 pycaffe 并安装 caffe 环境中运行模型以开始训练。

    caffe train -solver=/path/to/solver.prototxt -weights /path/to/pre-trained/model/fcn8s-heavy-pascal.caffemodel 2>&1 | tee /path/to/save/training/log/file/fcn8_exp1.log

希望对您有所帮助。感谢@Shai 的帮助

【讨论】:

  • 这真的很有帮助!谢谢!你知道如何首先制作数据集吗?我已经在 SO 上问过这个问题,但我还没有得到任何答复。我查看了一些现有的数据集,不太了解发生了什么。例如,我有原始图像,相同的图像,感兴趣对象的像素被照亮(我想以某种方式标记),然后是一个文本文件。但它究竟是如何形成的呢?这是我问的问题:*.com/questions/47964716/…
  • 另外,请问第 5 点和第 6 点背后的直觉是什么?
  • @Jonathan 很抱歉回复晚了,我更新了答案并分享了创建用于分段的 lmdb 数据的链接。