码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 语义分割 FCN-DenseNet 应用入门


    语义分割 FCN-DenseNet 应用入门

    • 1. 简介
    • 2. 源码
    • 3. 数据集
      • 3.1 开源数据集
      • 3.2 自定义数据集
        • 3.2.1 建立数据集文件夹
        • 3.2.2 标注
        • 3.2.3 转化
    • 4. 训练
    • 5. 验证


    1. 简介

    在计算机视觉领域,语义分割指的是将数字图像细分为多个图像子区域的过程
    语义分割的目的是简化或改变图像的表示形式,使得图像更容易理解和分析
    语义分割通常用于定位图像中的物体和边界(线,曲线等)
    更精确的,语义分割是对图像中的每个像素加标签的一个过程,
    这一过程使得具有相同标签的像素具有某种共同视觉特性
    在这里插入图片描述
    语义分割的领域非常多,无人车、地块检测、表计识别等等


    2. 源码

    根据GitHub上开源的代码 Sharpiless FCN-DenseNet 进行一些更改:

    1. 调整数据集分布
    2. 新增训练和检验过程可视化
    3. 新增数据集处理工具
    4. 新增预训练模型
    5. 新增少许自定义参数等

    可以通过以下渠道下载:

    • GitHub:FCN-DenseNet
    • CSDN:FCN-DenseNet
    • Gitee:FCN-DenseNet

    3. 数据集


    3.1 开源数据集

    本案例使用飞桨里的一个例子的 Oxford-IIIT Pet数据集
    里面包含了宠物照片和对应的标签数据
    宠物图片在 /images
    标签数据在 /annotations/trimaps
    具体详情参考 飞桨官方文档说明
    在这里插入图片描述
    这边标签是灰度图,还需要在处理一下,利用 tool_img2mask.py 根据实际情况将所有标签图片转换为所需的格式

    在这里插入图片描述
    左边为原图标签,宠物为1,背景为2,边缘为3,这里处理后只保留宠物特征

    然后通过 tool_img2data.py 将原图和标签打乱并按比例分配到新的地址成为训练集和测试集
    原图训练集:/resources/images/data/train/img
    标签训练集:/resources/images/data/train/mask
    原图测试集:/resources/images/data/test/img
    标签测试集:/resources/images/data/test/mask

    在这里插入图片描述
    在这里插入图片描述


    3.2 自定义数据集


    3.2.1 建立数据集文件夹

    在工程中新建文件夹 /resources/images/data_json,将所有数据原图均放置于此

    在这里插入图片描述
    这里以Oxford-IIIT Pet数据集的第一张图片为例


    3.2.2 标注

    使用 开源的数据标注工具Labelme
    安装也比较简单,版本不要太高了,后面用的时候会有问题:

    $ pip3 install labelme==3.16.2
    
    • 1

    在 /resources/images/data_json启动 Labelme

    $ labelme
    
    • 1

    在这里插入图片描述
    保存为 json 格式,并在同一地址,后续方便转换处理

    在这里插入图片描述


    3.2.3 转化

    此时再通过 tool_json2dataset.py 转化所有文件并生成原图和标签图片
    在这里插入图片描述
    此时所有可以利用的数据均在 /resources/images/dataset 文件夹中

    然后同样通过 tool_dataset2data.py 将 dataset 中的原图和标签打乱并按比例分配到新的地址成为训练集和测试集
    原图训练集:/resources/images/data/train/img
    标签训练集:/resources/images/data/train/mask
    原图测试集:/resources/images/data/test/img
    标签测试集:/resources/images/data/test/mask


    4. 训练

    为了有足够强大的数据,这里使用处理过的Oxford-IIIT Pet数据集
    根据自己电脑硬件合理调整参数进行训练,执行train.py文件

    在这里插入图片描述
    默认每5次迭代验证并保存最优的模型于 parameters_densenet121 文件夹

    parser.add_argument('--svae_interval', type=int, default=5)  # svae interval
    
    • 1

    5. 验证

    执行test.py文件
    在这里插入图片描述
    可以在 resources/images/data/test 看到分割的效果图:
    在这里插入图片描述
    抽取mask里的图片出来对比效果:
    在这里插入图片描述
    还是可以的


    谢谢

  • 相关阅读:
    汇编-DUP操作符
    shell之常用小工具(sort、uniq、tr、cut)
    vs2022+resharper创建模板——实现在新建文件的时候自动生成防卫式声明和自定义语句
    vue.js毕业设计,基于vue.js前后端分离在线考试系统(H5移动项目) 开题报告
    大学生个人博客网页设计模板 学生个人博客网页成品 简单个人网站作品下载 静态HTML CSS个人网页作业源代码
    Mybatis-Plus的介绍和使用
    为脚本创建软连接到指定的PATH中,变为自定义命令程序
    LeetCode 0226. 翻转二叉树
    Spark 的主要组件及任务分工
    快速理解DDD领域驱动设计架构思想-基础篇 | 京东物流技术团队
  • 原文地址:https://blog.csdn.net/qq_32618327/article/details/125654652
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号