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文件夹,是相对固定的。固定的项目代码文件有利于项目代码的阅读和管理,而相对固定的数据管理树可以减少
注意
- 命名:对于项目、文件夹和文件等命名,有英语单词的就用英语单词,不要用拼音