深さ学習pythonのFaster-rcnn検出結果(detections.pklとclass_pr.pkl)を用いて原図にboxを描く

2981 ワード

class_pr.pklはリコール率(Recall)、精度(Precision)、平均精度(Average_precision(AP))を含み、Spyerに次のコードを打ち込むと開き、変数バーで具体的な数値を表示します(本稿では1種類のターゲットのみを検出します).
import cPickle as pickle  
f = open('ship_pr.pkl')  
info = pickle.load(f)  

次はdetectionsを使用する.pklフレーム、リストが含まれています.リストには2つのリストが含まれています.座標値は2番目のリストにあります.
import os
import os.path
import numpy as np
import xml.etree.ElementTree as xmlET
from PIL import Image, ImageDraw
import cPickle as pickle 

f = open('ship_pr.pkl')  
ship_pr = pickle.load(f) 

test_file = 'test.txt'
file_path_img = 'JPEGImages'
save_file_path = 'pkl/results'

with open(test_file) as f:
    image_index = [x.strip() for x in f.readlines()]

f = open('detections.pkl')  
info = pickle.load(f)


dets = info[1]

num = 0
for idx in xrange(len(dets)):
    if len(dets[idx]) == 0:
        continue
    img = Image.open(os.path.join(file_path_img, image_index[idx] + '.jpg')) 
    draw = ImageDraw.Draw(img)
    for i in xrange(len(dets[idx])):
        box = dets[idx][i]
        draw.rectangle([int(np.round(float(box[0]))), int(np.round(float(box[1]))), 
                    int(np.round(float(box[2]))), int(np.round(float(box[3])))], outline=(255, 0, 0))
    img.save(os.path.join(save_file_path, image_index[idx] + '.jpg'))