图像分割做代码复现的时候遇到了问题

第一次发帖,在看csdn一篇帖子做图像分割时候遇到了问题

看了这篇帖子想自己运行一下,然后替换自己的数据集训练个模型
https://blog.csdn.net/qq_44961869/article/details/123348712

目前是用他给的数据集能正常建模然后能用模型分割图像

然后准备替换自己的数据集
用图像标注工具处理完图片,然后把josn文件转换成了png图片,但是发现和他给的示例的标签文件有点不一样
自己的是这样的

img

他的示例里的是这样的,而且上面的文件虽然是png但是不能查看,下面是纯黑的图

img

img

标注完了就感觉和他这个不太一样,应该不太行,所以尝试运行了一下果然报错了

img

大概搜了一下好像和损失函数有关系?改了损失函数后又出现了新的错

img

img

又查了一下问题还是和标签文件的数字编码有关系,然后跟这个损失函数也有关系
所以现在不知道改怎么改了
我自己没学过图像处理和深度学习建模这方面的课程,只是想单纯复现一下代码
有没有佬能给个解决的思路或者方法,或者指点一下问题出在哪里,怎么才能把我的标签文件弄成像这个示例这样的

再有一个问题就是
这个数据集明明有7393张图片,但是训练模型的时候怎么才显示739

img

img

求佬解答

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7559962
  • 除此之外, 这篇博客: 【数据共享】深度学习+计算机视觉+自然语言处理中的 深度学习领域最缺的就是数据!深度学习领域数据覆盖面之广,数据量之深。丰富的数据量,让机器能阅历无数,自然对于特征的提取会更加鲜明,由于最近在做的项目,深感数据的重要性,数据难求,尤其是数据标注,就更加累人了,多少人是请着外包公司做的数据标注,而由于保密等原因,皆无法开源数据,以及标注数据结果,我暂时对数据完全开源(等着数据实在稀有或自己的数据做起来花费的时间精力过多,会选择其他方式发布——例如公众号发布)。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 话不多说,看数据:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BAqjf10Y-1593785985809)(D:\CSDN\pic\数据共享\1593781109196.png)]

    使用labelimg进行数据标注:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l0I3DeyB-1593785985812)(D:\CSDN\pic\数据共享\1593781200013.png)]

    基于YOLOV3——tensorflow进行吸烟检测: https://github.com/james5551/Smoke_detection.git
    以及自己在做的吸烟检测,关注博主,敬请期待!

    火灾,烟雾数据集:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hJK5mSgv-1593785985814)(D:\CSDN\pic\数据共享\1593781445488.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4qoj0bFY-1593785985816)(D:\CSDN\pic\数据共享\1593781578350.png)]

    2w张

    附上两个的github地址:

    https://github.com/JavisDaDa/SmokeDetectionCNN.git

    https://github.com/lancezhange/smoke_recognition.git

    数据集太大了,要是github下载失败,需要的可以评论区留言。

  1. 他给的实例图片,你查看不了的那些应该是损坏了。下面纯黑的是对的,你看起来全黑是没错,但是如果用画图之类的查看灰阶的话,里面是有值的,只不过可能类别少,值为1,2,3,4之类的看起来跟黑的没啥两样而已。
  2. 你转出来的png图才是有问题的,你读取之后你的标签类别就不对了,需要额外处理吧,你目前看起来是蓝色[255,0,0]为你的标签mask,那么你需要转为1才对,也就是使用蓝色通道然后处于255转成1,这样你就是有一个类加一个背景(背景算不算类要看代码怎么处理背景,算不算类别数目)。总之,在分割里面,一般都是需要将标签转为0到num_class数的,一般0是背景类所在,你的类别下标从1开始(有些特殊的数据集是255为背景)。就算是很多使用三通道RGB作为标签mask的,也要根据映射表转成我说的0到num_class类,不然后面都不好处理