计算机视觉的工程算法与数据

0 资料

1 算法

计算机视觉有多个方向,在工程中常用的有分类、检测、分割等。通常在工程上,我们需要急切知道最经典/新算法在工程实际数据上的表现如何,因此会涉及到大量的实验。在这个过程中,通常多是要下载不同文章的代码得到在实际数据集上的表现,但是通常不同作者的代码组织形式、风格、框架都有很大不同,这导致工程人员常常会花费大量时间在跑通别人的代码上,这会浪费大量的时间。因此,急切需要一种框架,其可以以高效且统一的形式实现各类算法,包含经典和最新的算法。openMMLab就满足这种需求,因此推荐openMMLab为计算机视觉中深度学习算法的基础库。

1.1 openMMLab深度学习库

openMMLab是一个用于学术研究和工业应用的开源项目,其涵盖了计算机视觉的广泛研究主题,例如分类、检测、分割和超分辨率。其优势:

  • (1)使用成本低:不同计算机视觉算法的训练、测试和部署都遵守类似的流程,所以学习成本低。例如,当学会如何训练、测试和部署检测模型之后,分类模型、分割和跟踪等其他模型也是类似的流程,基本一致;
  • (2)时效性高:每个主题都涵盖几乎最新的SOTA论文的实现,可快速使用最新算法;
  • (3)完整:计算机视觉主题非常完整,如包含分类、检测和分割等基础主题,也包含跟踪、视频分类等小众主题。
  • (4)工具多:提供非常多的工具,例如数据可视化、训练可视化等;

1.2 代码管理

  • 代码维护:代码要在代码管理平台上管理,如git和svn。
  • 代码和数据分开管理

2 数据

2.1 分析

数据的管理层级可以是:<基础数据路径>/状态(原始/清洁)/项目/算法(oc/od/os/ot等)/场景(地点_事件等)/日期(年月日)/用途(训练/验证/测试)/数据(images+ labels)
详细解释如下:

  • 基础数据路径:基础路径,一般是电脑中较大的盘
  • 状态:原始数据还是清洗完的数据
  • 项目:具体项目名称
  • 算法:如分类(object classification, oc)、检测(object detection, od)、分割(object segment, os)等;
  • 日期:如20240710
  • 用途:如训练(train)、验证(val)和测试(test)
  • 数据:通常包含images和labels

2.2 典型管理

2.2.1 一级目录

通常工程目录会涉及到说明文档、代码、数据、调试信息、备份和临时文件等,所以一级目录可以如下:

01_doc  # 放置一些基础说明或者补充文档
02_proj  # 项目
03_data  # 数据(该文件夹相对固定)
07_debug  # 这一级别文件比较灵活,具体可按照日期命名
08_backup   # 放置备份,如安装包、库等
09_tmp   # 放置临时文件

2.2.2 多级目录

更加详细的目录如下:

.
├── 01_doc  # 放置一些基础说明或者补充文档
│   └── 一些基础说明.md
├── 02_proj  # 项目
│   ├── proj1  # 项目1
│   │   ├── doc  # 项目的相关文档,包括项目背景、需求文档等
│   │   └── readme.md  # 项目的使用文档
│   ├── proj2
│   └── projx  # 其他项目仿照项目1文件树
├── 03_data  # 数据(该文件夹相对固定)
│   ├── 00_ori # 原始数据
│   │   └── bei_jiao_water_pollution  # 项目名称,如顺德水污染(具体看项目要求的详细程度)
│   │       ├── 20231201  # 日期
│   │       └── 20231202
│   └── 01_clean  # 清洗后的数据
│   │   ├── proj1  # 项目1的数据
│   │   │   ├── oc  # 分类模块
│   │   │   ├── od  # 检测模块
│   │   │   │   ├── bei_jiao_water_pollution  # 顺德水污染(具体看项目要求的详细程度)
│   │   │   │   │   ├── 20231201  # 日期,具体到天
│   │   │   │   │   │   ├── test  # 测试
│   │   │   │   │   │   │   ├── images # 图像
│   │   │   │   │   │   │   └── labels(optional)  # 标签(该项为可选择)
│   │   │   │   │   │   ├── train  # 训练
│   │   │   │   │   │   │   ├── images
│   │   │   │   │   │   │   └── labels(optional)
│   │   │   │   │   │   └── val  # 验证
│   │   │   │   │   │       ├── images
│   │   │   │   │   │       └── labels(optional)
│   │   │   │   │   └── 20240708
│   │   │   │   ├── sun_de_soil_corrosion
│   │   │   │   └── sun_de_water_pollution
│   │   │   └── os  # 分割模块
│   │   ├── proj2
│   │   └── projx # 其他项目仿照项目1文件树
├── 07_debug  # 这一级别文件比较灵活,具体可按照日期命名
│   ├── 20190812  
│   ├── 20240107
│   └── datax
├── 08_backup  # 放置备份,如安装包、库等
└── 09_tmp  # 放置临时文件

上述文件夹中,02_proj和03_data文件夹,是相对固定的。固定的项目代码文件有利于项目代码的阅读和管理,而相对固定的数据管理树可以减少

注意

  • 命名:对于项目、文件夹和文件等命名,有英语单词的就用英语单词,不要用拼音
  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值