标签: object-detection

Yolo 或 Faster RCNN 中的锚框或边界框

我不知道锚框和边界框或提案区域之间的区别。我对这些定义感到困惑。而且我不知道检测模型中这些框的含义,因为默认长度永远不会改变!最后,我对 RCNN 系列和 Yolo 系列都输出预测框 location 的事实感到困惑(x,y,w,h)。或输出增量位置(ground truth_x - predicted_x)/prediction_w

object-detection computer-vision yolo

9
推荐指数
1
解决办法
3104
查看次数

找不到 `protoc` 命令

当我运行这个:

protoc --python_out=. .\object_detection\protos\anchor_generator.proto
Run Code Online (Sandbox Code Playgroud)

在命令行上的 tensorflow 对象检测文件上,我得到:

'protoc' is not recognized as an internal or external command, operable program or batch file.
Run Code Online (Sandbox Code Playgroud)

我按照protoc object_detection/protos/*.proto: No such file or directory 中的所有说明进行操作,但它们从来没有为我工作过

除了我进行的搜索之外,我还尝试了以下命令:

py-3.6 -m pip install protobuf
Run Code Online (Sandbox Code Playgroud)

它对我有用。

我再次输入命令

python_out=. .\object_detection\protos\anchor_generator.proto 
Run Code Online (Sandbox Code Playgroud)

但它仍然失败,这是:

C:\Users\laptop market\Downloads\bin\protoc object_detection/protos/*.proto --py_out=.
Run Code Online (Sandbox Code Playgroud)

也失败了。

python object-detection protoc tensorflow

9
推荐指数
3
解决办法
3万
查看次数

如何减少 YOLOv3 文件中的类数?

我正在使用 YOLOv3 来检测视频中的汽车。我下载我的代码中使用了三个文件coco.namesyolov3.cfg并且yolov3.weights被培养为80个不同类别的对象被检测到。代码工作但非常慢,每帧需要超过 5 秒。我相信如果我减少类的数量,它会运行得更快。我可以从 中删除不必要的类coco.names,但不幸的是,我无法理解 中的所有内容yolov3.cfg,甚至无法阅读yolov3.weights. 本来想训练自己的模型,但是遇到了很多问题,所以放弃了这个想法。谁能帮我修改这些文件?

opencv object-detection emgucv yolo

9
推荐指数
2
解决办法
1万
查看次数

如何向预训练的对象检测模型添加额外的类并训练它检测所有类(预训练 + 新的)?

我关注了这个博客 --> https://medium.com/@teyou21/training-your-object-detection-model-on-tensorflow-part-2-e9e12714bdf,并构建了一个预先训练的 SSD Mobilenet 模型在名为“ssd_mobilenet_v2_quantized_coco”的 COCO 数据集上。

这里发生的事情是它完美地检测了我的新课程,但我也想包括预训练的课程。

我尝试将类数更改为 96(90 个预训练 + 6 个新),并使用 COCO 数据集中所有标签的名称和相应 id 编辑“labelmap.pbtxt”,最后从 ids 添加新类91 - 96。

它仍然只检测新类。

我应该怎么做才能检测到预训练的和新的类?

python object-detection deep-learning tensorflow

9
推荐指数
1
解决办法
922
查看次数

如何根据对象位置旋转图像?

首先,对不起帖子的长度。

我正在开展一个项目,根据叶子的图像对植物进行分类。为了减少数据的方差,我需要旋转图像,以便茎在图像的底部水平对齐(270 度)。

到目前为止我在哪里...

到目前为止,我所做的是创建一个阈值图像,然后从那里找到轮廓并在对象周围绘制一个椭圆(在许多情况下,它无法涉及整个对象,因此省略了茎......),之后,我创建 4 个区域(带有椭圆的边缘)并尝试计算最小值区域,这是因为假设在任何一点都必须找到茎,因此它将是人口较少的区域(主要是因为它将被 0 包围),这显然不像我想的那样工作。

之后,我以两种不同的方式计算旋转角度,第一个涉及atan2函数,这只需要我想要移动的点(人口最少的区域的质心)以及 wherex=image width / 2y = height。这种方法在某些情况下有效,但在大多数情况下,我没有得到所需的角度,有时需要一个负角度,它会产生一个正角度,最终茎在顶部。在其他一些情况下,它只是以一种可怕的方式失败。

我的第二种方法是尝试基于 3 个点计算角度:图像的中心、人口最少的区域的质心和 270º 点。然后使用一个arccos函数,并将其结果转换为度数。

这两种方法对我来说都失败了。

问题

  • 你认为这是一种正确的方法还是我只是让事情变得比我应该的更复杂?
  • 我怎样才能找到叶子的茎(这不是可选的,它必须是茎)?因为我的想法行不通...
  • 如何以稳健的方式确定角度?由于第二个问题中的相同原因......

这是一些示例和我得到的结果(二进制掩码)。矩形表示我正在比较的区域,椭圆上的红线是椭圆的主轴,粉红色圆圈是最小区域内的质心,红色圆圈表示 270º 参考点(角度) ,白点代表图像的中心。

原图 在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

我目前的解决方案

    def brightness_distortion(I, mu, sigma):
        return np.sum(I*mu/sigma**2, axis=-1) / np.sum((mu/sigma)**2, axis=-1)
    
    
    def chromacity_distortion(I, mu, sigma):
        alpha = brightness_distortion(I, mu, sigma)[...,None]
        return np.sqrt(np.sum(((I - alpha * mu)/sigma)**2, axis=-1))
    
    def bwareafilt ( image ):
        image = image.astype(np.uint8)
        nb_components, output, stats, centroids = cv2.connectedComponentsWithStats(image, connectivity=4) …
Run Code Online (Sandbox Code Playgroud)

python opencv object-detection computer-vision

9
推荐指数
1
解决办法
331
查看次数

如何将 YOLO 注释 (.txt) 转换为 PASCAL VOC (.xml)?

我已经构建了一个数据集来训练 YOLOv4,并且我拥有 YOLO 格式的所有标签(我使用了 LabelImg)。现在我想使用相同的数据集训练 SSD,因此我需要 PASCAL VOC 格式的标签。我已经看到了一些进行相反转换(voc 到 yolo)的方法,但不是我正在寻找的方法。由于我有数千张图像,我想找到一种方法来自动化整个过程,而不必逐一检查每个图像/标签。

有谁对如何解决这个问题有任何想法?

提前致谢!

label object-detection computer-vision yolo

9
推荐指数
3
解决办法
1万
查看次数

OpenCV:如何使用Haar分类器级联提高眼睛检测的准确性?

我有一个应用程序使用Haar级联来检测从摄像机捕获的图像中的眼睛.使用的方法是:

void CascadeClassifier::detectMultiScale(const Mat& image, vector<Rect>& objects, double scaleFactor=1.1, int minNeighbors=3, int flags=0, Size minSize=Size(), Size maxSize=Size())

这适用的默认值相当精细scaleFactor,minNeighborsflags而不能检测到某些人的眼睛.所以我想提高眼睛检测的准确性.似乎"级联分类器训练"和创建自定义级联分类器是一个很好的解决方案,但在这之前

是否可以通过调整方法中的一些参数来提高检测精度?请解释更多的意义scaleFactor,minNeighbors以及flags因为这些来自意cascadeclassifier-detectmultiscale文档是不是很清楚,我.谢谢.

c++ opencv object-detection

8
推荐指数
1
解决办法
7649
查看次数

使用 Tensorflow 对象检测 API 训练唯一对象时如何设置 max_detections_per_class 和 max_total_detections

我正在使用 Tensorflow 对象检测 API 来训练 3 个对象的检测器,这些对象具有与日常对象不同的外观。我收集了自己的数据集,并从预训练的 Faster-RCNN ResNet101 模型中进行了微调。在网络的模型配置中,为 second_stage_post_processing 设置以下参数是否有意义?

    max_detections_per_class: 1
    max_total_detections: 3
Run Code Online (Sandbox Code Playgroud)

由于在我的训练和测试环境中,可能出现的最大对象数为 3(每个类 1 个实例)。但我不确定这些参数是否对训练有意义。对于第二阶段的 BoxClassifier,如果 max_total_detection 为 3,这是否意味着对于一张训练图像,损失将从最多 3 个预测(边界框 + 标签)计算?如果是这样,看来模型失去了很多学习“背景”类的机会。如果不是,有哪些好的值可以使用?

object-detection tensorflow

8
推荐指数
0
解决办法
890
查看次数

google colab 在进程中设置“^C”

我正在运行从本教程中获得的代码, 我正在尝试运行tensorflow对象检测api,所有代码都运行良好,如果运行所有调用,所有单元格都会运行良好,最后,我的图像被分类。

Buuut 有 1 个电池不能很好地工作,它可以工作,但不喜欢它必须工作。

当我用它训练我的模型时!python legacy/train.py --logtostderr --train_dir=training/ --pipeline_config_path=training/ssd_mobilenet_v1_pets.config ,启动tensorflow并开始训练,但它只运行3步、4步,有时20、21、23步,最后,谷歌colab^C在过程中设置了a

我永远无法完成我的培训,因为谷歌合作实验室关闭了我的流程,有人知道发生了什么吗?

我已经尝试使用 GPU 和 TPU 实例。

[...]
INFO:tensorflow:Restoring parameters from training/model.ckpt-0
I1022 20:41:48.368024 139794549495680 tf_logging.py:115] Restoring parameters from training/model.ckpt-0
INFO:tensorflow:Running local_init_op.
I1022 20:41:52.779153 139794549495680 tf_logging.py:115] Running local_init_op.
INFO:tensorflow:Done running local_init_op.
I1022 20:41:52.997912 139794549495680 tf_logging.py:115] Done running local_init_op.
INFO:tensorflow:Starting Session.
I1022 20:41:59.072830 139794549495680 tf_logging.py:115] Starting Session.
INFO:tensorflow:Saving checkpoint to path training/model.ckpt
I1022 20:41:59.245162 139793493063424 tf_logging.py:115] Saving checkpoint to path training/model.ckpt
INFO:tensorflow:Starting Queues.
I1022 …
Run Code Online (Sandbox Code Playgroud)

python object-detection tensorflow object-detection-api google-colaboratory

8
推荐指数
1
解决办法
1万
查看次数

如何训练不包含对象的 Tensorflow 对象检测图像?

我正在使用 Tensorflow 的对象检测训练一个对象检测网络,

https://github.com/tensorflow/models/tree/master/research/object_detection

我可以根据自己的图像和标签成功训练网络。但是,我有一个不包含任何标记对象的大型图像数据集,我希望能够训练网络不检测这些图像中的任何内容。

根据我对 Tensorflow 对象检测的理解,我需要给它一组图像和相应的 XML 文件,这些文件对图像中的对象进行装箱和标记。脚本将 XML 转换为 CSV,然后转换为其他格式以进行培训,并且不允许使用没有对象的 XML 文件。

如何给出没有对象的图像和 XML 文件?

或者,网络如何学习不是对象的东西?

例如,如果您想检测“热狗”,您可以使用一组带有热狗的图像来训练它。但是如何训练它什么不是热狗呢?

python object-detection deep-learning tensorflow object-detection-api

8
推荐指数
1
解决办法
5445
查看次数