问题标签 [darknet]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 重新排序连续跨步像素阵列的最有效方法是什么?
我正在 Jetson TX2(带有 ARM 处理器)上开发一个对性能至关重要的图像处理管道,其中包括读取一组图像,然后通过Darknet执行基于深度学习的对象检测。用 C 编写的 Darknet 对图像的存储方式有自己的表示,这与 OpenCV 的 IplImage 或 Python numpy 数组存储图像的方式不同。
在我的应用程序中,我需要通过 Python 与 Darknet 交互。所以,到目前为止,我正在将一批图像(通常是 16 个)读入一个 numpy 数组,然后使用 ctypes 将其作为一个连续数组传递给 Darknet。在 Darknet 中,我必须重新排列像素的顺序以从 numpy 格式变为 Darknet 的格式。
虽然输入数组是一个连续的块,按列排列,然后按行排列,然后按通道排列,然后按图像排列,但暗网格式需要先按通道排列,然后按列排列,然后按行排列:并且包含一个批处理中每个图像的行而不是连续的块。下图试图展示差异。在这个例子中,我假设一个ixj
图像。(0,0)、(0,1) 等表示 (row, col),而在顶部,C0、C1、C2.. 等表示相应行中的列。请注意,在将多个图像作为批处理的一部分的情况下,输入格式将它们一个接一个地顺序排列,但 Darknet 需要它们位于不同的行上:每一行仅包含来自一个图像的数据。
到目前为止,我在 C 中将输入数组转换为 Darknet 格式的代码如下所示,它迭代地命中每个通道中的每个像素并将其放置在不同的位置,同时还对沿途的像素进行归一化。
有没有更有效的方法在 C 中进行这种重新排列和规范化?
- 我正在使用 Jetson TX2:它包含一个 ARM 处理器和一个 NVIDIA GPU,因此可以访问 NEON 和 CUDA 以及 OpenMP。
- 图像尺寸是固定的,可以硬编码:只有批量大小可以改变。
yolo - 了解暗网的 yolo.cfg 配置文件
我在互联网上搜索过,但发现的信息很少,我不明白每个变量/值在 yolo 的.cfg
文件中代表什么。所以我希望你们中的一些人能提供帮助,我不认为我是唯一一个遇到这个问题的人,所以如果有人知道 2 或 3 个变量,请发布它们,以便将来需要这些信息的人可以找到它们。
我想知道的主要是:
- 批
细分
衰变
势头
渠道
过滤器
激活
tensorflow - 我应该为我的笔记本电脑选择哪个版本的 yolo?
所以我有一台笔记本电脑,它有GTX1050ti,cpu 是i7 7700hq,我很好奇我应该选择哪个版本,这样它才能适合我笔记本电脑的性能,而且YOLO可以预测图像还是只是实时检测?
tensorflow - Darkflow 的 .pb 模型无法检测到对象,而原始的暗网权重文件能够
我正在使用暗网创建自定义训练模型,并尝试使用以下命令将生成的权重文件转换为张量流权重文件:
执行成功,生成一个.pb文件。原始权重文件能够检测到对象,但是当我运行 .pb 文件时没有检测到。
这是我运行 .pb 文件时的输出:
opencl - Darknet - OpenCL 在 clEnqueueNDRangeKernel 中奇怪的时间连续增量
我遇到了 OpenCL 版本的 Darknet 的问题。我深入研究了实现并意识到问题出在softmax内核的调用中(发生在https://github.com/ganyc717/Darknet-On-OpenCL/blob/c13fefc66a13da5805986937fccd486b2b313c24/darknet_cl/src/blas_kernels_cl.cpp# L1020 )。我在 github ( https://github.com/ganyc717/Darknet-On-OpenCL/issues/4 ) 上的一个问题中报告了它。但与此同时,我试图了解可能发生的事情。
我分析了算法执行预测所需的时间,并且它会随着运行而增加。出于好奇,我决定在每次运行之前重新加载所有网络,然后算法预测所花费的时间保持稳定,因此在我看来,这取决于算法的持续执行。
对我来说奇怪的是,随着时间的推移,它似乎变慢的是对内核的调用,即对 clEnqueueNDRangeKernel 的调用。我不是 OpenCL 专家,但多次执行内核变慢似乎不合逻辑。会不会是内存问题?它对执行时间有何影响?我有点失落,任何帮助表示赞赏。
PD:在 OpenCL 中的“clEnqueueNDRangeKernel”的一个奇怪的 Timinig 问题中报告了一个类似的问题,但未标记答案。它有一个与测量时间的方式有关的评论,但我认为这不是我的情况,因为时间显然在增长。
编辑:我修改了代码以启用 CL_QUEUE_PROFILING_ENABLE。然后我添加了以下几行来分析 enqueue 调用:
这些时间度量保持稳定......这让我更加困惑。似乎 GPU 运行它自己需要相同的时间,但是当 cpu 调用的度量时它会随着时间增长:
c++ - Opencv 断言因暗网而失败
我曾经在 Ubuntu 18.04 上安装过 OPENCV 3.4.1。我试图在我的机器上编译 YOLO3,但编译失败导致我遇到了这个问题。该问题中的一项建议建议使用 3.4.0 并且它有点工作。
我将这些选项与 cmake 一起使用:
然后我做了
使用 opencv 3.4.0 我能够编译它。但是,当我尝试运行它时,我收到了错误(如下所示)。这很奇怪,因为我刚刚安装了 3.4.0,它显示了一些与 3.4.1 相关的错误。
当我什至没有安装它时,它不应该显示 3.4.1 错误。我还删除了我之前编译 3.4.1 的目录,但错误仍然指向已删除的目录(<local_path>/opencv-3.4.1/
)。位于我的主文件夹中,其中包含许多名称奇怪的目录。因此我将其排除在外以避免任何混淆。
我能够确认 3.4.0 安装了:
我想知道是什么导致了上面提到的错误(与断言有关的错误)
logistic-regression - 当网络更深时,逻辑回归总是预测相同的值
我使用暗网训练逻辑回归模型。但它总是为不同的输入图像输出相同的预测。
但是当我删除一些卷积层时,它似乎变得正常了。(不同输入图像的不同输出)
模型cfg文件如下:
[net]
一些参数...
[convolutions]
[convolutions]
[shortcut]
...
[avgpool]
[connected]
batch_normalize=1
output=1
activation=linear
[logistic]
我尝试了不同的学习率,动量。不行。
并且训练数据是平衡的。两个班级,每个班级15000张图片。
有什么建议吗?谢谢。
opencv - 演示需要 OpenCV 用于网络摄像头图像
我正在尝试使用来自官方网站的 YOLO 进行对象检测:https ://pjreddie.com/darknet/yolo/ 但是我无法将 OpenCV 与它集成,尽管我已经在我的 python 版本 python 和 python3 中安装了 OpenCV 她是错误:
所以任何人都可以帮我解决这个问题,我已经尝试解决了一个多星期,但我做不到。如果有人给我解决方案,我会很高兴。先感谢您。
python - 从视频流中执行接近实时的人员检测的问题
目标:从给定的远程视频流中以最小的延迟/延迟实时检测人。
设置 :
- Raspberry Pi (2) 带 USB 网络摄像头,使用 Flask 提供图像/视频流。
- 本地机(macbook pro)获取视频流,通过OpenCV、Darknet/DarkFlow/Yolo、Tensorflow处理图像。
- 显示检测到的人获得的处理流。检测到的人周围会有一个矩形。
- 蟒蛇 3
我目前有基本功能工作,但是,它似乎相当慢。当我需要在不到一秒的时间内处理图像时,大约每隔几秒钟就会处理一次图像。所以结果是一个视频,它显示了流后面的更新方式并且断断续续。通过四处搜索,这似乎是一个常见问题,但我似乎还没有找到一个直接的答案。
正如一些论坛所说,我已经将流抓取实现为自己的线程,但我相信现在的问题只是处理抓取的图像所需的时间。
是否可以提高性能?我是否需要在提供良好 GPU 的系统上在云中进行此处理,以便我可以利用这种性能提升?我是否使用了错误的 yolo 权重和 cfg?我知道 yolov3 已经出局了,但我认为我在使用我的环境时遇到了问题。