您好,欢迎来到年旅网。
搜索
您的当前位置:首页Tensorflow object detection API 搭建自己的目标识别模型

Tensorflow object detection API 搭建自己的目标识别模型

来源:年旅网

在中 我们搭建了目标识别的环境并且测试了自带的案例
本期我们将使用自己的图片进行相应的目标识别

本次我们使用Demo里面的 mobilenet_ssd_v1_2017_11_17 进行识别作为预训练模型
github上也有对应官方的各种

1、使用labelImg打标签
链接:
提取码:xawz
解压后直接双击 labelImg.exe 即可
选择自己要打标签的区域

CTRL+S另存为xml文件,文件名默认为图片名称

2、配置文件
在object_detection 文件夹中新建raccoon_images文件夹,再在raccoon_images文件夹中新建test和train文件夹
在raccoon_images新建xml_to_csv.py和generate_tfrecord.py
xml_to_csv.py内容:

import os
import glob
import pandas as pd
import xml.etree.ElementTree as ET

os.chdir(r'D:\Develop\tensorflow\models\research\object_detection\images\train')  # 修改为自己的读取、输出路径
path =r'D:\Develop\tensorflow\models\research\object_detection\images\train'


def xml_to_csv(path):
    xml_list = []
    for xml_file in glob.glob(path + '/*.xml'):
        tree = ET.parse(xml_file)
        root = tree.getroot()
        for member in root.findall('object'):
            value = (root.find('filename').text,
                     int(root.find('size')[0].text),
                     int(root.find('size')[1].text),
                     member[0].text,
                     int(member[4][0].text),
                     int(member[4][1].text),
                     int(member[4][2].text),
                     int(member[4][3].text)
                     )
            xml_list.append(value)
    column_name = ['filename', 'width', 'height', 'class', 'xmin', 'ymin', 'xmax', 'ymax']
    xml_df = pd.DataFrame(xml_list, columns=column_name)
    return xml_df


def main():
    image_path = path
    xml_df = xml_to_csv(image_path)
    xml_df.to_csv('raccoon_train.csv', index=None)  #修改输出后csv文件的文件名,test和train要对应
    print('Successfully converted xml to csv.')


main()

generate_tfrecord.py内容:

import os
import io
import pandas as pd
import tensorflow as tf

from PIL import Image
from object_detection.utils import dataset_util
from collections import namedtuple, OrderedDict

os.chdir(r'D:\Develop\TensorFlow\models\research\object_detection\hulingyu_images')
# 修改为自己的img路径,之后会自动寻找test及train文件夹

flags = tf.app.flags
flags.DEFINE_string('csv_input', '', 'Path to the CSV input')
flags.DEFINE_string('output_path', '', 'Path to output TFRecord')
FLAGS = flags.FLAGS


# TO-DO replace this with label map
# 注意将对应的label改成自己的类别!!!!!!!!!!

def class_text_to_int(row_label):

    if row_label == 'hulingyu': #修改为自己的类别
        return 1
    else:
        return None

def split(df, group):
    data = namedtuple('data', ['filename', 'object'])
    gb = df.groupby(group)
    return [data(filename, gb.get_group(x)) for filename, x in zip(gb.groups.keys(), gb.groups)]

def create_tf_example(group, path):
    

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务