标签: object-detection

使用OpenCV识别的完美对象

我有一个应用程序,我想一次跟踪2个对象,在图片中相当小.此应用程序应该在Android和iPhone上运行,因此算法应该是高效的.

对于我的客户来说,如果我们提供一些模式以及附加到要跟踪的对象的软件以获得一个可识别的目标,那就完美了.

这意味着我可以自己制作一个模式.由于我对图像处理的影响不大,我不知道哪些对象在图片中最容易识别,即使它们相当小.尽管由于产生的开销而不希望单独处理多个平面,但颜色也是可能的.

谢谢你的任何建议!! 最好,

guitarflow

iphone android opencv pattern-matching object-detection

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

OpenCV Haar分类器阈值

我试图理解oepncv XML haar分类器,它看起来像这样:

      <_>
      <!-- tree 0 -->
      <_>
        <!-- root node -->
        <feature>
          <rects>
            <_>3 7 14 4 -1.</_>
            <_>3 9 14 2 2.</_></rects>
          <tilted>0</tilted></feature>
        <threshold>4.0141958743333817e-003</threshold>
        <left_val>0.0337941907346249</left_val>
        <right_val>0.8378106951713562</right_val></_></_>
Run Code Online (Sandbox Code Playgroud)

如原始论文中所述,应将阈值与特征(积分图像)的总和进行比较.但是,图像的像素值应为0 - 255(灰度图像).一个特征的总和怎么可能那么小(例如在这个特征中,阈值是0.004014 ......)?你们能给我一些指导来理解吗?

谢谢您的帮助!

c++ opencv object-detection

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

如何使用OpenCV检测白色斑点

我画一幅画来测试: 在此输入图像描述

而且我想知道我在黑色圆圈中有多少斑点,每个斑点的大小是多少(所有斑点都是〜白色).

例如,在这种情况下,我有12个点: 在此输入图像描述

我知道如何找到白色像素,并且很容易从左侧验证序列:

int whitePixels = 0;
for (int i = 0; i < height; ++i)
{
    uchar * pixel = image.ptr<uchar>(i);
    for (int j = 0; j < width; ++j)
    {
        if (j>0 && pixel[j-1]==0)   // to group pixels for one spot
            whitePixels++;
    }
}
Run Code Online (Sandbox Code Playgroud)

但很明显,这段代码不够好(blob可以对角线等).

所以,底线,我需要帮助:我如何定义blob?

谢谢

c++ opencv image-processing object-detection

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

使用openCV改善人员检测

我正在尝试在openCV上检测人员的样本.在图像上运行它(此处可用的原始图像)后,这是我的结果:

在此输入图像描述

我正在使用与openCV捆绑在一起的人员检测示例(稍加修改以避免Visual Studio错误).这是执行的代码:

    // opencv-sample.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/highgui/highgui.hpp"

#include <stdio.h>
#include <string.h>
#include <ctype.h>

using namespace cv;
using namespace std;

// static void help()
// {
//     printf(
//             "\nDemonstrate the use of the HoG descriptor using\n"
//             "  HOGDescriptor::hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());\n"
//             "Usage:\n"
//             "./peopledetect (<image_filename> | <image_list>.txt)\n\n");
// }

int main(int argc, char** argv)
{
    Mat img;
    FILE* f = 0;
    char _filename[1024]; …
Run Code Online (Sandbox Code Playgroud)

c++ opencv object-detection

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

Java OpenCV-具有Hough变换的矩形检测

我正在开发一个程序来检测矩形并在检测到的区域绘制边界框。

对于边缘检测,我使用了Canny边缘检测。然后,我使用霍夫变换提取线。

这是原始图像 在这里输入图像描述

这是结果图像,请 在此处输入图像描述

我的问题是我无法在检测到的区域绘制边界框。看来我的程序只能检测到一条水平线。如何检测矩形并将矩形线绘制到检测到的形状?

我已经读过类似的问题,需要找到矩形的4个角点,检查该点是否为90度,并找到相交点。我真的很困惑如何在Java opencv中进行编码。其他检测形状并将边界框绘制到检测到的框的方法也可以。

这是代码

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.core.Point;
import org.opencv.core.Scalar;
import org.opencv.core.Size;
import org.opencv.imgcodecs.*;
import org.opencv.imgproc.Imgproc;

public class HoughTransformCV2 {

    public static void main(String[] args) {
        try {
            System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
            Mat source = Imgcodecs.imread("rectangle.jpg", Imgcodecs.CV_LOAD_IMAGE_ANYCOLOR);
            Mat destination = new Mat(source.rows(), source.cols(), source.type());

            Imgproc.cvtColor(source, destination, Imgproc.COLOR_RGB2GRAY);
            Imgproc.equalizeHist(destination, destination);
            Imgproc.GaussianBlur(destination, destination, new Size(5, 5), 0, 0, Core.BORDER_DEFAULT);

            Imgproc.Canny(destination, destination, 50, 100);
            //Imgproc.adaptiveThreshold(destination, destination, 255, Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY, 15, 40);
            Imgproc.threshold(destination, destination, 0, 255, Imgproc.THRESH_BINARY); …
Run Code Online (Sandbox Code Playgroud)

java algorithm opencv image-processing object-detection

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

我应该在训练集中存在的所有对象上标记和训练吗(yolo darknet)

(yolo-对象检测)

如果图像中有两只狗,而我在训练集中存在的所有图像中仅对其中一只进行了训练,那么我未标记并对其进行训练的训练集中的另一只狗会影响过程并会导致考虑将它们作为背景的一部分? 我特别询问有关yolo darknet对象检测的问题。

似乎是这样,因为经过3000批处理后它什么也没检测到。所以问题是,我应该在所有对象上进行训练(例如所有训练集中的所有狗),还是没关系,因为yolo只会从标记的对象中提取特征而忽略背景?

object-detection conv-neural-network

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

Tensorflow对象检测API RCNN在CPU上很慢:每分钟1帧

我正在使用来自tensorflow对象检测API的本地训练模型.我正在使用faster_rcnn_inception_resnet_v2_atrous_coco_11_06_2017检查站.我重新训练了一个1类模型并将其导出到SavedModel

python object_detection/export_inference_graph.py \
    --input_type image_tensor \
    --pipeline_config_path ${PIPELINE_CONFIG_PATH} \
    --trained_checkpoint_prefix /Users/Ben/Dropbox/GoogleCloud/Detection/train/model.ckpt-186\
    --output_directory /Users/Ben/Dropbox/GoogleCloud/Detection/SavedModel/
Run Code Online (Sandbox Code Playgroud)

虽然我知道还有其他较浅的模型,但报告的RCNN运行时间比我看到的快100多倍.任何人都可以在CPU上使用更快的RCNN运行时间来确认吗?我试图告诉我的代码是否存在问题,或者只是转移到较小的模型.

我正在抓住juypter笔记本的代码,几乎没有变化.我正在运行一个干净的virtualenv,只有安装的要求.

detection_predict.py

import numpy as np
import tensorflow as tf
from PIL import Image
import glob
from collections import defaultdict
from io import StringIO
from matplotlib import pyplot as plt
from PIL import Image
from object_detection.utils import label_map_util
from object_detection.utils import visualization_utils as vis_util
import os
import datetime

TEST_IMAGE_PATHS = glob.glob("/Users/Ben/Dropbox/GoogleCloud/Detection/images/validation/*.jpg")

# Size, in inches, of the …
Run Code Online (Sandbox Code Playgroud)

object-detection tensorflow

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

使用'keep_aspect_ratio_resizer'的Tensorflow对象检测API SSD模型

我正在尝试检测不同形状的图像(不是正方形)中的物体。我使用了faster_rcnn_inception_v2模型,并且可以使用图像缩放器来保持图像的纵横比,并且输出令人满意。

image_resizer {
  keep_aspect_ratio_resizer {
    min_dimension: 100
    max_dimension: 600
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,为了提高性能,我想使用ssd_inception_v2或ssd_inception_v2模型进行训练。的示例配置的用途固定形状调整大小如下,

image_resizer {
  fixed_shape_resizer {
    height: 300
    width: 300
  }
}
Run Code Online (Sandbox Code Playgroud)

但是问题是由于固定的调整大小,我得到的检测结果很差。我尝试将它更改为keep_aspect_ratio_resizer,如先前在fast_rcnn_inception_v2中所述。我收到以下错误,

InvalidArgumentError(请参见上面的回溯):ConcatOp:输入的尺寸应匹配:shape [0] = [1,100,500,3] vs. shape 1 = [1,100,439,3]

如何在SSD模型中进行配置,以调整图像大小并保持宽高比?

object-detection tensorflow object-detection-api

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

Tensorflow检测API中的SSD锚点

我想在N x N图像的自定义数据集上训练SSD检测器。因此,我研究了Tensorflow对象检测API,并在基于MobileNet v2的COCO上找到了SSD300x300的预训练模型。

在查看用于训练的配置文件时:字段anchor_generator看起来像这样:(紧随本文之后)

anchor_generator {
  ssd_anchor_generator {
    num_layers: 6
    min_scale: 0.2
    max_scale: 0.9
    aspect_ratios: 1.0
    aspect_ratios: 2.0
    aspect_ratios: 0.5
    aspect_ratios: 3.0
    aspect_ratios: 0.33
    }
}
Run Code Online (Sandbox Code Playgroud)

当寻找SSD锚发电机原我是正确的假设,因此:base_anchor_height=base_anchor_width=1

如果是的话,我假设通过读取多个网格锚点生成器(如果图像是300x300 square)得到的锚点是:大小从0.2 * 300 = 60 * 60像素到0.9 * 300 = 270 * 270像素(不同的宽高比)?

因此,如果要通过固定场来训练NxN图像:

fixed_shape_resizer {
  height: N
  width: N
}
Run Code Online (Sandbox Code Playgroud)

他会使用相同的配置文件锚点,范围从(0.2 * N,0.2 * N)像素到(0.9 * N,0.9 * N)像素(具有不同的宽高比)?

我做了很多假设,因为代码很难掌握,而且似乎还没有文档。我对么 ?是否有一种简单的方法可以可视化使用的锚,而无需训练模型?

python object-detection tensorflow

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

Tensorflow对象检测下一步

我试图训练一个模型来检查图像,识别指定的对象并告诉我其模型(我什至不需要看到对象周围的正方形)。

为此,我使用Tensorflow的对象检测,而我所做的大部分事情都是在看本教程:

如何在Windows 10上使用TensorFlow(GPU)训练多个对象的对象检测分类器

但是某些事情发生了变化,可能是由于更新,然后我不得不自己做一些事情。我实际上可以训练模型(我想),但是我不理解评估结果。我过去经常看到损耗和电流阶跃,但是这个输出对我来说并不常见。另外,我认为培训没有保存下来。

训练命令行:

model_main.py --logtostderr --train_dir=training/ --pipeline_config_path=training/faster_rcnn_inception_v2_coco.config
Run Code Online (Sandbox Code Playgroud)

配置文件:

model {
  faster_rcnn {
    num_classes: 9
    image_resizer {
      keep_aspect_ratio_resizer {
        min_dimension: 600
        max_dimension: 1024
      }
    }
    feature_extractor {
      type: 'faster_rcnn_inception_v2'
      first_stage_features_stride: 16
    }
    first_stage_anchor_generator {
      grid_anchor_generator {
        scales: [0.25, 0.5, 1.0, 2.0]
        aspect_ratios: [0.5, 1.0, 2.0]
        height_stride: 16
        width_stride: 16
      }
    }
    first_stage_box_predictor_conv_hyperparams {
      op: CONV
      regularizer {
        l2_regularizer {
          weight: 0.0
        }
      }
      initializer {
        truncated_normal_initializer {
          stddev: 0.01
        }
      }
    }
    first_stage_nms_score_threshold: 0.0
    first_stage_nms_iou_threshold: 0.7
    first_stage_max_proposals: 300 …
Run Code Online (Sandbox Code Playgroud)

python object-detection tensorflow object-detection-api

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