物体识别_物体识别代码 - CSDN
精华内容
参与话题
  • opencv实时识别指定物体

    热门讨论 2020-07-28 23:33:35
    opencv实时识别指定物体,所有需要的用到的文件都已经放上了,opencv 3.4.0 python 3.6.3
  • 三种强大的物体识别算法

    万次阅读 2015-08-13 22:54:12
    三种强大的物体识别算法 —— SIFT/SURF 、 haar 特征、广义 hough 变换 的特性对比分析   收藏   识别算法概述:       SIFT/SURF 基于灰度图,   一、首先建立图像金字塔,形成三维的图像...

    SIFT/SURF基于灰度图,

    一、首先建立图像金字塔,形成三维的图像空间,通过Hessian矩阵获取每一层的局部极大值,然后进行在极值点周围26个点进行NMS,从而得到粗略的特征点,再使用二次插值法得到精确特征点所在的层(尺度),即完成了尺度不变。

    二、在特征点选取一个与尺度相应的邻域,求出主方向,其中SIFT采用在一个正方形邻域内统计所有点的梯度方向,找到占80%以上的方向作为主方向;而SURF则选择圆形邻域,并且使用活动扇形的方法求出特征点主方向,以主方向对齐即完成旋转不变。

    三、以主方向为轴可以在每个特征点建立坐标,SIFT在特征点选择一块大小与尺度相应的方形区域,分成16块,统计每一块沿着八个方向占的比例,于是特征点形成了128维特征向量,对图像进行归一化则完成强度不变;而SURF分成64块,统计每一块的dx,dy,|dx|,|dy|的累积和,同样形成128维向量,再进行归一化则完成了对比度不变与强度不变。

     

    haar特征也是基于灰度图,

    首先通过大量的具有比较明显的haar特征(矩形)的物体图像用模式识别的方法训练出分类器,分类器是个级联的,每级都以大概相同的识别率保留进入下一级的具有物体特征的候选物体,而每一级的子分类器则由许多haar特征构成(由积分图像计算得到,并保存下位置),有水平的、竖直的、倾斜的,并且每个特征带一个阈值和两个分支值,每级子分类器带一个总的阈值。识别物体的时候,同样计算积分图像为后面计算haar特征做准备,然后采用与训练的时候有物体的窗口同样大小的窗口遍历整幅图像,以后逐渐放大窗口,同样做遍历搜索物体;每当窗口移动到一个位置,即计算该窗口内的haar特征,加权后与分类器中haar特征的阈值比较从而选择左或者右分支值,累加一个级的分支值与相应级的阈值比较,大于该阈值才可以通过进入下一轮筛选。当通过分类器所以级的时候说明这个物体以大概率被识别。

     

    广义hough变换同样基于灰度图,

    使用轮廓作为特征,融合了梯度信息,以投票的方式识别物体,在本blog的另一篇文章中有详细讨论,这里不再赘述。

     

     

    特点异同对比及其适用场合:

     

    三种算法都只是基于强度(灰度)信息,都是特征方法,但SIFT/SURF的特征是一种具有强烈方向性及亮度性的特征,这使得它适用于刚性形变,稍有透视形变的场合;haar特征识别方法带有一点人工智能的意味,对于像人脸这种有明显的、稳定结构的haar特征的物体最适用,只要结构相对固定即使发生扭曲等非线性形变依然可识别;广义hough变换完全是精确的匹配,可得到物体的位置方向等参数信息。前两种方法基本都是通过先获取局部特征然后再逐个匹配,只是局部特征的计算方法不同,SIFT/SURF比较复杂也相对稳定,haar方法比较简单,偏向一种统计的方法形成特征,这也使其具有一定的模糊弹性;广义hough变换则是一种全局的特征——轮廓梯度,但也可以看做整个轮廓的每一个点的位置和梯度都是特征,每个点都对识别有贡献,用直观的投票,看票数多少去确定是否识别出物体。

    转自:http://blog.csdn.net/cy513/article/details/4285579
    展开全文
  • 由于每个项目需要检查的目标对象都不一定相同,一个大而全面的库固然是好多,但是如果仅仅是为了识别一个视角中的一种或少数种类的物体,庞大的库就会显得笨重,严重占用cpu资源和存储空间。 所以这就需要我们通过...

           由于每个项目需要检查的目标对象都不一定相同,一个大而全面的库固然是好多,但是如果仅仅是为了识别一个视角中的一种或少数种类的物体,庞大的库就会显得笨重,严重占用cpu资源和存储空间。

           所以这就需要我们通过机器机器学习完成特殊物体的库。本次我的检测目标物体是茶杯,所以我在网上收集了大量的图标并进行了标记,然后通过机器训练生产了自己的库,最后完成物体有有效识别。

            下面第一张图是我在网上收集的各种茶杯的图片,第二张是通过调用自己的库实现对茶杯的检测,除了茶杯其他的物体一概忽略,所以对目标物体能够更加快速准确的检测出二不存在其他的干扰。





    完整的源教程分为大概五部分,大部分都是英文,视频的那部分需要翻墙(在YouTube上):

    https://pythonprogramming.net/video-tensorflow-object-detection-api-tutorial/点击打开链接


    第一部分:

    参考源:

    视频和基本介绍:

    https://pythonprogramming.net/custom-objects-tracking-tensorflow-object-detection-api-tutorial/


    LabelImg安装流程:

    下载地址:https://github.com/tzutalin/labelImg

    安装流程:Windows+anaconda

    1、安装qt:(方法一:anaconda界面中点击qtconsole进行安装;方法二:在pycharm指定的环境下,于底部terminal窗口中输入:conda install pyqt=5

    2、执行安装:进入下载后的文件目录中,pyrcc5 -o resources.py resources.qrc


    第二部分:

    参考源:

    https://pythonprogramming.net/creating-tfrecord-files-tensorflow-object-detection-api-tutorial/


    Xml文件合成为csv文件:

    代码:

    https://github.com/datitran/raccoon_dataset/blob/master/xml_to_csv.py

    直接执行

    生成对象检测模型的TFRecord文件:

    代码:

    https://github.com/datitran/raccoon_dataset/blob/master/generate_tfrecord.py

    执行:

    python generate_tfrecord.py --csv_input=data/train_labels.csv  --output_path=data/train.record

    python generate_tfrecord.py --csv_input=data/test_labels.csv  --output_path=data/test.record

     

    代码局部需要修改


    第三部分:

    参考源:

    https://pythonprogramming.net/training-custom-objects-tensorflow-object-detection-api-tutorial/

     

    ssd_mobilenet_v1_pets.config文件源:

    https://github.com/tensorflow/models/blob/master/research/object_detection/samples/configs/ssd_mobilenet_v1_pets.config

     

    sd_mobilenet_v1_coco_11_06_2017.tar.gz文件源:

    http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_coco_11_06_2017.tar.gz

     

    python train.py --logtostderr --train_dir=training/ --pipeline_config_path=training/ssd_mobilenet_v1_pets.config


    第四部分:

    python export_inference_graph \
        --input_type image_tensor \
        --pipeline_config_path path/to/ssd_inception_v2.config \
        --trained_checkpoint_prefix path/to/model.ckpt \
        --output_directory path/to/exported_model_directory

     

    python export_inference_graph.py \
        --input_type image_tensor \
        --pipeline_config_path training/ssd_mobilenet_v1_pets.config \
        --trained_checkpoint_prefix training/model.ckpt-553 \
        --output_directory cup_graph

     

    python export_inference_graph.py --input_type image_tensor --pipeline_config_path training/ssd_mobilenet_v1_pets.config  --trained_checkpoint_prefix training/model.ckpt-553 --output_directory cup_graph

     

    得到训练文件夹cup_graph,修改调用源码即可(图片形式或者视频形式)


    第五部分:

    修改应用程序,可以在Tensorflow 摄像头物体实时识别 基础上进行修改

    附上完整代码

    import numpy as np
    import os
    import six.moves.urllib as urllib
    import sys
    import tarfile
    import tensorflow as tf
    import zipfile
    
    from collections import defaultdict
    from io import StringIO
    from matplotlib import pyplot as plt
    from PIL import Image
    from object_detection.utils import ops as utils_ops
    
    import cv2
    cap = cv2.VideoCapture(0)
    
    if tf.__version__ < '1.4.0':
      raise ImportError('Please upgrade your tensorflow installation to v1.4.* or later!')
    
    sys.path.append("..")
    
    from utils import label_map_util
    
    from utils import visualization_utils as vis_util
    
    # What model to download.
    MODEL_NAME = 'cup_graph'
    
    # Path to frozen detection graph. This is the actual model that is used for the object detection.
    PATH_TO_CKPT = MODEL_NAME + '/frozen_inference_graph.pb'
    
    # List of the strings that is used to add correct label for each box.
    PATH_TO_LABELS = os.path.join('data', 'object-detection.pbtxt')
    
    NUM_CLASSES = 1
    
    detection_graph = tf.Graph()
    with detection_graph.as_default():
      od_graph_def = tf.GraphDef()
      with tf.gfile.GFile(PATH_TO_CKPT, 'rb') as fid:
        serialized_graph = fid.read()
        od_graph_def.ParseFromString(serialized_graph)
        tf.import_graph_def(od_graph_def, name='')
    
    label_map = label_map_util.load_labelmap(PATH_TO_LABELS)
    categories = label_map_util.convert_label_map_to_categories(label_map, max_num_classes=NUM_CLASSES, use_display_name=True)
    category_index = label_map_util.create_category_index(categories)
    
    def load_image_into_numpy_array(image):
      (im_width, im_height) = image.size
      return np.array(image.getdata()).reshape(
          (im_height, im_width, 3)).astype(np.uint8)
    
    # For the sake of simplicity we will use only 2 images:
    # image1.jpg
    # image2.jpg
    # If you want to test the code with your images, just add path to the images to the TEST_IMAGE_PATHS.
    PATH_TO_TEST_IMAGES_DIR = 'test_images'
    TEST_IMAGE_PATHS = [ os.path.join(PATH_TO_TEST_IMAGES_DIR, 'image{}.jpg'.format(i)) for i in range(3, 6) ]
    
    # Size, in inches, of the output images.
    IMAGE_SIZE = (12, 8)
    
    with detection_graph.as_default():
      with tf.Session(graph=detection_graph) as sess:
        while True:
          ret, image_np = cap.read()
          image_np = cv2.flip(image_np, 0)
          # Expand dimensions since the model expects images to have shape: [1, None, None, 3]
          image_np_expanded = np.expand_dims(image_np, axis=0)
          image_tensor = detection_graph.get_tensor_by_name('image_tensor:0')
          # Each box represents a part of the image where a particular object was detected.
          boxes = detection_graph.get_tensor_by_name('detection_boxes:0')
          # Each score represent how level of confidence for each of the objects.
          # Score is shown on the result image, together with the class label.
          scores = detection_graph.get_tensor_by_name('detection_scores:0')
          classes = detection_graph.get_tensor_by_name('detection_classes:0')
          num_detections = detection_graph.get_tensor_by_name('num_detections:0')
          # Actual detection.
          (boxes, scores, classes, num_detections) = sess.run(
              [boxes, scores, classes, num_detections],
              feed_dict={image_tensor: image_np_expanded})
    
          vis_util.visualize_boxes_and_labels_on_image_array(
              image_np,
              np.squeeze(boxes),
              np.squeeze(classes).astype(np.int32),
              np.squeeze(scores),
              category_index,
              use_normalized_coordinates=True,
              line_thickness=8)
    
          cv2.imshow('object detection', cv2.resize(image_np, (800,600)))
          if cv2.waitKey(25) & 0xFF == ord('q'):
            cv2.destroyAllWindows()
            break






    展开全文
  • 物体识别

    千次阅读 2018-09-09 22:54:01
    一、物体识别 图像识别:很重要,是很多算法的基础 图像识别+定位:识别出来是猫,且定位出猫的位置 物体检测:每个图像中含有多物体,检测出有几个个体,并框出来位置 图像分割:不仅仅框出来位置,还有勾勒...

    一、物体识别

    这里写图片描述

    图像识别:很重要,是很多算法的基础

    图像识别+定位:识别出来是猫,且定位出猫的位置

    物体检测:每个图像中含有多物体,检测出有几个个体,并框出来位置

    图像分割:不仅仅框出来位置,还有勾勒出来轮廓

    很有意义,且能在工业落地。

    这里写图片描述

    如何识别+定位(单物体):

    这里写图片描述

    已经用多层的卷积神经网络做了分类的问题(右上角),得到了已经训练好的参数。现在要定位矩形框,四个值(x,y,w,h)分别为,(x,y)为左上的坐标,w为宽,h为高,四个数都是连续的值,就变为了一个回归问题。

    这里写图片描述

    分类问题是通过FC得到每类的概率,而此时需要得到连续的四个值,所以预测的是x^,y^,w^,h^,真实的是x,y,w,h

    L2-loss:(xx^)2+(yy^)2+(ww^)2+(hh^)2

    利用BP+SGD进行训练,得到损失最小的参数。

    这里写图片描述

    去掉做分类的积木,在最后一个卷积层之后添加做回归的积木。

    为了利用前面训练好的参数,有两种搭积木的方法:

    1. 对训练好的参数进行固定,也就是前面的参数不再训练,一路做回归,一路做分类
    2. 也许对参数也进行学习的话会有更好的回归的结果,也就是将训练好的参数作为初始值,对前面部分的学习率调低,后面新的部分的学习率调高,再进行训练,得到一个新的完整的结构,分类(交叉熵损失)和回归(L2-loss)是分开的。

    思路二:

    这里写图片描述

    回归效果不太好,能不能提前给一些框来分类。

    分别用黑色的框来遍历,左上->右上->左下->右下,分类后会获得在不同位置上判断出来是猫的概率:0.5->0.75->0.6->0.8

    所以主体一定是靠近右边的,然后整合。

    这里写图片描述

    有四个红框,进行整合。

    这里写图片描述

    去掉全连接,改成1x1的卷积,计算共享,只有黄色的部分要计算,没有那么暴力。

    二、多目标物体识别

    如果图中有2个个体,框每滑到一个位置,判断是不是某个物体,

    这里写图片描述

    边缘策略,找到到底哪些位置可能是候选框,先用别的方法找到可能是一个物体的框。

    这里写图片描述

    选择性搜索:

    自顶向下的搜索,先用像素KNN的方式对周边的点做扩散,得到很细的区域分布,可以再进行扩张,得到不同粒度的图像分割区域。

    从上到下的过程:找到框把不同颜色的地方框出来。

    这里写图片描述

    对比:

    这里写图片描述

    R-CNN

    这里写图片描述

    R-CNN 思想:

    有一张图,可以从图中选出可能感兴趣的区域(ROI),每个框都经过CNN,得到该框中的特征,取第5个池化层的特征,用SVM做分类,确定是哪一类,利用Bbox回归来对框进行调整。

    Bbox regression:告诉你这个框怎么调整一下,可以更贴近物体的形状,也就是框可能太大,可以调小些,也是有参数的,需要训练,是一个独立的部分。

    RCNN不是end-to-end的模型,这个ConvNet可以直接拿VGG来用,就是抽取特征。

    改进:R-CNN太慢了

    2000个图像候选框,每个框的数据都要进行卷积特征抽取,很耗时,所以简化为Fast-rcnn。

    Fast-RCNN 思想:
    这里写图片描述
    ① 将候选框缩减

    对原图进行卷积神经网络特征抽取,得到了一个整图的特征图,在结果上抠出来和原来的框对应的位置,也就是将原图上的候选框映射到特征图上,抽取对应位置的特征。

    ② 将分类器变为神经网络,也就是接全连接层,完成分类和回归

    这里写图片描述

    实现:

    这里写图片描述

    原始图像3x800x600 -> 得到一个特征图,特征图上的某个点,是由原图的小块图像区域和卷积核卷积得到的,所以,特征图上的不同点,对应原图的不同小块儿。也就是原图的框应该是可以找到特征图对应的框。

    问题:圈出来的框的大小是不同的,经过pooling之后也是不同大小的,但是FC的神经元的输入和输出大小是固定的,所以FAST 提出了ROI pooling

    FAST RCNN中提出了ROI pooling:对所有的框下采样为相同的维度,之后再接神经元:

    这里写图片描述

    Faster-RCNN

    找候选图框很麻烦,可以让神经网络自己找图框。

    这里写图片描述

    这里写图片描述

    在大图上产出了一些特征图,在中心点找到不同大小的框,用候选框中的东西进行判别,得到n个得分,再进行判别。
    这里写图片描述

    NeuralStyle

    原始图片+风格图片=>带风格的图

    传统网络一直用Cross-entropy 或L2-loss,来评价两幅图在内容是的接近程度,所以作者思考有没有更好的损失函数,使得现在的问题性能有提升。

    发现了一个style-loss能够定义两幅图像的风格的差异,所以将L2-loss和style-loss来综合起来来进行融合。

    这里写图片描述

    一般情况利用CNN来学习权重w,而图像是x,所以可以固定w去调x使得损失最小。

    拿VGG网络,把网络固定住,调图像x,使得损失最小,让内容和猫最接近,让风格和下图更接近,所以定义两个loss,分别为内容的loss和风格的loss。

    这里写图片描述

    内容loss:原始图Fij,生成图Pij

    风格loss:评估了所有特征图(64x64x16)的depth(16)上,每两个特征图上进行了点乘,就有A1616=16×16个结果,即语法矩阵Gram matrix,对生成的语法矩阵和原始图像的语法矩阵做差值。

    将两部分loss合起来,α为内容损失的权重,β为风格损失的权重,α越大,越偏内容,然后最小化损失即可。

    展开全文
  •    记录 Tensorflow object detection API 物体识别 训练自己的模型   1、搭建环境  本例子,基于win10 64位 + Anaconda环境 安装和验证(自带例子)过程中会遇到缺失包及各种版本匹配问题(公司网络有些限制)...


       记录 Tensorflow object detection API 物体识别 训练自己的模型

    1、搭建环境

     本例子,基于win10 64位 + Anaconda环境

    安装和验证(自带例子)过程中会遇到缺失包及各种版本匹配问题(公司网络有些限制),如果想节省时间的,可以安装如下版本的

    Anaconda及相关包

      1、安装Anaconda,版本建议如下

    Anaconda3-5.2.0-Windows-x86_64.exe 自带的python 版本为Python 3.6.5

     2、TensorFlow 安装

    使用Anaconda自带的即可

     3、相关包,这几个包后面验证时需要安装,建议在anaconda官网 https://anaconda.org/ 上搜索,下载到本地安装,直接在线

    安装可能会不断的更新各种包,问题不断。

     如下:
     先下载几个包 https://anaconda.org/
     pydot-1.3.0-py36_1000.tar.bz2
     pydub-0.23.0-py_0.tar.bz2
      absl-py-0.7.0-py36_1000.tar.bz2
      protobuf-3.6.1-py36he025d50_1001.tar.bz2

     安装命令

    conda --use-local xxx


    2、搭建Tensorflow object detection API环境及验证

     1、下载 Tensorflow object detection API

    git库https://github.com/tensorflow/models 下载Windows版本

    下载完减压

    Protobuf 配置(上面已经安装此包)

    models\research\目录下打开命令行窗口,输入:

    protoc object_detection/protos/*.proto --python_out=.

     如果报错,进入object_detection/protos/录下,把.proto文件一个一个运行,每运行一个,文件夹下

    出现对应的.py的文件。比如protoc object_detection/protos/anchor_generator.proto --python_out=.

    会出现anchor_generator_pb2.py

     如下:

    在这里插入图片描述

    2、python环境变量设置

      ‘此电脑’-‘属性’- ‘高级系统设置’ -‘环境变量’-‘系统变量’ ‘PYTHONPATH’的中增加:

    models/research/ 及 models/research/slim 两个文件夹的完整路径

    在这里插入图片描述


    3、验证 测试API,在 models/research/ 文件夹下运行命令行: python object_detection/builders/model_builder_test.py 不报错就ok。

    3、测试自带案例

     1、配置jupyter notebook

    打开Anaconda Prompt, 输入jupyter notebook,会启动浏览器,并显示默认路径上的目录。

    这里可能找不到你模型models-master所在的目录,修改下jupyter notebook配置文件,路径改成包含jupyter notebook路径,

    比如,D:\AI\practice\deep\models-master, 那么可以改成如下,这样运行jupyter notebook浏览器看到目录为D:\AI\practice\deep

    修改默认路径方法,找到配置文件jupyter_notebook_config.py

    搜索关键字c.NotebookApp.notebook_dir,路径改成想要的目录

    c.NotebookApp.notebook_dir = ‘D:\AI\practice\deep’

     可能还不起作用,

    打开jupyter notebook属性,最后面改成实际目录

    E:\anaconda3\python.exe E:\anaconda3\cwp.py E:\anaconda3 E:\anaconda3\python.exe E:\anaconda3\Scripts
    jupyter-notebook-script.py D:\AI\practice\deep

    详细参考
    https://blog.csdn.net/yilulvxing/article/details/79744159

     2、 测试自带案例

    打开Anaconda Prompt, cd到models-master\research\object_detection目录下

    再输入jupyter notebook,浏览器打开的可能默认路径,一步一步选到object_detection目录下,点击打开

    object_detection_tutorial.ipynb

    运行:点击菜单 “Cell”->“Run All”

    会看到如下结果,也可以换成自己的图片试试

    到此Tensorflow object detection API 的环境搭建与测试已ok


    4、训练自己的模型

    4.1 生成训练和验证数据集

     1)本案采用的水杯识别,从公司办公座位拍了上百张水杯照片,当然网上很多物体的大量数据集,可自行选择下载并使用。

    得到的训练集和测试集,分别在\models-master\research\object_detection\test_images文件夹下创建train和test文件夹,把对应的

    数据集拷贝进去。如下:

    在这里插入图片描述
     2)标注物体

     使用labelImg标注问题非常方便,下载地址 https://tzutalin.github.io/labelImg/

     安装和使用可以参考这篇,这里不重复, https://cloud.tencent.com/developer/news/325876

     打开labelImg,点击open dir选择train目录,如下图,在这里插入图片描述

     接下里对每张图片中目标物体进行标注

    按W,框住目标问题,弹出物体类别,可以选择已有,也可以输入一个新的值(本案使用cup,缺省的类别中没有,所以第一个标注时

    新输入cup,后面的图片直接可以选择cup即),分类在data文件夹下predefined_classes.txt,也可以手动更改类别。

    在这里插入图片描述

     标注好图片中目标水杯后,点击save,会保存成图片名称一样的xml文件,内容大致如下:
    在这里插入图片描述

     标注完成第一张图片后,点击next image,标注下一个直到全部图片都标注完毕


     3)修改上面标注格式xml文件修改成TensorFlow的格式

     下载转化脚本, https://github.com/XiangGuo1992/Screen-Vehicle-Detection-using-Tensorflow-API

    下载完解压包,进入目录

    **第一步,**找到xml_to_csv.py 文件,修改dir和path为之前的train目录,如下,

    os.chdir(‘D:\AI\practice\deep\objectdetection\models-master\research\object_detection\test_images\train’)
    path = ‘D:\AI\practice\deep\objectdetection\models-master\research\object_detection\test_images\train’

    运行xml_to_csv.py,对应的目录下生成 cup_train.csv文件,如下
    在这里插入图片描述


    第二步 上一步生成的 cup_train.csv文件拷贝到models-master\research\object_detection\data文件夹下

    打开python generate_tfrecord.py,将对应的label改成自己的类别,路径改成

    models-master/research和models-master/research/object_detection

    修改类别:

    def class_text_to_int(row_label):

     if row_label == ‘cup’:

      return 1

     else:

      None

     修改路径为models-master/research和models-master/research/object_detection
    import sys

    sys.path.append(‘D:\AI\practice\deep\objectdetection\models-master\research’)
    os.chdir(‘D:\AI\practice\deep\objectdetection\models-master\research\object_detection’)

    运行:

     python generate_tfrecord.py --csv_input=data/cup_train.csv --output_path=data/cup_train.record

    运行后在data目录下产生cup_train.record文件,如下
    在这里插入图片描述
    修改第一步和第二步中的train改成test,生成cup_test.csv和cup_test.record

    第三步 在data创建一个*.pbtxt文件,本案为例cup.pbtxt,内容如下,类型和ID对应cup_train.record中保持一致。

    item {
      id: 1
      name: 'cup'
    }
    


    到此数据集已经准备,数据目录如下

    models-master/research/object_detection/test_images下

    在这里插入图片描述


    models-master/research/object_detection/test_images/data
    在这里插入图片描述


    4.2 模型配置


     上一步数据已经准备,下面开始准备模型

    4.2.1 下载模型

    下载模型,https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md

    本例使用ssd_mobilenet_v1_coco_2018_01_28,在ssd_mobilenet_v1_coco 右键另存为,保存成

    ssd_mobilenet_v1_coco_2018_01_28.tar.gz, 解压到object_detection下ssd_mobilenet_v1_coco_2018_01_28
    在这里插入图片描述


    4.2.1 配置模型

    修改配置文件,打开training目录下ssd_mobilenet_v1_coco.config文件,拉到最后,修改如下配置

     fine_tune_checkpoint: “object_detection/ssd_mobilenet_v1_coco_2018_01_28/model.ckpt” // ssd_mobilenet_v1_coco_2018_01_28对应下载的模型,填写上一步加压出来的目录

     from_detection_checkpoint: true

     num_steps: 200000
    }

     train_input_reader {

      label_map_path: “object_detection/data/cup.pbtxt” // 上一节生成的类型文件

      tf_record_input_reader {

        input_path: “object_detection/data/cup_train.record” // 上一节生成的训练record文件

     }
    }

    eval_config {

     num_examples: 8000

     max_evals: 10

     use_moving_averages: false
    }

    eval_input_reader {

     label_map_path: “object_detection/data/cup.pbtxt” // 上一节生成的类型文件

     shuffle: false

     num_readers: 1

     tf_record_input_reader {

    &emsp;&emsp;input_path: "object_detection/data/cup_test.record"// 上一节生成的验证record文件
    

     }
    }

    4.3 开始训练

    在models-master\research\object_detection目录下运行

    python object_detection/model_main.py
    –pipeline_config_path=object_detection/training/ssd_mobilenet_v1_coco.config
    –model_dir=object_detection/training
    –num_train_steps=50000
    –num_eval_steps=2000
    –alsologtostderr

    可以看到训练过程了:
    在这里插入图片描述

     补充,训练模型玩报错问题

    tensorflow.python.framework.errors_impl.NotFoundError: Failed to create a directory: object_detection/training\export\Servo\temp-b’1558174728’; No such file or directory

    解决方法

    anaconda3\Lib\site-packages\tensorflow\python\saved_model\builder_impl.py 中102行
    file_io.recursive_create_dir(self._export_dir)换成
    os.makedirs(compat.as_str(self._export_dir), exist_ok=True)



    展开全文
  • 物体识别:在深度学习时代的回顾

    千次阅读 2019-03-29 13:28:11
    我们最感兴趣的问题之一就是物体识别。 像许多其他计算机视觉问题一样,现在仍然没有明显“最佳”的方法来解决问题,这意味着仍有很大的改进空间。 在进入物体识别之前,让我们快速了解该领域中最常见的问题。 ...
  • unity AR3D物体识别

    千次阅读 2017-11-21 10:15:29
    上篇讲到了各种AR插件的一些对比 因为上个项目需求用到3D物体...1.先讲一下EasyAR的3D物体识别 这个平台的3D识别是需要你上传一个与现实物体一样的OBJ模型的格式 模型包括一个OBJ (.obj)文件以及相应的MTL (.
  • http://download.csdn.net/detail/wuzuyu365/9791574
  • 如何从一张图像正确识别出图片里的某个物体进行处理,具体需要什么算法,和过程,急求
  • RGBD物体识别(1)--开篇

    千次阅读 2016-03-25 12:45:32
    目标本文记录的RGBD物体识别,目标不是介绍现有的通用的物体识别技术,而是面向物流货物分拣领域的物体识别,旨在实现一个可以在限制条件下(实验室条件下)能够work的demo。 开发工具OpenCV PCL 系统框架简述1,...
  • 最近vuforia sdk支持3D物体识别之后非常兴奋,就想利用技术制作点识别的小项目,开始做了一个手表的识别,手表算是3D的物体根据官方文章,慢慢摸索写了一篇使用说明,算是对3D识别流程的认识。最近有一个3D模型识别...
  • 人类是如何识别一个物体的呢,当然要对面前的这个物体为何物要有一个概念,人类一生下来就开始通过视觉获取世间万物的信息,包括一种物体形状、颜色、成分等,以及通过学习认识到这种物体的其他信息比如物理的、化学...
  • Vuforia(高通)识别3D物体

    万次阅读 热门讨论 2018-05-24 16:27:23
    先纠正上一篇博客中的一个错误上一篇中说道Database...所以删除的操作如下:点击其中一个Target(例如:AR1)选择需要删除的Target点击Remove即可移除即可看到Img1已经被移除好了,开始进行识别3D物体这篇主要讲利用...
  • 话不多说,直接上干货 1.实现的效果: 2.使用步骤: ...(一)高通官网申请免费key值 ...特别说明,此处target分为图片,3d实体模型,以及立方体,柱状物,其中图片需要是24位RGB的png、jpg或者8位灰度图,大小不...
  • 十行Python代码搞定图片中的物体检测

    万次阅读 多人点赞 2018-07-08 15:14:33
    “Word is useless, show me the pic” -MR...我们可以看到,在这幅图中其实有三个“person”被识别出来,包括后面非常非常小的行人,还有一个“car”被识别出来,可以说模型能力基本达到了人眼的能力。现在就来介绍...
  • ![图片说明](https://img-ask.csdn.net/upload/201812/14/1544754511_708460.png) ![图片说明]... 怎么识别出每个图中的四个物体? 有什么好的算法或者思路吗
  • 基于Aforge的物体运动识别-入门篇

    万次阅读 热门讨论 2010-05-04 10:06:00
     最近看到越来越多人在做物体运动识别(例如:"第六感"中的指套),而且我最近也有点闲空,所以也来玩玩。。。。。大多数人都是用Opencv来做,那我就不做重复的工作了,换个别的开源类库~~~Aforge。 来自百度知道的...
  • 机器视觉识别物体应用案例

    千次阅读 2016-12-22 19:12:15
    机器视觉,是怎么识别周围物体与环境的,这里给出一个形象的案例加以说明全部的算法。 视觉识别,可以整体识别,也可以局部细节识别,可以从物体或环境的形状做视觉识别,也可以加入色彩的元素以更加细腻地刻画...
  • 1. 概述 本文针对OpenCV中的”SIFT”、”SURF”、”FAST” 对... 安装好opencv-2.4.10,VS2010,Web摄像头,要识别物体或场景 3. 打开文件,将OperatorType设置1,运行代码,提取感兴趣区域ROI while(1){...
  • 二维物体形状识别方法(一)

    万次阅读 2018-12-30 23:47:07
    物体识别是计算机视觉应用的一项基本任务。识别通常基于目标物体的灰度信息、颜色信息或形状信息。物体识别的目的就是要找到一个包含可以区分不同目标物体的有效信息的描述。由于要识别的物体是事先知道的,所以目标...
1 2 3 4 5 ... 20
收藏数 70,049
精华内容 28,019
关键字:

物体识别