原来的功能只是单张图片并且按类显示出框,修改后批量测试并保存,所有类的检测结果绘制在一张图片上,且同时将groundtrue一起绘制出来。
原来的代码:将检测图片复制n次,在不同图片上显示不同类的检测结果。比如苹果和梨子,分别在两张图显示。
第一步修改:在检测原图上,显示所有类的检测结果。比如检测到梨子和苹果,都显示在一张图片里。
第二步修改:批量测试。写了一个txt文件的读取,直接读取我们做的voc数据集中Main文件下存放图像名字的txt文件,然后按里面的图像名字一个个输入到网络进行检测。最后写了一个保存函数,将结果一个个保存。
第三步修改:将我们打的标签一并显示在检测图片上,来直观的看检测到底对不对,框的偏移怎么样。写了一段xml解析代码,将图片名字对应的xml解析,读取里面的类别和坐标,然后用绘图函数画出来。
#!/usr/bin/env python
# --------------------------------------------------------
# Tensorflow Faster R-CNN
# Licensed under The MIT License [see LICENSE for details]
# Written by Xinlei Chen, based on code from Ross Girshick
#qhy
#2018.10.26
# --------------------------------------------------------
"""
Demo script showing detections in sample images.
See README.md for installation instructions before running.
"""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import xml.etree.ElementTree as ET
import _init_paths
from model.config import cfg
from model.test import im_detect
from model.nms_wrapper import nms
from utils.timer import Timer
import tensorflow as tf
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
import os, cv2
import argparse
from nets.vgg16 import vgg16
from nets.resnet_v1 import resnetv1
CLASSES = ('__background__', # always index 0
'normal bolt','normal bolt-2','normal bolt-3','nut losing','nut losing-2','nut directly loosening','pin closing','visible pin losing','visible pin losing-2',&#