您的位置:首页 > 运维架构 > Shell

Kitti数据集进行目标检测批处理和shell的入门

2017-04-05 22:20 609 查看
KITTI数据集的Python的批处理

shell的入门知识

KITTI数据集的Python的批处理

#!/usr/bin/env python

# --------------------------------------------------------
# R-FCN
# Copyright (c) 2016 Yuwen Xiong
# Licensed under The MIT License [see LICENSE for details]
# Written by Yuwen Xiong
# --------------------------------------------------------

"""
Demo script showing detections in sample images.

See README.md for installation instructions before running.
"""

import _init_paths
from fast_rcnn.config import cfg
from fast_rcnn.test import im_detect
from fast_rcnn.nms_wrapper import nms
from utils.timer import Timer
import matplotlib.pyplot as plt
import numpy as np
import scipy.io as sio
import caffe, os, sys, cv2
import argparse
import json
import pickle

CLASSES = ('__background__',
'1', '2', '3', '20')

NETS = {'ResNet-101': ('ResNet-101',
'resnet101_rfcn_final.caffemodel'),
'ResNet-50': ('ResNet-50',
'resnet50_rfcn_ohem_iter_100000.caffemodel')}

#data = dict()

def vis_detections(im, class_name, dets, thresh=0.5):
"""Draw detected bounding boxes."""
inds = np.where(dets[:, -1] >= thresh)[0]
if len(inds) == 0:
return

im = im[:, :, (2, 1, 0)]
fig, ax = plt.subplots(figsize=(12, 12))
ax.imshow(im, aspect='equal')
for i in inds:
bbox = dets[i, :4]
score = dets[i, -1]

ax.add_patch(
plt.Rectangle((bbox[0], bbox[1]),
bbox[2] - bbox[0],
bbox[3] - bbox[1], fill=False,
edgecolor='red', linewidth=3.5)
)
ax.text(bbox[0], bbox[1] - 2,
'{:s} {:.3f}'.format(class_name, score),
bbox=dict(facecolor='blue', alpha=0.5),
fontsize=14, color='white')

ax.set_title(('{} detections with '
'p({} | box) >= {:.1f}').format(class_name, class_name,
thresh),
fontsize=14)
plt.axis('off')
plt.tight_layout()
plt.draw()

def demo(net, image_name, ind, direc, real_seq):
"""Detect object classes in an image using pre-computed object proposals."""
# content = []
# Load the demo image
im_file = os.path.join(real_seq, image_name)
im = cv2.imread(im_file)
ind_file = 'sequence_%02d' % ind
dir_file = ind_file + ('/image_%d' % direc)
# Detect all object classes and regress object bounds
timer = Timer()
timer.tic()
scores, boxes = im_detect(net, im)
timer.toc()
print ('Detection took {:.3f}s for '
'{:d} object proposals').format(timer.total_time, boxes.shape[0])

# Visualize detections for each class
CONF_THRESH = 0.5 #0.75
NMS_THRESH = 0.35
exist_cls = 0
for cls_ind, cls in enumerate(CLASSES[1:]):
cls_ind += 1 # because we skipped background
cls_boxes = boxes[:, 4:8]
cls_scores = scores[:, cls_ind]
dets = np.hstack((cls_boxes,
cls_scores[:, np.newaxis])).astype(np.float32)
keep = nms(dets, NMS_THRESH)
dets = dets[keep, :]
thresh = CONF_THRESH

img_name = image_name.replace('.png', '.txt')
inds = np.where(dets[:, -1] >= thresh)[0]
if len(inds) != 0:
if int(cls) < 20:
exist_cls = 1
for i in inds:
# img_name = image_name.replace('.jpg', '.txt')
if os.path.exists(ind_file) == False:
os.mkdir(ind_file)
if os.path.exists(dir_file) == False:
os.mkdir(dir_file)
else:
if os.path.exists(dir_file) == False:
os.mkdir(dir_file)
tmp_fid = file(os.path.join(dir_file, img_name), 'a+')
bbox = dets[i, :4]
score = dets[i, -1]
if int(cls) == 1:
tmp_fid.write('1 -1 -1 -10 ')
elif int(cls) == 2:
tmp_fid.write('2 -1 -1 -10 ')
else:
tmp_fid.write('3 -1 -1 -10 ')

tmp_fid.write(str("%.2f"%float(bbox[0])) +  ' ' +  str("%.2f"%float(bbox[1])) + ' ' +  str("%.2f"%float(bbox[2])) +  ' ' +  str("%.2f"%float(bbox[3])) + ' -1 -1 -1 -1000 -1000 -1000 -10 ' +  str("%.2f"%float(score)) + ' \n')
tmp_fid.close()
if exist_cls == 0:
if os.path.exists(ind_file) == False:
os.mkdir(ind_file)
if os.path.exists(dir_file) == False:
os.mkdir(dir_file)
else:
if os.path.exists(dir_file) == False:
os.mkdir(dir_file)
tmp_fid = file(os.path.join(dir_file, img_name), 'a+')
tmp_fid.close()
print "There is backgroung"

def parse_args():
"""Parse input arguments."""
parser = argparse.ArgumentParser(description='Faster R-CNN demo')
parser.add_argument('--gpu', dest='gpu_id', help='GPU device id to use [0]',
default=0, type=int)
parser.add_argument('--cpu', dest='cpu_mode',
help='Use CPU mode (overrides --gpu)',
action='store_true')
parser.add_argument('--net', dest='demo_net', help='Network to use [ResNet-101]',
choices=NETS.keys(), default='ResNet-50')

args = parser.parse_args()

return args

if __name__ == '__main__':
cfg.TEST.HAS_RPN = True  # Use RPN for proposals

args = parse_args()

prototxt = os.path.join(cfg.MODELS_DIR, NETS[args.demo_net][0],
'rfcn_end2end', 'test_agnostic.prototxt')
caffemodel = os.path.join(cfg.DATA_DIR, 'rfcn_models',
NETS[args.demo_net][1])

if not os.path.isfile(caffemodel):
raise IOError(('{:s} not found.\n').format(caffemodel))

if args.cpu_mode:
caffe.set_mode_cpu()
else:
caffe.set_mode_gpu()
caffe.set_device(args.gpu_id)
cfg.GPU_ID = args.gpu_id
net = caffe.Net(prototxt, caffemodel, caffe.TEST)

print '\n\nLoaded network {:s}'.format(caffemodel)

# Warmup on a dummy image
im = 128 * np.ones((300, 500, 3), dtype=np.uint8)
for i in xrange(2):
_, _= im_detect(net, im)
rt = '/home/YuChen/data-set/dataset/sequences/'

# process 22 sequences
for ind in range(22):
new_seq = rt + ('%02d/' %ind)
for direc in range(2):
real_seq = new_seq + ('image_%d/' %(direc+2))
print real_seq

im_names = os.listdir(real_seq)
for im_name in im_names:
print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
print im_name
demo(net, im_name, ind, direc, real_seq)


shell的入门知识

在Windows下,可以使用powershell或者是用命令行运行.bat文件,但是在ubuntu下呢?那就是SHELL了。在很多的项目下,我们进行编译的时候会看到build.sh,其实这个东西就是使用shell进行编译的。

shell的入门可以看【1】【2】【3】,在对某个程序进行批处理的时候,其实里面的命令行可以写成:

./exec argc


参考链接:

【1】Shell编程基础:http://wiki.ubuntu.org.cn/Shell%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80

【2】BASH Manual:https://www.gnu.org/software/bash/manual/

【3】Bash Guide:http://guide.bash.academy/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  kitti shell python ubuntu