CVChain:一条用视觉竞赛和项目经验打磨出的计算机视觉完整工具链

极市平台

共 5220字,需浏览 11分钟

 ·

2020-11-24 16:22

↑ 点击蓝字 关注极市平台

作者丨mileistone
来源丨https://zhuanlan.zhihu.com/p/271963670
编辑丨极市平台

极市导读

 

本文作者团队在做项目和打比赛的过程中,总结出了一条计算机视觉工具链:CVChain,它纵向上涵盖了一个CV任务的完整生命周期,横向上则包含了3个CV基本任务,即分类、语义分割和目标检测。 >>加入极市CV技术交流群,走在计算机视觉的最前沿


我们这一年来做的一些工作(总结见文章最下方)现在差不多形成了一个较完善的计算机视觉工具链——CVChain。我们这一年来做的一些工作(总结见文章最下方)现在差不多形成了一个较完善的计算机视觉工具链——CVChain。

纵向上它涵盖了一个计算机视觉任务的生命周期:数据分析与模型选型模型训练发现模型存在的问题并优化模型加速模型SDK编写;横向上它包含了计算机视觉中三个基本任务:分类、语义分割、目标检测;与此同时它还总结了计算机视觉入门到进阶的学习框架。一言以蔽之:有了CVChain,妈妈再也不用担心我搞不定计算机视觉!

CVChain是我们平常做项目或者打比赛过程中打磨出来的,它们可以满足计算机视觉算法工程师日常大部分需求,比如:

1. 刚踏入计算机视觉领域,不知道从何学起,需要一张学习的地图

  • https://github.com/mileistone/study_resources/blob/master/modeling/learning_framework/learning_framework_general.md
部分示例

带着自己一步一步领略计算机视觉的风采;


2. 已经成为一名合格的计算机视觉算法工程师,开始接任务。当任务来了,需要分析数据分析数据以进行模型选型、模型超参的初步设定;

  • https://github.com/Media-Smart/volkscv/tree/master/volkscv/analyzer/statistics


3. 模型确定后,得训练模型(可能涉及到分类、语义分割、文字识别、目标检测等等),这个时候需要一个趁手的训练工具;

  • 分类:
    https://github.com/Media-Smart/vedacls

  • 语义分割
    https://github.com/Media-Smart/vedaseg

示例
  • 文字识别
    https://github.com/Media-Smart/vedastr
示例
  • 目标检测
    https://github.com/Media-Smart/vedadet


4. 模型训练完之后,效果不够好,我们需要把FP、FN打印出来,分析模型存在的问题;

  • https://github.com/Media-Smart/volkscv/tree/master/volkscv/analyzer/visualization


5. 模型训练好之后,需要将模型转换为应用并进行部署,这里需要用TensorRT对模型进行加速,然后根据业务需求编写Python前端或者C++前端的SDK;

  • 加速
    https://github.com/Media-Smart/volksdep
  • Python前端
    https://github.com/Media-Smart/flexinfer
示例
  • C++前端
    https://github.com/Media-Smart/cheetahinfer


6. 计算机行业竞争激烈,平常得抽空加强学习,无论是工程模型还是算法方面,都需要持续不断学习,把自己训练为一名六边形战士。

  • 工程
    https://github.com/mileistone/study_resources/tree/master/engineering
  • 模型
    https://github.com/mileistone/study_resources/tree/master/modeling
  • 算法
    https://github.com/mileistone/study_resources/tree/master/modeling/optimization_and_generalization


上述的“2、数据分析”提供以下功能。

1、浏览图片和标注

比如分类、目标检测、语义分割等等,这可以帮助我们对数据有一个感性的认识,可以定性出来这个任务有哪些挑战。

2、图片和标注分析

比如图片大小分布,图片长宽比分布,图片中GT框数量分布,GT框长宽分布等等,这可以让我们对数据有一些理性的认识,让我们可以定量这个任务存在的挑战。

3、打印模型预测结果中的FP、FN

比如分类。

比如目标检测。

比如语义分割。

打印FP、FN可以让我们发现模型存在的问题,进而有助于我们分析问题、定位问题直至解决问题。

4、anchor分析

比如GT匹配上的anchor数量分布,GT与匹配上anchor的IoU分布等等。这有助于我们设计出更好的anchor策略,比如anchor应该放在哪几层,每一层anchor数量应该设置多少,对应的大小和长宽比是多少,以及label assignment该怎么做等等。

汇总

  • https://github.com/Media-Smart/vedaseg
  • https://github.com/Media-Smart/vedastr
  • https://github.com/Media-Smart/vedacls
  • https://github.com/Media-Smart/vedadet
  • Media-Smart/volksdep,https://github.com/Media-Smart/volksdep
  • Media-Smart/flexinfer,https://github.com/Media-Smart/flexinfer
  • https://github.com/Media-Smart/cheetahinfer
  • https://github.com/Media-Smart/volkscv
  • https://github.com/mileistone/study_resources

- 数据分析    - [volkscv](https://github.com/Media-Smart/volkscv/tree/master/volkscv/analyzer/)        - 数据浏览 -> 获取感性认识            - 图片、标注         - 数据统计 -> 获取理性认识            - 图片统计                - 大小                - 长宽比                - 等等            - 标注统计                - 类别                    - 各个类别有多少实例                    - 等等                - GT框                    - 大小                    - 长宽比                    - 等等            - anchor分析                - GT挂上anchor的数量分布                - GT与挂上anchor的IoU分布- 模型训练    - [vedaseg](https://github.com/Media-Smart/vedaseg)        - semantic segmentation     - [vedastr](https://github.com/Media-Smart/vedastr)        - scene text recognition     - [vedacls](https://github.com/Media-Smart/vedacls)        - classification     - [vedadet](https://github.com/Media-Smart/vedadet)        - object detection - 应用部署    - [volksdep](https://github.com/Media-Smart/volksdep)        - increase efficiency and decrease latency            - convert PyTorch,ONNX model to TensorRT engine    - [flexinfer](https://github.com/Media-Smart/flexinfer) -> Python front end SDK based on TensorRT engine        - classification        - semantic segmentation        - scene text recognition        - object detection    - [cheetahinfer](https://github.com/Media-Smart/cheetahinfer)  -> C++ front end SDK based on TensorRT engine        - classification        - semantic segmentation        - object detection- 学习资源    - [学习框架](https://github.com/mileistone/study_resources/tree/master/modeling/learning_framework)        - 知识点        - 相关课程与书籍    - 基础        - [工程](https://github.com/mileistone/study_resources/tree/master/engineering)            - 编程语言                - Python                - C++            - 软件工程            - 设计模式            - 操作系统            - Linux                - Bash                - Vim                - 编译工具链        - [模型](https://github.com/mileistone/study_resources/tree/master/modeling)            - 内容                 - 机器学习                - 深度学习                - 计算机视觉            - 形式                - 课程                - 书籍                - 论文        - [算法](https://github.com/mileistone/study_resources/tree/master/modeling/optimization_and_generalization)            - 凸优化            - 数值优化


推荐阅读



    添加极市小助手微信(ID : cvmart2),备注:姓名-学校/公司-研究方向-城市(如:小极-北大-目标检测-深圳),即可申请加入极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解等技术交流群:月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企视觉开发者互动交流~

    △长按添加极市小助手

    △长按关注极市平台,获取最新CV干货

    觉得有用麻烦给个在看啦~  
    浏览 43
    点赞
    评论
    收藏
    分享

    手机扫一扫分享

    分享
    举报
    评论
    图片
    表情
    推荐
    点赞
    评论
    收藏
    分享

    手机扫一扫分享

    分享
    举报