转载请注明:http://blog.csdn.net/c602273091/article/details/53945485
安装caffe
可以看我之前的博客:
安装caffe
安装faster rcnn:
faster rcnn
数据预处理
进行数据标注:
https://github.com/saicoco/object_labelImg
我这里主要是使用python对xml进行处理。
生产xml的代码:
# -*- coding:utf-8 -*-
__author__ = "Yu Chen"
import xml.dom
import xml.dom.minidom
import os
import json
import scipy
import numpy
import matplotlib
from PIL import Image
_ANNOTATION_SAVE_FOLDER_ = 'Annotations'
# xml文件规范定义
_INDENT = '\t'#' ' * 4
_NEW_LINE = '\n'
_FOLDER_NODE = 'VOC2007'
_ROOT_NODE = 'annotation'
_DATABASE_NAME = 'INRIA'
_ANNOTATION = 'PASCAL VOC2007'
_AUTHOR = 'Yu Chen'
_SEGMENTED = '0'
_DIFFICULT = '0'
_TRUNCATED = '0'
_POSE = 'Unspecified'
_IMAGE_HEIGHT = 360
_IMAGE_WIDTH = 640
_IMAGE_CHANNEL = 3
# 封装创建节点的过程
def createElementNode(doc, tag, attr):
# 创建一个元素节点
element_node = doc.createElement(tag)
# 创建一个文本节点
text_node = doc.createTextNode(attr)
# 将文本节点作为元素节点的子节点
element_node.appendChild(text_node)
return element_node
# 封装添加一个子节点的过程
def createChildNode(doc, tag, attr, parent_node):
child_node = createElementNode(doc, tag, attr)
parent_node.appendChild(child_node)
# object节点比较特殊
def createObjectNode(doc, attrs):
object_node = doc.createElement('object')
createChildNode(doc, 'name', attrs['classification'], object_node)
createChildNode(doc, 'pose', _POSE, object_node)
createChildNode(doc, 'truncated', _TRUNCATED, object_node)
createChildNode(doc, 'difficult', _DIFFICULT, object_node)
bndbox_node = doc.createElement('bndbox')
createChildNode(doc, 'xmin', attrs['xmin'], bndbox_node)
createChildNode(doc, 'ymin', attrs['ymin'], bndbox_node)
createChildNode(doc, 'xmax', attrs['xmax'], bndbox_node)
createChildNode(doc,