深度学习界的 “吃鸡挂”——目标检测 SSD 实验

简介:

“卧槽,又被 LYB 干了!” 背后传来一声哀嚎。

哈哈,看来,沉迷吃鸡的室友又被戒网瘾了。作为一个充满着正义的 LYB 的游戏,这人不长点眼力还真的不行啊。不过这时候一张图片吸引了我的兴趣:

0?wx_fmt=gif&wxfrom=5&wx_lazy=1

网易《荒野行动》的车辆检测

能识别出视频中的汽车和人,这,不是外挂么?想到专业制裁 LYB 们的透视挂,这波我很强好吧。为探秘这 “外挂” 效果有多强,那我就来复现这个深度学习界的 “吃鸡挂”——SSD 目标检测。

  SSD 目标检测介绍

SSD 是一种 Object Detection 方法。本文的源代码是基于论文 SSD: Single Shot MultiBox Detector(https://arxiv.org/abs/1512.02325 ),实现的 keras 版本。

该文章在既保证速度,又要保证精度的情况下,提出了 SSD 物体检测模型,与现在流行的检测模型一样,将检测过程整个成一个 single deep neural network。便于训练与优化,同时提高检测速度。 SSD 将输出一系列离散化(discretization)的 bounding boxes,这些 bounding boxes 是在不同层次(layers)上的 feature maps 上生成的,并且有着不同的 aspect ratio。

  使用 RussellCloud 复现

做深度学习的,大家都知道最纠结的莫过于配置环境了。那么多框架那么多库那么多版本,稍有不注意,成倍的时间都花在踩坑上了。这在做复现的时候尤为明显,我不过是想跑一下别人的代码看看效果,结果完全搞不定。

使用 RussellCloud,轻松搞定环境问题,要啥,写个 requirement 就行了!

复现前准备:

  • 注册 RussellCloud 账号

(注册邀请码可至论坛跟帖求助获取,每位已经注册的用户也有五枚好友邀请码)

  • 安装 russell-cli 终端工具

 

$ sudo pip install -U russell-cli

  • Clone 项目代码,Git 地址 RussellCloud/SSD_keras

 

# clone代码 $ git clone https://github.com/RussellCloud/SSD_keras.git

使用命令行登录:

 

# 使用russell login命令 $ russell login

输入 y,网页登录后在网页端拷贝账户的 Token,粘贴进终端,回车。如果你使用 Windows 的命令行,可能会出现粘贴不进的情况,请右键窗口粘贴(或者点击左上角图标)。

成功登录输出:

 

Login Successful as XXX

新建项目:

来到 RussellCloud 主页,进入控制台,新建一个项目。项目名随便起一个,很多都可以不填,比较重要的是默认容器环境一定要选择:keras 。

0?wx_fmt=jpeg

  RussellCloud 创建项目页

初始化项目:

项目创建完成后记得在项目主页复制概览 ID,用于项目初始化。

 

# 绑定远程项目,此处<project_id>是在网页上复制的项目概览 ID $ russell init --id <project_id>

初始化成功输出:

 

Project "XXX" initialized in current directory

运行项目:

初始化完成后我们就可以用 russell run 命令运行项目了,这里我们项目下实现的是一个 IPython Notebook 工程,所以我们要使用 Jupyter 模式来启动我们的项目。

 

# russell run 以Jupyter模式启动项目 $ russell run --mode jupyter --data df2750d1f1624857a27c7802494c6e39:model

成功运行 task 输出:

 

RUN ID                            NAME                  VERSION --------------------------------  ------------------  --------- 780a8e053f2244cb9ea03faabc9f2694  RussellCloud/ssd:1          1 Setting up your instance and waiting for Jupyter notebook to become available ... Path to jupyter notebook: http://cpu.russellcloud.com/notebook/780a8e053f2244cb9ea03faabc9f2694/    To view logs enter:        russell logs 780a8e053f2244cb9ea03faabc9f2694

然后我们就会浏览器自动打开一个页面,这就进入到了我们的 Jupyter 环境下。

0?wx_fmt=jpeg

在线的 jupyter

然后我们可以看到我们所有的项目文件都展现在这个网页中了,当然我们还有挂载的 SSD_Weight 数据集在 / input/model 目录下没有显示出来。接下来我们就是打开这个 SSD.ipynb 开始运行啦!不过这里的代码有一些目录还还没有对应改好哦,所以我们这里按 cell 运行时候要及时查错,把相应的目录修改好。

成功运行完一遍,OK!

0?wx_fmt=jpeg

检测效果演示

  小记

“小编你这不是耍我么,吃鸡挂呢?”

当然我是有做测试的啦!只是效果不太理想(哭脸)。先上两张图感受一下。

0?wx_fmt=jpeg

0?wx_fmt=jpeg

这两张图都是来源于《绝地求生:大逃杀》的官方宣传片。第一张图算是识别出了人,可是,你识别自己有啥用喂喂喂。虽然玩家面前还有另一个人开着一辆跑车疾驰而来,但是它并没有识别出来。第二张图,穿着吉利服的 LYB,结果确实识别出来是一个鸟…… 好吧这还看着是有点像个鸟头。

我这里做的都只是一个图片的目标检测。如果做视频的目标检测,我想它应该能识别出来那辆疾驰而来的车。至于这个吉利服选手,怕是识别不出来了哈哈哈。看来,这个 “吃鸡挂” 的功力还远远不够。

但在其他图片上,这个 SSD 目标检测还是有不错的效果的:

0?wx_fmt=jpeg

检测出来的小猫咪


转自:“卧槽,又被 LYB 干了!” 背后传来一声哀嚎。

哈哈,看来,沉迷吃鸡的室友又被戒网瘾了。作为一个充满着正义的 LYB 的游戏,这人不长点眼力还真的不行啊。不过这时候一张图片吸引了我的兴趣:

0?wx_fmt=gif&wxfrom=5&wx_lazy=1

网易《荒野行动》的车辆检测

能识别出视频中的汽车和人,这,不是外挂么?想到专业制裁 LYB 们的透视挂,这波我很强好吧。为探秘这 “外挂” 效果有多强,那我就来复现这个深度学习界的 “吃鸡挂”——SSD 目标检测。

  SSD 目标检测介绍

SSD 是一种 Object Detection 方法。本文的源代码是基于论文 SSD: Single Shot MultiBox Detector(https://arxiv.org/abs/1512.02325 ),实现的 keras 版本。

该文章在既保证速度,又要保证精度的情况下,提出了 SSD 物体检测模型,与现在流行的检测模型一样,将检测过程整个成一个 single deep neural network。便于训练与优化,同时提高检测速度。 SSD 将输出一系列离散化(discretization)的 bounding boxes,这些 bounding boxes 是在不同层次(layers)上的 feature maps 上生成的,并且有着不同的 aspect ratio。

  使用 RussellCloud 复现

做深度学习的,大家都知道最纠结的莫过于配置环境了。那么多框架那么多库那么多版本,稍有不注意,成倍的时间都花在踩坑上了。这在做复现的时候尤为明显,我不过是想跑一下别人的代码看看效果,结果完全搞不定。

使用 RussellCloud,轻松搞定环境问题,要啥,写个 requirement 就行了!

复现前准备:

  • 注册 RussellCloud 账号

(注册邀请码可至论坛跟帖求助获取,每位已经注册的用户也有五枚好友邀请码)

  • 安装 russell-cli 终端工具

 

$ sudo pip install -U russell-cli

  • Clone 项目代码,Git 地址 RussellCloud/SSD_keras

 

# clone代码 $ git clone https://github.com/RussellCloud/SSD_keras.git

使用命令行登录:

 

# 使用russell login命令 $ russell login

输入 y,网页登录后在网页端拷贝账户的 Token,粘贴进终端,回车。如果你使用 Windows 的命令行,可能会出现粘贴不进的情况,请右键窗口粘贴(或者点击左上角图标)。

成功登录输出:

 

Login Successful as XXX

新建项目:

来到 RussellCloud 主页,进入控制台,新建一个项目。项目名随便起一个,很多都可以不填,比较重要的是默认容器环境一定要选择:keras 。

0?wx_fmt=jpeg

  RussellCloud 创建项目页

初始化项目:

项目创建完成后记得在项目主页复制概览 ID,用于项目初始化。

 

# 绑定远程项目,此处<project_id>是在网页上复制的项目概览 ID $ russell init --id <project_id>

初始化成功输出:

 

Project "XXX" initialized in current directory

运行项目:

初始化完成后我们就可以用 russell run 命令运行项目了,这里我们项目下实现的是一个 IPython Notebook 工程,所以我们要使用 Jupyter 模式来启动我们的项目。

 

# russell run 以Jupyter模式启动项目 $ russell run --mode jupyter --data df2750d1f1624857a27c7802494c6e39:model

成功运行 task 输出:

 

RUN ID                            NAME                  VERSION --------------------------------  ------------------  --------- 780a8e053f2244cb9ea03faabc9f2694  RussellCloud/ssd:1          1 Setting up your instance and waiting for Jupyter notebook to become available ... Path to jupyter notebook: http://cpu.russellcloud.com/notebook/780a8e053f2244cb9ea03faabc9f2694/    To view logs enter:        russell logs 780a8e053f2244cb9ea03faabc9f2694

然后我们就会浏览器自动打开一个页面,这就进入到了我们的 Jupyter 环境下。

0?wx_fmt=jpeg

在线的 jupyter

然后我们可以看到我们所有的项目文件都展现在这个网页中了,当然我们还有挂载的 SSD_Weight 数据集在 / input/model 目录下没有显示出来。接下来我们就是打开这个 SSD.ipynb 开始运行啦!不过这里的代码有一些目录还还没有对应改好哦,所以我们这里按 cell 运行时候要及时查错,把相应的目录修改好。

成功运行完一遍,OK!

0?wx_fmt=jpeg

检测效果演示

  小记

“小编你这不是耍我么,吃鸡挂呢?”

当然我是有做测试的啦!只是效果不太理想(哭脸)。先上两张图感受一下。

0?wx_fmt=jpeg

0?wx_fmt=jpeg

这两张图都是来源于《绝地求生:大逃杀》的官方宣传片。第一张图算是识别出了人,可是,你识别自己有啥用喂喂喂。虽然玩家面前还有另一个人开着一辆跑车疾驰而来,但是它并没有识别出来。第二张图,穿着吉利服的 LYB,结果确实识别出来是一个鸟…… 好吧这还看着是有点像个鸟头。

我这里做的都只是一个图片的目标检测。如果做视频的目标检测,我想它应该能识别出来那辆疾驰而来的车。至于这个吉利服选手,怕是识别不出来了哈哈哈。看来,这个 “吃鸡挂” 的功力还远远不够。

但在其他图片上,这个 SSD 目标检测还是有不错的效果的:

0?wx_fmt=jpeg

检测出来的小猫咪

转自:“卧槽,又被 LYB 干了!” 背后传来一声哀嚎。

哈哈,看来,沉迷吃鸡的室友又被戒网瘾了。作为一个充满着正义的 LYB 的游戏,这人不长点眼力还真的不行啊。不过这时候一张图片吸引了我的兴趣:

0?wx_fmt=gif&wxfrom=5&wx_lazy=1

网易《荒野行动》的车辆检测

能识别出视频中的汽车和人,这,不是外挂么?想到专业制裁 LYB 们的透视挂,这波我很强好吧。为探秘这 “外挂” 效果有多强,那我就来复现这个深度学习界的 “吃鸡挂”——SSD 目标检测。

  SSD 目标检测介绍

SSD 是一种 Object Detection 方法。本文的源代码是基于论文 SSD: Single Shot MultiBox Detector(https://arxiv.org/abs/1512.02325 ),实现的 keras 版本。

该文章在既保证速度,又要保证精度的情况下,提出了 SSD 物体检测模型,与现在流行的检测模型一样,将检测过程整个成一个 single deep neural network。便于训练与优化,同时提高检测速度。 SSD 将输出一系列离散化(discretization)的 bounding boxes,这些 bounding boxes 是在不同层次(layers)上的 feature maps 上生成的,并且有着不同的 aspect ratio。

  使用 RussellCloud 复现

做深度学习的,大家都知道最纠结的莫过于配置环境了。那么多框架那么多库那么多版本,稍有不注意,成倍的时间都花在踩坑上了。这在做复现的时候尤为明显,我不过是想跑一下别人的代码看看效果,结果完全搞不定。

使用 RussellCloud,轻松搞定环境问题,要啥,写个 requirement 就行了!

复现前准备:

  • 注册 RussellCloud 账号

(注册邀请码可至论坛跟帖求助获取,每位已经注册的用户也有五枚好友邀请码)

  • 安装 russell-cli 终端工具

 

$ sudo pip install -U russell-cli

  • Clone 项目代码,Git 地址 RussellCloud/SSD_keras

 

# clone代码 $ git clone https://github.com/RussellCloud/SSD_keras.git

使用命令行登录:

 

# 使用russell login命令 $ russell login

输入 y,网页登录后在网页端拷贝账户的 Token,粘贴进终端,回车。如果你使用 Windows 的命令行,可能会出现粘贴不进的情况,请右键窗口粘贴(或者点击左上角图标)。

成功登录输出:

 

Login Successful as XXX

新建项目:

来到 RussellCloud 主页,进入控制台,新建一个项目。项目名随便起一个,很多都可以不填,比较重要的是默认容器环境一定要选择:keras 。

0?wx_fmt=jpeg

  RussellCloud 创建项目页

初始化项目:

项目创建完成后记得在项目主页复制概览 ID,用于项目初始化。

 

# 绑定远程项目,此处<project_id>是在网页上复制的项目概览 ID $ russell init --id <project_id>

初始化成功输出:

 

Project "XXX" initialized in current directory

运行项目:

初始化完成后我们就可以用 russell run 命令运行项目了,这里我们项目下实现的是一个 IPython Notebook 工程,所以我们要使用 Jupyter 模式来启动我们的项目。

 

# russell run 以Jupyter模式启动项目 $ russell run --mode jupyter --data df2750d1f1624857a27c7802494c6e39:model

成功运行 task 输出:

 

RUN ID                            NAME                  VERSION --------------------------------  ------------------  --------- 780a8e053f2244cb9ea03faabc9f2694  RussellCloud/ssd:1          1 Setting up your instance and waiting for Jupyter notebook to become available ... Path to jupyter notebook: http://cpu.russellcloud.com/notebook/780a8e053f2244cb9ea03faabc9f2694/    To view logs enter:        russell logs 780a8e053f2244cb9ea03faabc9f2694

然后我们就会浏览器自动打开一个页面,这就进入到了我们的 Jupyter 环境下。

0?wx_fmt=jpeg

在线的 jupyter

然后我们可以看到我们所有的项目文件都展现在这个网页中了,当然我们还有挂载的 SSD_Weight 数据集在 / input/model 目录下没有显示出来。接下来我们就是打开这个 SSD.ipynb 开始运行啦!不过这里的代码有一些目录还还没有对应改好哦,所以我们这里按 cell 运行时候要及时查错,把相应的目录修改好。

成功运行完一遍,OK!

0?wx_fmt=jpeg

检测效果演示

  小记

“小编你这不是耍我么,吃鸡挂呢?”

当然我是有做测试的啦!只是效果不太理想(哭脸)。先上两张图感受一下。

0?wx_fmt=jpeg

0?wx_fmt=jpeg

这两张图都是来源于《绝地求生:大逃杀》的官方宣传片。第一张图算是识别出了人,可是,你识别自己有啥用喂喂喂。虽然玩家面前还有另一个人开着一辆跑车疾驰而来,但是它并没有识别出来。第二张图,穿着吉利服的 LYB,结果确实识别出来是一个鸟…… 好吧这还看着是有点像个鸟头。

我这里做的都只是一个图片的目标检测。如果做视频的目标检测,我想它应该能识别出来那辆疾驰而来的车。至于这个吉利服选手,怕是识别不出来了哈哈哈。看来,这个 “吃鸡挂” 的功力还远远不够。

但在其他图片上,这个 SSD 目标检测还是有不错的效果的:

0?wx_fmt=jpeg

检测出来的小猫咪

转自:http://blog.csdn.net/Y0W1as5eg37urFdS/article/details/79033569



目录
相关文章
|
6月前
|
机器学习/深度学习 自然语言处理 PyTorch
【深度学习】实验12 使用PyTorch训练模型
【深度学习】实验12 使用PyTorch训练模型
79 0
|
2月前
|
机器学习/深度学习 算法 数据可视化
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)-2
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)
96 0
|
2月前
|
机器学习/深度学习 Ubuntu Linux
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)-1
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)
55 1
|
4月前
|
机器学习/深度学习 人工智能 PyTorch
《人工智能专栏》专栏介绍 & 专栏目录 & Python与Python | 机器学习 | 深度学习 | 目标检测 | YOLOv5及其改进 | YOLOv8及其改进 | 关键知识点 | 各种工具教程
《人工智能专栏》专栏介绍 & 专栏目录 & Python与Python | 机器学习 | 深度学习 | 目标检测 | YOLOv5及其改进 | YOLOv8及其改进 | 关键知识点 | 各种工具教程
105 1
|
5月前
|
机器学习/深度学习 算法 计算机视觉
旋转目标检测【1】如何设计深度学习模型
平常的目标检测是平行的矩形框,“方方正正”的;但对于一些特殊场景(遥感),需要倾斜的框,才能更好贴近物体,旋转目标检测来啦~
221 0
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
【深度学习】实验18 自然语言处理
【深度学习】实验18 自然语言处理
38 0
|
6月前
|
机器学习/深度学习 自然语言处理
【深度学习】实验17 使用GAN生成手写数字样本
【深度学习】实验17 使用GAN生成手写数字样本
70 0
|
6月前
|
机器学习/深度学习 算法 PyTorch
【深度学习】实验16 使用CNN完成MNIST手写体识别(PyTorch)
【深度学习】实验16 使用CNN完成MNIST手写体识别(PyTorch)
79 0
|
6月前
|
机器学习/深度学习 自然语言处理 算法
【深度学习】实验15 使用CNN完成MNIST手写体识别(Keras)
【深度学习】实验15 使用CNN完成MNIST手写体识别(Keras)
53 0
|
6月前
|
机器学习/深度学习 算法 TensorFlow
【深度学习】实验14 使用CNN完成MNIST手写体识别(TensorFlow)
【深度学习】实验14 使用CNN完成MNIST手写体识别(TensorFlow)
63 0