OpenMMLab实战营第一课 计算机视觉算法基础与OpenMMLab介绍

计算机视觉简单介绍

Computer Vision Tasks 通过计算机算法对图像视频等可视化的信息进行 数据挖掘模式识别特征提取等等操作

计算机视觉基本问题

  • 图像分类问题 (Classification or Classification Localization) 输入一张图 输出其分类(只限于单一对象)

  • 目标检测 (Object Detection) 每个物体用框框来且给出其类别信息 (多对象)

  • 图像分割(Segmentation) 精确的划分物体边缘 且给出其类别信息(多对象)分割有两类:语义分割(Semantic Segmentation)直接对每个像素进行分类、实例分割(Instance Segmentation)不仅分出像素还识别出叠在一起的物体。

计算机视觉应用

  • 各种目标检测 通用目标检测(识别大千万物) 特殊目标检测(如人脸识别 路牌识别)

  • 无人驾驶 中的视觉感知部分

  • 对遥感卫星图片进行语义分割

  • 图像生成、风格迁移:从一张图片生成一张内容类似但风格不同的图像

  • 虚拟主播人脸关键点检测

  • 视频理解自动剪辑

计算机视觉发展历史

  • 早期萌芽 1960-1980 边缘提取 以及有人提出如何识别3维世界Machine perceptionof 3d solids Larry Roberts 1964 三维的视觉计算理论David Marr 1982

  • 统计机器学习于模式识别(1990-2000) Eigen Face Turk & Pentland 1991 VJ人脸检测Viola & Jones 2001

  • ImageNet 大型数据库(2006)斯坦福大学的李飞飞教授于2006 年启动了ImageNet 项目,旨在为计算机视觉算法研究提供一个大规模、优质的图片数据库,ImageNet 迄今包含约2万类,共计约1500 万张图片
    自2010 年起ImageNet 官方举办了一年一度的大规模视觉识别挑战赛 LSVRC,图像分类赛道要求参赛组在一个包含1000类别、100万张图像的ImageNet 子集上完成图像分类任务

  • 初有成效的视觉系统(-2010)ImageNet Classification72% Top-5 Accuracy NEC-UIUC 2010 、Deformable Part Modelfor object detection 但底层还是依赖人工定义特征机器只是告诉我们什么特征比较重要

  • 深度学习的时代(2012-)让AI自主定义特征 AlexNet。 突破传统视觉系统性能 、Fast R-CNN 目标检测走入深度学习时代 、深度生成对抗网络实现图像生成

OpenMMLab简介

OpenMMLab 是一个适用于学术研究和工业应用的开源项目,涵盖了计算机视觉的许多研究课题,如:图像分类、目标检测、目标分割、超分辨率图像生成等

MMDeploy可以把算法库训练得到的模型转换成开发者想要的格式 部署在各种平台
## 算法框架介绍

  • MMDetection 支持目标检测 实例分割 全景分割(在实例分割基础上把背景也抠进来 对无人驾驶很重要)
  • MMDetection3D 用于3D目标检测 通过点云数据 或者说纯视觉数据 来画出物体3d的框
  • MMClassification 图像分类库
  • MMSegmentation 用于语义分割
  • MMPose &MMHumam3D 2维的关键点检测和3维的立体重建 可以做体感游戏
  • MMTracking 可以追踪视频中的物体
  • MMAction2 对时序视频进行动作检测 可以实现行为识别
  • MMOCR 文本检测
  • MMEditing 在像素层面进行操作识别 如图像修复 抠图 图像生成 超分辨率

机器学习卷积神经网络基础知识

机器学习基础

什么是机器学习?

”A computer program is said to learn from experience E with respect to some class of tasks T andperformance measure P if its performance at tasks in T, as measured by P, improves with experienceE“ --Tom M.Mitchell (1997)

从数据中学习经验,以解决特定问题

graph TD
    问题---收集数据
    收集数据---拟合模型

  • 监督学习
  • 无监督学习
  • 自监督学习
  • 强化学习

机器学习中的分类问题

提取数据中的特征 拟合出一个边界来分类 边界的“弯” “直” 区分为线性分类器 非线性分类器

机器学习的基本流程

  1. 训练 我们需要采集一些数据,标注它们的类别,从中选取一部分用于训练分类器,得到一个可以用于分类的分类器
  2. 验证 从采集、标注的数据中另外选取一部分,测试所得分类器的分类精度验证所用的数据不能和训练重合,以保证分类器的泛化性能:在一部分数据上训练的分类器可以在其余的数据上表现出足够的分类精度
  3. 应用 将经过验证的分类器集成到实际的业务系统中,实现对应的功能在应用阶段,分类器面对的数据都是在训练、验证阶段没有见过的

神经网络的结构

神经网络是一种 非线性的分类器

单个神经元示意图
graph LR
A1((1)) -- b --> B((Σ))
A2((x1)) -- w1 --> B
A3((x2))-- w2 --> B
...
A4((xd))-- wd --> B
B-->C((Z))-->D((激活函数))-->f((y输出))

多个神经元堆叠 就是神经网络

神经网络的训练

卷积神经网络

Pytorch环境配置与基础使用