PyTorch 正在称霸学术界,是时候学习一下 PyTorch 了。

PyTorch 正在称霸学术界

下图展示了在每次学术顶会中使用 PyTorch 占使用 TensorFlow 和 PyTorch 总的论文比例。每一条折线都在增长,2019 年的每个学术顶会都有大量论文用 PyTorch 实现。

http://www.tensorflownews.com/wp-content/uploads/2019/10/pytorch-papers-of-total.jpeg

数据来源:https://chillee.github.io/pytorch-vs-tensorflow/

PyTorch 官方 60 分钟入门教程

课程是基于 PyTorch 官方60分钟快速入门教程制作的视频课程,共包括五个部分,总计60分钟左右。既有深度学习的知识讲解也有代码实战,让你快速入门 PyTorch 这个当前最火的深度学习框架之一,一步一步实现一个基于 PyTorch 的深度学习图片分类模型。

http://www.tensorflownews.com/wp-content/uploads/2019/10/WechatIMG2408.jpeg

PyTorch 中文图文教程

磐创AI News 翻译了 PyTorch 官方的教程,华为云等强烈推荐。

http://www.tensorflownews.com/wp-content/uploads/2019/10/WechatIMG2409.jpeg

PyTorch 官方60分钟入门教程-视频教程

为了更加方便深度学习爱好者进行学习,磐创AI 推出了视频教程,视频教程首先覆盖了 60 分钟快速入门部分,方便快速的上手,视频教程的定位是简洁清晰,以下是视频内容的介绍。

http://www.tensorflownews.com/wp-content/uploads/2019/10/2.jpg

视频课程已经上线网易云课堂:

http://www.tensorflownews.com/wp-content/uploads/2019/10/1.jpg

https://study.163.com/course/introduction/1209483828.htm

2019 目标检测(object detection)指南

你好,这里有一份2019年目标检测指南

译者|Arno
来源|medium

目标检测(Object detection)是一种计算机视觉技术,旨在检测汽车、建筑物和人类等目标。这些目标通常可以通过图像或视频来识别。

目标检测在视频监控、自动驾驶汽车、人体跟踪等领域得到了广泛的应用。在本文中,我们将了解目标检测的基础知识,并回顾一些最常用的算法和一些全新的方法。

目标检测的原理

目标检测定位图像中目标的存在,并在该目标周围绘制一个边界框(bounding box)。这通常包括两个过程:预测目标的类型,然后在该目标周围绘制一个框。现在让我们来回顾一些用于目标检测的常见模型架构:
– R-CNN
– Fast R-CNN
– Faster R-CNN
– Mask R-CNN
– SSD (Single Shot MultiBox Defender)
– YOLO (You Only Look Once)
– Objects as Points
– Data Augmentation Strategies for Object Detection

R-CNN 模型

该技术结合了两种主要方法:使用一个高容量的卷积神经网络将候选区域(region-proposals)自底向上的传播,用来定位和分割目标;如果有标签的训练数据比较少,可以使用训练好的参数作为辅助,进行微调(fine tuning),能够得到非常好的识别效果提升。

论文链接: https://arxiv.org/abs/1311.2524?source=post_page—————————

进行特定领域的微调,从而获得高性能的提升。由于将候选区域(region-proposals)与卷积神经网络相结合,论文的作者将该算法命名为R-CNN(Regions with CNN features)。

该模型在对每张图片提取了约2000个自底向上的候选区域。然后,它使用一个大型CNN计算每个区域的特征。然后,利用专门针对类别数据的线性支持向量机(SVMs)对每个区域进行分类。该模型在PASCAL VOC 2010上的平均精度达到53.7%。

该模型中的目标检测系统由三个模块组成。第一个负责生成类别无关的候选区域,这些区域定义了一个候选检测区域的集合。第二个模块是一个大型卷积神经网络,负责从每个区域提取固定长度的特征向量。第三个模块由一个指定类别的支持向量机组成。

该模型采用选择性搜索(selective search)方法来生成区域类别,根据颜色、纹理、形状和大小选择搜索对相似的区域进行分组。在特征提取方面,该模型使用CNN的一个Caffe实现版本对每个候选区域抽取一个4096维度的特征向量。将227×227 RGB图像通过5个卷积层和2个完全连接层进行前向传播,计算特征。论文中所解释的模型与之前在PASCAL VOC 2012的结果相比,取得了30%的相对改进。

而R-CNN的一些缺点是:

  • 训练需要多阶段: 先用ConvNet进行微调,再用SVM进行分类,最后通过regression对 bounding box进行微调。
  • 训练空间喝时间成本大: 因为像VGG16这样的深度网络占用了大量的空间。
  • 目标检测慢: 因为其需要对每个目标候选进行前向计算。

Fast R-CNN

下面的论文中提出了一种名为Fast Region-based Convolutional Network(Fast R-CNN)目标检测方法。

https://arxiv.org/abs/1504.08083?source=post_page—————————

它是用Python和c++使用Caffe实现的。该模型在PASCAL VOC 2012上的平均精度为66%,而R-CNN的平均精度为62%。

与R-CNN相比,Fast R-CNN具有更高的平均精度、单阶段训练,训练更新所有网络层并且特征缓存不需要磁盘存储。

在其架构中, Fast R-CNN接收图像以及一组目标候选作为输入。然后通过卷积层和池化层对图像进行处理,生成卷积特征映射。然后,通过针对每个推荐区域,ROI池化层从每个特征映射中提取固定大小的特征向量。

然后将特征向量提供给完全连接层。然后这些分支成两个输出层。其中一个为多个目标类生成softmax概率估计,而另一个为每个目标类生成4个实数值。这4个数字表示每个目标的边界框的位置。

Faster R-CNN

论文链接: https://arxiv.org/abs/1506.01497?source=post_page—————————

论文提出了一种针对候选区域任务进行微调和针对目标检测进行微调的训练机制。

Faster R-CNN模型由两个模块组成:负责提出区域的深度卷积网络和使用这些区域的Fast R-CNN探测器。候选区域网络(Region Proposal Network)以图像为输入,生成矩形目标候选的输出。每个矩形都有一个objectness score。

Mask R-CNN

论文链接: https://arxiv.org/abs/1703.06870?source=post_page—————————

论文提出的模型是上述Faster R-CNN架构的扩展。它还可以用于人体姿态估计。

在该模型中,使用边界框和对每个像素点进行分类的语义分割对目标进行分类和定位。该模型通过在每个感兴趣区域(ROI)添加分割掩码(segmentation mask)的预测,扩展了Faster R-CNNR-CNN。Mask R-CNN产生两个输出:类标签和边界框。

SSD: Single Shot MultiBox Detector

论文链接: https://arxiv.org/abs/1512.02325?source=post_page—————————

论文提出了一种利用单个深度神经网络对图像中目标进行预测的模型。该网络使用应用于特征映射的小卷积滤波器为每个目标类别生成分数。

这种方法使用了一个前馈卷积神经网络,针对那些方框里的目标类别实例,产生一个固定大小的边界框的集合和分数。增加了卷积特征层,允许多比例特征映射检测。在这个模型中,每个特征映射单元(feature map cell)都链接到一组默认的边界框(default box)。下图显示了SSD512在动物、车辆和家具上的性能。

You Only Look Once (YOLO)

论文提出了一种基于神经网络的图像边界框和类概率预测方法。

论文链接: https://arxiv.org/abs/1506.02640?source=post_page—————————

YOLO模型每秒实时处理45帧。YOLO将图像检测看作是一个回归问题,使得它的管道非常简单。因为这个简单的管道,它非常快。

它可以实时处理流视频,延迟小于25秒。在训练过程中,YOLO可以看到整个图像,因此能够在目标检测中包含上下文。

在YOLO中,每个边界框都由整个图像的特征来预测。每个边界框有5个预测:x, y, w, h,和置信度。(x, y)表示边界框的中心相对于网格单元格的边界。w和h是整个图像的预测宽度和高度。

该模型作为卷积神经网络实现,并在PASCAL VOC检测数据集上进行了评价。网络的卷积层负责提取特征,全连接层负责预测坐标和输出概率。

该模型的网络架构受到了用于图像分类的GoogLeNet模型的启发。该网络有24个卷积层和2个全连接层。该模型的主要挑战在于,它只能预测一个类,而且在鸟类等小目标上表现不佳。

该模型的平均精度达到52.7%,但有可能达到63.4%。

Objects as Points

论文提出将目标建模为单个点。它使用关键点估计来找到中心点,并回归到其他目标属性。

论文链接: https://arxiv.org/abs/1904.07850v2?source=post_page—————————

这些属性包括3D位置、姿态和尺寸。它使用了CenterNet,这是一种基于中心点的方法,比其他边界框探测器更快、更准确。

目标大小和姿态等属性是由图像中心位置的特征回归得到的。该模型将图像输入卷积神经网络,生成热力图。这些热力图中的峰值表示图像中目标的中心。为了估计人体姿态,该模型检测关节点(2D joint)位置,并在中心点位置对其进行回归。

在COCO上,该模型以每秒1.4帧的速度实现了45.1%的平均精度。下图显示了与其他研究论文的结果进行比较的结果。

Learning Data Augmentation Strategies for Object Detection

数据增广包括通过旋转和调整大小等操作原始图像来创建新图像数据的过程。

论文链接: https://arxiv.org/abs/1906.11172v1?source=post_page—————————

虽然这本身不是一个模型结构,但论文提出了可以应用于可以转移到其他目标检测数据集的目标检测数据集的变换的创建。转换通常在训练时应用。

该模型将增广策略定义为训练过程中随机选择的n个策略集合。该模型中应用的一些操作包括颜色变化、图像几何变化以及只变化bounding box annotations的像素内容。

在COCO数据集上的实验表明,优化数据增广策略可以使检测精度提高到+2.3以上的平均精度。这使得单个推理模型的平均精度达到50.7。

总结

现在,我们应该对在各种上下文中进行目标检测的一些最常见的技术(以及一些最新的技术)有所了解。
上面的论文/摘要也包含它们的代码实现的链接。希望能看到你在测试这些模型后得到的结果。

YOLO_Online 将深度学习最火的目标检测做成在线服务实战经验分享

部分 YOLO 结果:

YOLO_Online 将深度学习最火的目标检测做成在线服务

第一次接触 YOLO 这个目标检测项目的时候,我就在想,怎么样能够封装一下让普通人也能够体验深度学习最火的目标检测项目,不需要关注技术细节,不需要装很多软件。只需要网页就能体验呢。

在踩了很多坑之后,终于实现了。

效果:

1.上传文件

2.选择了一张很多狗的图片

3.YOLO 一下

技术实现

  1. web 用了 Django 来做界面,就是上传文件,保存文件这个功能。
  2. YOLO 的实现用的是 keras-yolo3,直接导入yolo 官方的权重即可。
  3. YOLO 和 web 的交互最后使用的是 socket。

坑1:

Django 中 Keras 初始化会有 bug,原计划是直接在 Django 里面用 keras,后来发现坑实在是太深了。

最后 Django 是负责拿文件,然后用 socket 把文件名传给 yolo。

坑2:

说好的在线服务,为什么没有上线呢?买了腾讯云 1 CPU 2 G 内存,部署的时候发现 keras 根本起不来,直接被 Killed 。

解决,并没有解决,因为买不起更好地服务器了,只好本地运行然后截图了。

坑3:

YOLO 的识别是需要一定的时间的,做成 web 的服务,上传完文件之后,并不能马上识别出来,有一定的延迟。

相关教程:

TensorFlow + Keras 实战 YOLO v3 目标检测图文并茂教程

https://zhuanlan.zhihu.com/p/36152438

YOLO QQ 群

群号:167122861

计算机视觉项目合作微信:voicer008

 

谷歌发布 Open Images V4数据集,190万张图片开启公开图像挑战赛

4 月 30 日,谷歌在其官方博客上发文称将开放 Images V4 数据库,并同时开启 ECCV 2018 公开图像挑战赛。雷锋网编译全文如下:
2016 年,我们发布了一个包含大约 900 万张图片、标注了数千个对象类别标签的数据集 Open Images。发布之后,我们一直在努力更新和改进数据集,以便为计算机视觉社区提供有用的资源来开发新模型。
今天,我们很高兴地宣布开放 Open Images V4,它包含在 190 万张图片上针对 600 个类别的 1540 万个边框盒,这也是现有最大的具有对象位置注释的数据集。这些边框盒大部分都是由专业注释人员手动绘制的,确保了它们的准确性和一致性。另外,这些图像是非常多样化的,并且通常包含有多个对象的复杂场景(平均每个图像 8 个)。

与此同时,我们还将宣布启动 Open Images 挑战赛,这将是在 2018 计算机视觉欧洲会议(ECCV 2018)上举办的一场新的对象检测挑战赛。Open Images 挑战赛将遵循 PASCAL VOC、ImageNet 和 COCO 等赛事的传统,但是其规模将是空前的。

Open Images 挑战赛在一下这几个方面将是独一无二的:

有 170 万张训练图片,其中有 500 个类别和 1220 万个边框注释;

与以前的检测挑战相比,将有更广泛的类别,包括诸如「fedora」、「snowman」等这样的新对象;

除了主流的物体检测外,本次挑战赛中在检测物体对时还将包括视觉关系检测,例如「woman playing guitar」。

训练数据集现在已经可以使用;一个包含有 10 万张图片的测试集将于 2018 年 7 月 1 日发布在 Kaggle 上。挑战赛提交结果的截止日期为 2018 年 9 月 1 日。

我们希望更大的训练集能够刺激对更复杂检测模型的研究,这些模型将超过当前 state-of-the-art 的性能;而从另一方面,我们希望 500 个类别能够更精确地评估不同探测器在哪些方面表现的更好。此外,拥有大量带有多个对象标注的图像,可以帮组你探索视觉关系检测,这还是一个热门的新兴话题,而且具有越来越多的子社区。

除了上述内容外,Open Images V4 还包含了 3010 万张经过人工验证的针对 19794 个类别图像级标签的图片。当然这些标签不属于挑战赛的一部分,其中的 550 万张图像级标签是由来自世界各地成千上万名用户通过 crowdsource.google.com 生成的。

原文链接:https://www.leiphone.com/news/201805/AlOdBu0uXZY0ZVT9.html

TensorFlow + Keras 实战 YOLO v3 目标检测图文并茂教程

运行步骤
1.从 YOLO 官网下载 YOLOv3 权重

wget https://pjreddie.com/media/files/yolov3.weights

下载过程如图:

 

2.转换 Darknet YOLO 模型为 Keras 模型

python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5

转换过程如图:

3.运行YOLO 目标检测

python yolo.py

需要下载一个图片,然后输入图片的名称,如图所示:

我并没有使用经典的那张图,随便从网上找了一个,来源见图片水印:

识别效果:

项目地址:https://github.com/qqwweee/keras-yolo3

教程来自:http://objectdetection.cn/

Mask_RCNN:基于Keras and TensorFlow 的 Mask R-CNN 为 目标检测和情景分割

Mask R-CNN for Object Detection and Segmentation

这是一个基于 Python 3, Keras, TensorFlow 实现的 Mask R-CNN。这个模型为图像中的每个对象实例生成边界框和分割掩码。它基于 Feature Pyramid Network (FPN) and a ResNet101 backbone.

这个项目包括包括:

在FPN和ResNet101上构建的Mask R-CNN的源代码。

MS COCO的训练代码

MS COCO 预先训练的权重

Jupyter notebooks 来可视化在每一个步骤的检测管道

用于多GPU训练的ParallelModel类

MS COCO指标评估(AP)

训练您自己的数据集的例子

代码被记录和设计为易于扩展。 如果您在研究中使用它,请考虑引用此项目。 如果您从事3D视觉工作,您可能会发现我们最近发布的Matterport3D数据集也很有用。 这个数据集是由我们的客户拍摄的三维重建空间创建的,这些客户同意将这些数据公开供学术使用。 你可以在这里看到更多的例子。

This is an implementation of Mask R-CNN on Python 3, Keras, and TensorFlow. The model generates bounding boxes and segmentation masks for each instance of an object in the image. It’s based on Feature Pyramid Network (FPN) and a ResNet101 backbone.

The repository includes:

  • Source code of Mask R-CNN built on FPN and ResNet101.
  • Training code for MS COCO
  • Pre-trained weights for MS COCO
  • Jupyter notebooks to visualize the detection pipeline at every step
  • ParallelModel class for multi-GPU training
  • Evaluation on MS COCO metrics (AP)
  • Example of training on your own dataset

The code is documented and designed to be easy to extend. If you use it in your research, please consider referencing this repository. If you work on 3D vision, you might find our recently released Matterport3D dataset useful as well. This dataset was created from 3D-reconstructed spaces captured by our customers who agreed to make them publicly available for academic use. You can see more examples here.

项目地址:matterport/Mask_RCNN

https://github.com/matterport/Mask_RCNN

YOLO:3 步实时目标检测安装运行教程

封面图是作者运行图,我在 ubuntu 环境下只有文字预测结果。

Detection Using A Pre-Trained Model

使用训练好的模型来检测物体

运行一下命令来下载和编译模型

git clone https://github.com/pjreddie/darknet
cd darknet
make

运行一下模型来下载预训练权重

wget https://pjreddie.com/media/files/yolo.weights

运行以下命令来测试模型

./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg

最终结果截图

英文原文

pjreddie.com/darknet/yo

教程原文

tensorflownews.com/2017

更多机器学习教程

tensorflownews.com