深さ学習pythonのFaster-rcnn検出結果(detections.pklとclass_pr.pkl)を用いて原図にboxを描く
2981 ワード
class_pr.pklはリコール率(Recall)、精度(Precision)、平均精度(Average_precision(AP))を含み、Spyerに次のコードを打ち込むと開き、変数バーで具体的な数値を表示します(本稿では1種類のターゲットのみを検出します).
次はdetectionsを使用する.pklフレーム、リストが含まれています.リストには2つのリストが含まれています.座標値は2番目のリストにあります.
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'))