Yolo 暗网仅检测特定类别,如人、猫、狗等

2024-01-06

我们使用 YOLO Darknet 进行对象检测。我们使用Python3、tensorflow 1.0、numpy、opencv 3。使用yolo.weight进行检测。根据下面的链接给出:https://github.com/thtrieu/darkflow#cameravideo-file-demo https://github.com/thtrieu/darkflow#cameravideo-file-demo

当我们在视频上运行它时,它会同时检测所有不需要的对象?

请指导我们如何仅检测要搜索的特定类名。

Thanks


如果您只是按照 @JP Kim 提到的步骤进行操作 - 您将获得一个仅包含您的标签的视频,但它也会输出其他对象作为您的标签之一。

darkflow 存储库中有一个特定部分 https://github.com/thtrieu/darkflow#training-on-your-own-dataset它准确地告诉了如果您希望有不同的输出该怎么做。 TLDR - 你应该重新训练你的模型。他们通过 3 个类的例子来展示这一点。

但是,无论如何,让我引导您完成整个过程。让我们假设您有一个视频,您只需要跟踪其中的所有人员。因此,我们只需要跟踪一种类型的对象——“人”。

  1. 我们复制一份tiny-yolo-voc.cfg文件输入cfg目录。让我们按照他们的约定命名这个tiny-yolo-voc-1c.cfg哪里后缀1c代表类的数量。选择的理由tiny-yolo-voc与我们的基本模型不同的是,它是一个较小的网络,可以在较小的 GPU 上进行训练。据我观察,其他配置需要 10GB 以上的图形内存,它们常常导致我的机器内存不足。

  2. 我们将进行必要的更改tiny-yolo-voc-1c.cfg file :

    • edit classes变量为classes=1
    • 在最后convolutional之前的部分region,我们会改变filter变量为5 * (num_class + 5) = 5 * (1+5) = 30。所以,设置filters=30
  3. 我们将编辑labels.txt位于 darkflow 源目录中的文件,里面只有 1 行,上面写着person,因为我们只需要一种类型的标签。

  4. 现在,我们需要训练我们的模型。然而,对于训练,我们首先需要有数据集。

    • 现在,如果您的标签是 VOC 数据集或 CoCo 数据集的现有标签之一,那么您只需下载 VOC / Coco 数据集之一。在我们的例子中person是我们需要跟踪的对象类型,并且它已经是 VOC 数据集中的一种对象类型。因此,我们将使用 VOC 数据集。

    • 但是,如果您希望使用 YOLO 来分类和跟踪新类型的对象,那么您需要准备自己的数据集和注释。对于此自定义对象目的,您可以遵循第 5-8 部分这个 YouTube 视频系列 https://www.youtube.com/watch?v=Lg4T9iJkwhE。这些视频展示了如何使用 YOLO 进行跟踪和分类的示例fidget_spinner.

  5. 下载 VOC 数据集,因为它包含适合我们的对象类型的足够数据和注释person

    # Download the Pascal VOC dataset:
    curl -O https://pjreddie.com/media/files/VOCtest_06-Nov-2007.tar
    tar xf VOCtest_06-Nov-2007.tar
    
  6. 我们不会从头开始训练。所以,我们实际上要加载权重tiny-yolo-voc模型并从那里开始重新训练,针对我们的特定用例(只是person班级)。为此,我们必须下载权重tiny-yolo-voc。你可以找到权重这里是 YOLO v2 https://pjreddie.com/darknet/yolov2/。我们将下载权重用于 VOC 数据集的微型 YOLO https://pjreddie.com/media/files/yolov2-tiny-voc.weights。将文件移至/darkflow/bin/下载后的目录。

  7. 下载此文件后,基础模型配置文件和权重文件必须具有相同的名称。由于重命名配置不是一个好主意,我们将重命名我们下载的权重yolov2-tiny-voc.weights to tiny-yolo-voc.weights。这是必需的,因为当我们训练时,我们提供了权重文件,darkflow 尝试选取相应的配置文件作为训练新模型的参考。

darkflow 存储库页面上也提到了这一点:

当 darkflow 发现您正在加载tiny-yolo-voc.weights时,它将在您的 cfg/ 文件夹中查找tiny-yolo-voc.cfg,并将该配置文件与您使用 --model cfg/tiny-yolo 设置的新配置文件进行比较-voc-1c.cfg。在这种情况下,除了最后两层之外,每一层都将具有相同的权重数量,因此它将把权重加载到直到最后两层的所有层中,因为它们现在包含不同数量的权重。

  1. 现在,我们可以训练我们的模型了。您可以删除--gpu 0.9如果你没有 GPU 来训练这个部分。

    # Train the net on the Pascal dataset:
    flow --model cfg/tiny-yolo-voc-1c.cfg --load bin/tiny-yolo-voc.weights --train --dataset "~/VOCdevkit/VOC2007/JPEGImages" --annotation "~/VOCdevkit/VOC2007/Annotations" --gpu 0.9
    
  2. 当您认为损失不再减少时,按 Ctrl+C 结束训练。通常良好的损失/平均损失是 1 或低于 1。

您可能已经注意到,每执行 250 步后,darkflow 就会继续在ckpt/目录。停止训练后,您可以使用这些检查点中的任何一个来测试您的模型。

  1. 我们将在人物视频上运行它,并让它保存带有边界框预测的新视频。我们在此示例中使用第 1500 步检查点。

    flow --model cfg/tiny-yolo-voc-1c.cfg --load 1500 --demo video-input.mp4 --gpu 0.9 --saveVideo
    

当您运行此程序时,它将显示模型能够处理您的视频的 FPS。这可能会因您的机器而异。根据 FPS 和视频长度,此过程可能需要一些时间才能完成。该过程完成后,您将获得video.avi创建于darkflow/目录。

这个应该只有person视频中检测到的对象类型。

如果输出不是很好,您可以进一步训练模型,和/或改变阈值或其他参数以获得更好的输出。

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Yolo 暗网仅检测特定类别,如人、猫、狗等 的相关文章

  • Twisted 的 Deferred 和 JavaScript 中的 Promise 一样吗?

    我开始在一个需要异步编程的项目中使用 Twisted 并且文档非常好 所以我的问题是 Twisted 中的 Deferred 与 Javascript 中的 Promise 相同吗 如果不是 有什么区别 你的问题的答案是Yes and No
  • 探索java图像处理的好资源[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是图像处理领域的新手 请推荐一些好的资源 书籍和网络链接 来学习 Java 中的图像处理 最适合隐写术分析 适合初学者和高级水平 我看过
  • Sublime Text 插件开发中的全局 Python 包

    一 总结 我不知道 Sublime Text 插件开发人员如何使用 Sublime Text 查找全局 Python 包 而不是 Sublime Text 目录的 Python 包 Sublime Text使用自己的Python环境 而不是
  • 使用 pygame 显示 unicode 符号

    我检查了其他答案 但不明白为什么我的代码错误地显示 This is what I currently see https i stack imgur com 8tNIK png 这是关于文本渲染的相关代码 font pygame font
  • opencv水印周围的轮廓

    我想在图像中的水印周围画一个框 我已经提取了水印并找到了轮廓 但是 不会在水印周围绘制轮廓 轮廓是在我的整个图像上绘制的 请帮我提供正确的代码 轮廓坐标的输出为 array 0 0 0 634 450 634 450 0 dtype int
  • 使用 python 中的公式函数使从 Excel 中提取的值的百分比相等

    import xlrd numpy excel Users Bob Desktop wb1 xlrd open workbook excel assignment3 xlsx sh1 wb1 sheet by index 0 colA co
  • 补丁 - 为什么相对补丁目标名称不起作用?

    我已经从模块导入了一个类 但是当我尝试修补类名而不使用模块作为前缀时 出现类型错误 TypeError Need a valid target to patch You supplied MyClass 例如 以下代码给出了上述错误 imp
  • 为什么删除临时文件时出现WindowsError?

    我创建了一个临时文件 向创建的文件添加了一些数据 已保存 然后尝试将其删除 但我越来越WindowsError 编辑后我已关闭该文件 如何检查哪个其他进程正在访问该文件 C Documents and Settings Administra
  • 如何检查python xlrd库中的excel文件是否有效

    有什么办法与xlrd库来检查您使用的文件是否是有效的 Excel 文件 我知道还有其他库可以检查文件头 我可以使用文件扩展名检查 但为了多平台性我想知道是否有任何我可以使用的功能xlrd库本身在尝试打开文件时可能会返回类似 false 的内
  • 保留完整姓氏,在 pandas 列中获取名字的首字母(如果有的话,还有中间名)

    我有一个 pandas 数据框 其中有一列表示几位网球运动员的姓氏和姓名 如下所示 Player 0 Roddick Andy 1 Federer Roger 2 Tsonga Jo Wilfred 我想保留完整的姓氏并获取姓名的首字母和中
  • Python 中的流式传输管道

    我正在尝试使用 Python 将 vmstat 的输出转换为 CSV 文件 因此我使用类似的方法转换为 CSV 并将日期和时间添加为列 vmstat 5 python myscript py gt gt vmstat log 我遇到的问题是
  • 如何在 Python 中加密并在 Java 中解密?

    我正在尝试在 Python 程序中加密一些数据并将其保存 然后在 Java 程序中解密该数据 在Python中 我像这样加密它 from Crypto Cipher import AES KEY 1234567890123456789012
  • 如何使用文本相似性删除 pandas 数据框中相似(不重复)的行?

    我有数千个数据 这些数据可能相似也可能不相似 使用 python 的默认函数 drop duplicates 并没有真正的帮助 因为它们只检测相似的数据 例如 如果我的数据包含类似以下内容怎么办 嗨 早上好 嗨 早上好 Python 不会将
  • 使用Python计算目录的大小?

    在我重新发明这个特殊的轮子之前 有没有人有一个很好的例程来使用 Python 计算目录的大小 如果例程能够很好地以 Mb Gb 等格式格式化大小 那就太好了 这会遍历所有子目录 总结文件大小 import os def get size s
  • Matplotlib 中 x 轴标签的频率和旋转

    我在下面编写了一个简单的脚本来使用 matplotlib 生成图形 我想将 x tick 频率从每月增加到每周并轮换标签 我不知道从哪里开始 x 轴频率 我的旋转线产生错误 TypeError set xticks got an unexp
  • 使用“默认”环境变量启动新的子进程

    我正在编写一个构建脚本来解析依赖的共享库 及其共享库等 这些共享库在正常情况下是不存在的PATH环境变量 为了使构建过程正常工作 让编译器找到这些库 PATH已更改为包含这些库的目录 构建过程是这样的 加载器脚本 更改 PATH gt 基于
  • SocketIO + Flask 检测断开连接

    我在这里有一个不同的问题 但意识到它可以简化为 如何检测客户端何时从页面断开连接 关闭其页面或单击链接 换句话说 套接字连接关闭 我想制作一个带有更新用户列表的聊天应用程序 并且我在 Python 上使用 Flask 当用户连接时 浏览器发
  • Elasticsearch 通过搜索返回拼音标记

    我用语音分析插件 https www elastic co guide en elasticsearch plugins current analysis phonetic html由于语音转换 从弹性搜索中进行一些字符串匹配 我的问题是
  • Django Admin 中的反向内联

    我有以下 2 个型号 现在我需要将模型 A 内联到模型 B 的页面上 模型 py class A models Model name models CharField max length 50 class B models Model n
  • 如何与其他用户一起使用 pyenv?

    如何与其他用户一起使用 pyenv 例如 如果我在用户 test 的环境中安装了 pyenv 则当我以 test 身份登录时可以使用 pyenv 但是 当我以其他用户 例如 root 身份登录时如何使用 pyenv 即使你这么做了 我也会s

随机推荐

  • Spring防止ajax调用成为身份验证时的目标url

    我有一个正在运行的 Spring Java Web 应用程序 在某些页面上 当我注销时 最后发出的请求是 AJAX 调用 因此 当我重新登录时 Spring 将我重定向到 ajax 调用 给我一个充满 json 的浏览器 我的登录成功处理程
  • 包含敏感数据的私有和公共 Git 存储库

    我当前正在运行一个服务Heroku https www heroku com Heroku 的部署方式是将代码推送到 git 存储库 这会触发构建并随后触发新代码的部署 由于这是将服务部署到 Heroku 的唯一方法 因此该 git 存储库
  • Windows 8 XAML 多列文本

    Is there a way to make columns in a text I have one big string with the text i have to display and i have a fixed height
  • 如何在 Jetpack Compose 中添加边距?

    您究竟如何添加保证金Jetpack Compose 我可以看到有一个Modifier用于填充Modifier padding 但我似乎找不到一个利润 还是我瞎了 请有人指导我 非常感谢 您可以将填充和边距视为同一件事 将其想象为 间距 填充
  • 重叠部分透明元素的不透明度

    如果你有 div 不透明度为 0 5 的元素和另一个 div 元素以相等的不透明度覆盖第一个元素 那么两个元素加在一起的不透明度是多少 它不是 5 5 也不是 5 5 遇到这样的问题我该如何计算呢 我相信您正在寻找的公式是 1 x y di
  • 当文件名大小写改变时如何切换分支?

    我有一个分行development有一个文件Config json 我正在创建一个新分支new development 我重命名的地方Config json to config json并承诺 我切换回development看看那个分支中的
  • Acumatica 中动态变化的 PXSelector

    我有以下用例 Acumatica 组合框 下拉列表 可以有 8 个左右的值 其选择决定了用于在 PXSelector 中呈现的表 DAC e g 如果用户选择选项 a 我需要在表 A 中的 PXSelector 值中显示 如果用户选择选项
  • 如何修补 Eigen 3.3.7 以解决 GCC 8.2.1 错误(arm-none-eabi 8-2018q4-major 工具链)?

    我试图用以下命令编译 Eigen 3 3 7Arm的裸机8 2018q4 major工具链 https launchpad net gcc arm embedded announcement 15181并看到完全相同的错误 请参阅x86 6
  • 如何每天自动运行带有Python代码的Jupyter笔记本?

    我在 Jupyter 笔记本中有一些 Python 代码 我需要每天自动运行它 所以我想知道是否有办法进行设置 我真的很感谢对此的任何建议 Update最近我遇到了 papermill 它用于执行和参数化笔记本 https github c
  • music21:解析每首曲目的音符和持续时间

    我正在尝试使用 music21 将多轨 MIDI 文件转换为每个轨道的音符和持续时间数组 例如 给定一个包含 16 首曲目的 MIDI 文件 test mid 我想要获得 16 个元组数组 其中包含 音高 持续时间 加上音符的位置 musi
  • 在javafx中过滤要从数据库显示的数据

    我想在表视图中仅显示某些信息 例如数据库中仅显示 男性 人员 我只擅长使用javafx 提前感谢您的帮助 This is my current table 我想过滤表 以便表中仅显示具有 订单状态 已付款 的行 如果您可以使用 java 8
  • 如何使用维基词典 API 获取发音数据? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我一直在寻找一种通过查询某种 API 来获取任何给定单词的发音的方法 作为维基词典 http en w
  • 注册表项更改与 Python winreg 不生效,但不引发错误

    对 Python 来说还是个新手 我正在尝试编写一个脚本 允许我更改远程计算机上的特定注册表项 但我遇到了一些麻烦 基本上我的代码运行没有错误 但键值也没有设置 我使用在目标计算机上具有管理员权限的帐户 以管理员身份从 Windows 命令
  • 使用 Python 请求将文件数据放入 Autodesk API

    我正在按照描述的过程进行操作here https developer autodesk com en docs data v2 tutorials upload file 但被一个人拦住了403在第 4 步 我有一个令牌data write
  • GCC优化技巧,真的有效吗?

    在查看一些有关优化的问题时 这接受的答案 https stackoverflow com questions 2074099 coding practices which enable the compiler optimizer to m
  • WPF线程和GUI如何从不同线程访问对象?

    我有一个线程调用一个从互联网获取一些东西的对象 当该对象填满所需的所有信息时 它会引发一个事件 其中对象将包含所有信息 该事件由启动线程的控制器消耗 然后 从事件返回的对象被添加到通过视图模型方法绑定到 GUI 的集合中 问题是我无法将 C
  • 从另一个jar文件访问资源

    我有一个简单的结构 一个包含一批数据的数据 jar 文件和一个使用数据运行服务的服务 jar 文件 为了使数据易于替换 我将它们分开 并且 service jar 的类路径包含 data jar 所在的目录 在 service jar 中
  • 如何在 gitlab 中为多分支管道 jenkins 添加 webhook

    我想为每次推送触发多分支管道 任何人都可以告诉我如何在 gitlab 中配置 web hooks 来实现多分支管道 如果您想知道触发器设置在多分支管道作业设置中的位置 这将回答它 与其他作业类型不同 多分支作业配置不需要 触发器 设置 只需
  • 如何从 Android 中的 PreferenceActivity 获取 SharedPreferences?

    我正在使用 PreferenceActivity 来显示我的应用程序的一些设置 我通过 xml 文件扩充设置 以便我的 onCreate 和完整的类方法 如下所示 public class FooActivity extends Prefe
  • Yolo 暗网仅检测特定类别,如人、猫、狗等

    我们使用 YOLO Darknet 进行对象检测 我们使用Python3 tensorflow 1 0 numpy opencv 3 使用yolo weight进行检测 根据下面的链接给出 https github com thtrieu