当前位置: 首页 > 编程日记 > 正文

如何通过深度学习,完成计算机视觉中的所有工作?

Mask-RCNN做对象检测和实例分割

作者 | George Seif

译者 | 天道酬勤,责编 | Carol

出品 | AI科技大本营(ID:rgznai100)

Mask-RCNN做对象检测和实例分割:

https://miro.medium.com/max/1200/1*s9raSe9mLeSSuxE3API-ZA.gif

你想做计算机视觉吗?

如今,深度学习是必经之路。大规模数据集以及深层卷积神经网络(CNN)的表征能力可提供超准确和强大的模型。但目前仍然只有一个挑战:如何设计模型?

像计算机视觉这样广泛而复杂的领域,解决方案并不总是清晰明了的。计算机视觉中的许多标准任务都需要特别考虑:分类、检测、分割、姿态估计、增强和恢复以及动作识别。尽管最先进的网络呈现出共同的模式,但它们都需要自己独特的设计。

那么,我们如何为所有这些不同的任务建立模型呢?

作者在这里向你展示如何通过深度学习完成计算机视觉中的所有工作!

分类

计算机视觉中最出名的就是分类。图像分类网络从一个固定大小的输入开始。输入图像可以有任意数量的通道,但对于RGB图像通常为3。在设计网络时,分辨率在技术上可以是任意大小,只要足够大到能够支持在整个网络中将要进行的向下采样量即可。例如,如果你对网络内的4个像素进行向下采样,则你的输入大小至少应为4²= 16 x 16像素。

随着深入网络,当我们尝试压缩所有信息并降至一维矢量表示形式时,空间分辨率将降低。为了确保网络始终有能力将其提取的所有信息进行处理,我们根据深度的比例增加特征图的数量,来适应空间分辨率的降低。也就是说,我们在向下采样过程中损失了空间信息,为了适应这种损失,我们扩展了特征图来增加我们的语义信息。

在选择了一定数量的向下采样后,特征图被矢量化并输入到一系列完全连接的图层中。最后一层的输出与数据集中的类一样多。

目标检测

目标检测器分为两种:一级和二级。他们两个都以锚框开始。这些是默认的边界框。我们的检测器将预测这些框与地面真相之间的差异,而不是直接预测这些框。

在二级检测器中,我们自然有两个网络:框提议网络和分类网络。框提议网络在认为很有可能存在物体的情况下为边界框提供坐标。再次,这些是相对于锚框。然后,分类网络获取每个边界框中的潜在对象进行分类。

在一级检测器中,提议和分类器网络融合为一个单一阶段。网络直接预测边界框坐标和该框内的类。由于两个阶段融合在一起,所以一级检测器往往比二级检测器更快。但是由于两个任务的分离,二级检测器具有更高的精度。

快速RCNN二级目标检测架构

SSD一级目标检测架构

分割

分割是计算机视觉中较独特的任务之一,因为网络既需要学习低级信息,也需要学习高级信息。低级信息可按像素精确分割图像中的每个区域和对象,而高级信息可直接对这些像素进行分类。这导致网络被设计为将来自较早层和高分辨率(低层空间信息)的信息与较深层和低分辨率(高层语义信息)相结合。

如下所示,我们首先通过标准分类网络运行图像。然后,我们从网络的每个阶段提取特征,从而使用从低到高的范围内的信息。每个信息级别在依次组合之前都是独立处理的。当这些信息组合在一起时,我们对特征图进行向上采样,最终得到完整的图像分辨率。

要了解更多关于如何分割与深度学习工作的细节,请查看这篇文章:

https://towardsdatascience.com/semantic-segmentation-with-deep-learning-a-guide-and-code-e52fc8958823        

GCN细分架构

姿态估计

姿态估计模型需要完成两个任务:(1)检测图像中每个身体部位的关键点;(2)找出如何正确连接这些关键点。这分以下三个阶段完成:

  1. 使用标准分类网络从图像中提取特征。

  2. 给定这些特征,就可以训练一个子网络来预测一组2D热图。每个热图都与一个特定的关键点相关联,并包含每个图像像素关于是否可能存在关键点的置信值。

  3. 再次给出分类网络的特征,我们训练一个子网络来预测一组2D向量场,其中每个向量场都与关键点之间的关联度进行编码。然后,具有较高关联性的关键点被称为已连接。

用这种方法训练子网络的模型,可以联合优化关键点的检测并将它们连接在一起。    

OpenPose姿态估计架构

增强和恢复

增强和恢复网络是它们自己独特的野兽。我们不会对此进行任何向下采样,因为我们真正关心的是高像素/空间精度。向下采样会真正抹杀这些信息,因为它将减少我们为空间精度而拥有的像素数。相反,所有处理都是在全图像分辨率下完成的。 

我们开始以全分辨率将想要增强/恢复的图像传递到我们的网络,而无需进行任何修改。网络仅由许多卷积和激活函数组成。这些块通常是受启发的,并且有时直接复制那些最初为图像分类而开发的块,例如残差块、密集块、挤压激励块等。最后一层没有激活函数,即使是sigmoid或softmax也没有,因为我们想直接预测图像像素,不需要任何概率或分数。 

这就是所有这些类型的网络。在图像的全分辨率上进行了大量的处理,来达到较高的空间精度,使用了与其他任务相同的卷积。

EDSR超分辨率架构

动作识别

动作识别是少数几个需要视频数据才能正常运行的应用程序之一。要对一个动作进行分类,我们需要了解随着时间推移,场景中发生的变化, 这自然导致我们需要视频。我们的网络必须经过训练来学习时空信息,即时空变化。最完美的网络是3D-CNN。 

顾名思义,3D-CNN是使用3D卷积的卷积网络。它们与常规CNN的不同之处在于,卷积是在3维上应用的:宽度、高度和时间。因此,每个输出像素都是根据其周围像素以及相同位置的前一帧和后一帧中的像素进行计算来预测的。

直接大量传递图像

视频帧可以通过几种方式传递:

  1. 直接在大批量中,例如第一个图。由于我们正在传递一系列帧,因此空间和时间信息都是可用的。

单帧+光流(左)            视频+光流(右)

  1. 我们还可以在一个流中传递单个图像帧(数据的空间信息),并从视频中传递其相应的光流表示形式(数据的时间信息)。我们将使用常规2D CNN从这两者中提取特征,然后再将其组合起来传递给我们的3D CNN,后者将两种类型的信息进行合并。

  2. 将帧序列传递给一个3D CNN,并将视频的光流表示传递给另一个3D CNN。这两个数据流都具有可用的空间和时间信息。鉴于我们正在对视频的两种不同表示(均包含我们的所有信息)进行特定处理,因此这是最慢的选择,但也可能是最准确的选择。

所有这些网络都输出视频的动作分类。

原文:https://towardsdatascience.com/how-to-do-everything-in-computer-vision-2b442c469928


推荐阅读

  • 那个分分钟处理 10 亿节点图计算的 Plato,现在怎么样了?

  • 看似毫不相干,哲学与机器学习竟有如此大的交集

  • 黑客用上机器学习你慌不慌?这 7 种窃取数据的新手段快来认识一下

  • “谷歌杀手”发明者,科学天才 Wolfram

  • 数据库激荡 40 年,深入解析 PostgreSQL、NewSQL 演进历程

  • 5分钟!就能学会以太坊 JSON API 基础知识

  • 你点的每个“在看”,我都认真当成了AI

相关文章:

Windows PowerShell 2.0语言之字面类型系统

PowerShell语言允许通过一个字面类型(type Literals)来访问类型,它是用括号抬起的类型名,返回.NET底层的System.Type对象实例,如: PS C:\> [System.Int32]IsPublic IsSerial Name …

建立名称server

一、实验的目的:实现DNSserver功能,提供正向、反向解析二、实验环境装有Linux的Windows系统IP为192.168.6.3的虚拟机三、实验目的建立gr.org域的主名称server。解析:名称 IP 用途ns.gr.org 192.168.…

Java的JSON操作存储List到Redis

使用jackson和json-lib都可以 <dependency> <groupId>org.codehaus.jackson</groupId><artifactId>jackson-mapper-asl</artifactId><version>1.9.13</version></dependency><dependency><groupId>net.sf.json-li…

关注基于云的下一代应用开发

接受经济和信息化的视频专访专访的主页地址为&#xff1a;http://www.enicn.com/article/2010-08-20/0R064b52010.shtml我的其他视频&#xff0c;请参考土豆空间&#xff0c;地址为http://www.tudou.com/home/larryvmw。

确认了!MySQL 狠甩 Oracle 稳居 Top1!

01几乎所有程序员都会用到的 MySQL稳居 Top 1科技长河&#xff0c;顺之者昌&#xff0c;错失者亡。在2019年&#xff0c;CSDN面向具备超强计算力的数字化世界&#xff0c;我们进行了「大数据技术应用现状分析」&#xff0c;并发布了《2019-2020 年中国开发者调查报告》。发现&a…

[AWK]使用AWK进行分割字符串以及截取字符串

如何split当前的字符串&#xff0c;用$0&#xff0c;例如&#xff1a; cat num.2012032911 | awk {print $2} | awk {split($0,b,".");print b[2]} | cut -c 3- 获取第二列&#xff0c;例如第二列是com.sb3456.you那么在split当前的这个字符串获得sb3456,最后截取sb3…

SpringMVC集成Tiles布局引擎框架

Tiles布局框架&#xff0c; http://tiles.apache.org/ Spring已经对Tiles进行了集成。页头页尾公共模板页要靠这个&#xff0c;不然重复代码太多。 <dependency><groupId>org.apache.tiles</groupId><artifactId>tiles-servlet</artifactId><…

VC 文件操作(文件查找,打开/保存,读/写,复制/删除/重命名)

右击项目->属性->字符集&#xff1a;使用多字节字符集。这样可以使用char到CString的转化。char sRead[20] ""; CString strtest sRead; 大气象 //文件查找/*CString strFileTitle;CFileFind finder;BOOL bWorking finder.FindFile(_T("C:\*.sys"…

程序员会懂的冷笑话:各大编程语言的内心独白

作者 | Anupam Chugh译者 | 弯月&#xff0c;责编 | 夕颜出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;软件工程领域鱼龙混杂。有些人乐不思蜀&#xff0c;而有些人则饱受打击。然而&#xff0c;构建软件的工作让每个人倍感压力&#xff0c;这点毋庸置疑。在本文…

swift集成alamofire的简单封装

import UIKit import Alamofire enum MethodType{ case GET case POST } class NetworkTool: NSObject { class func request(type : MethodType ,urlString : String , paramters: [String :Any]? nil,finishedCallback : escaping (_ result : Any) -> ()) { //判断是什…

Go后台项目架构思考与重构 | 深度长文

作者 | 腾讯云后台工程师黄雷编辑 | 唐小引来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;引言本文首先介绍了架构的重要性&#xff0c;随后从一个实际项目的重构过程作为主线&#xff0c;逐步引出主流的架构设计思想以及其所解决的实际问题是什么。通过阅读本文&…

前途到底是网络工程还是程序设计

本人89年年底生的&#xff0c;现在快满21了&#xff0c;大二的时候过的国家网络工程师考试&#xff0c;并不是cisco的网络支持工程师&#xff0c;大三也就是现在&#xff0c;在学校花销太大&#xff0c;想自己赚点钱&#xff0c;于是在学校招聘会上应聘了一家通信公司&#xff…

FAIL - Deployed application at context path / but context failed to start

IDE报错&#xff1a;FAIL - Deployed application at context path / but context failed to start 编译通过&#xff0c;这个错误原因是很多地方被误用&#xff0c;导致Spring运行时不能解析某些Class导致&#xff0c; 例如&#xff1a;ModelAndView用错 public ModelAndView…

项目ITP(五) spring4.0 整合 Quartz 实现任务调度

2014-05-16 22:51 by Jeff Li 前言 系列文章&#xff1a;[传送门] 项目需求&#xff1a; 二维码推送到一体机上&#xff0c;给学生签到扫描用。然后须要的是 上课前20分钟 。幸好在帮带我的学长做 p2p 的时候。接触过。自然 quartz 是首选。所以我就配置了下&#xff0c;搞了个…

Spring security防止跨站请求伪造(CSRF防护)

因为使用了spring security 安全性框架 所以spring security 会自动拦截站点所有状态变化的请求&#xff08;非GET,HEAD,OPTIONS和TRACE的请求&#xff09;&#xff0c;防止跨站请求伪造&#xff08;CSRF防护&#xff09;&#xff0c;即防止其他网站或是程序POST等请求本站点。…

从Ops到NoOps,阿里文娱智能运维的关键:自动化应用容量管理

作者| 阿里文娱高级开发工程师 金呈编辑 | 夕颜来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;概述1. 背景随着业务形态发展&#xff0c;更多的生产力集中到业务创新&#xff0c;这背后要求研发能力的不断升级。阿里文娱持续倾向用更加高效、稳定、低成本的方式支…

JAVA目录树(全功能),Java+ajax实现

我自己要的功能全实现了 一&#xff1a;双击选中项进行编辑 二&#xff1a;右键菜单功能(新增&#xff0c;删除&#xff0c;修改&#xff0c;自定义颜色什么的) 三&#xff1a;选中项进行拖动事件 四&#xff1a;输入项进入搜索(并自动选中结果项) 2011.03.14更新功能 &#xf…

SiteMesh介绍

1. SiteMesh简介 SiteMesh是由一个基于Web页面布局、装饰以及与现存Web应用整合的框架。它能帮助我们在由大量页面构成的项目中创建一致的页面布局和外观&#xff0c;如一致的导航条&#xff0c;一致的banner&#xff0c;一致的版权等等。它不仅仅能处理动态的内容&#xff0c;…

商汤提基于贪心超网络的One-Shot NAS,达到最新SOTA | CVPR 2020

出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;导读&#xff1a;在CVPR 2020上&#xff0c;商汤移动智能事业群-3DAR-身份认证与视频感知组提出了基于贪心超网络的One-Shot NAS方法&#xff0c;显著提升了超网络直接在大规模数据集上的搜索训练效率&#xff0c;并在…

多样化实现Windows phone 7本地数据访问5——深入Rapid Repository

上一篇多样化实现Windows Phone 7本地数据访问<4>——Rapid Repository 中初步的介绍Repid Repository作为Windows phone 7数据库存储原理Repid具有特点以及数据CRUD基本操作.Rapid Repository 是一个基于WP7开源的数据库. 上周联系Rapid 数据库的作者Sean McAlinden.有…

调试Tomcat源码

需要调试Tomcat源码其实很简单&#xff0c; 1.保持你的Tomcat安装文件和源码是版本一致 http://tomcat.apache.org/download-80.cgi 下载安装版和源码2个版本 2.建立Java自由格式项目 先在IDE里配置好Tomcat&#xff0c;这个不复杂。 然后新建一个项目&#xff0c;这个需要…

开源 免费 java CMS - FreeCMS1.9 全文检索

项目地址&#xff1a;http://code.google.com/p/freecms/ 全文检索 从FreeCMS 1.7開始支持 仅仅有创建过索引的对象才干被lucene类标签查询到。 信息类数据会在信息更新、审核、删除、还原操作时自己主动进行全文检索处理。1. 创建索引 从左側管理菜单点击创建索引进入。 您能够…

Spring Mock单元测试

针对post和get import org.junit.Before; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.…

tar、gzip、gunzip、bzip2、zip、unzip

tar [参数] 文件或目录名 •参数&#xff1a; -c&#xff1a; 建立新的备份档文件。 -f&#xff1a; 对普通文件进行操作。这个参数通常是必选的。 -r&#xff1a; 向备份档文件追加文件。 -x&#xff1a; 从备份档文件中解出文件。 -t&#xff1a; …

港科大谢丹阳教授问诊未来,预测长远趋势与转折点

阳春三月&#xff0c;万象更新&#xff0c;2020年注定是不平凡的一年&#xff01;有激荡就会遇见变革&#xff0c;有挑战就会迎来机遇。今天总会过去&#xff0c;未来将会怎样&#xff1f;香港科大商学院内地办事处重磅推出全新升级的《袁老师访谈录》全新系列【问诊未来院长系…

数字签名与数字证书

先看一下百度百科对数字签名和数字证书的解释&#xff1a; 数字签名&#xff1a; 将报文按双方约定的HASH算法计算得到一个固定位数的报文摘要。在数学上保证&#xff1a;只要改动报文中任何一位&#xff0c;重新计算出的报文摘要值就会与原先的值不相符。这样就保证了报文的不…

Spring源码分析【3】-SpingWebInitializer的加载

SpingWebInitializer的加载 Spring基于注解的配置代码&#xff1a; public class SpingWebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {Overrideprotected Class<?>[] getRootConfigClasses() {return new Class<?>[]{RootCon…

PyTorch 1.5发布,与AWS联手推出TorchServe

导读&#xff1a;近日 PyTorch 发布了 1.5 版本的更新&#xff0c;作为越来越受欢迎的机器学习框架&#xff0c;PyTorch 本次也带来了大的功能升级。此外&#xff0c; Facebook 和 AWS 还合作推出了两个重要的 PyTorch 库。作者 | 神经星星来源 | HyperAI超神经&#xff08;ID:…

更改时区,时间

整更改ubuntu时区,时间,localePublished by 笨二十一 at 11:56 上午 under Linux/Unix,服务器更改时区&#xff0c;时间执行tzselect按照提示进行选择时区sudo cp /usr/share/zoneinfo/Asia/ShangHai /etc/localtime执行sudo ntpdate cn.pool.ntp.orgcn.pool.ntp.org是位于中国…

throttle与debounce的区别

前几天看到一篇文章&#xff0c;我的公众号里也分享了《一次发现underscore源码bug的经历以及对学术界拿来主义的思考》具体文章详见&#xff0c;微信公众号&#xff1a;文中讲了大家对throttle和debounce存在误解&#xff0c;同时提到了《高程3》中实现节流方法存在一些问题&a…