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

来源:互联网 发布:提高英语水平的软件 编辑:程序博客网 时间:2024/06/06 02:11

  • 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_pathsfrom fast_rcnn.config import cfgfrom fast_rcnn.test import im_detectfrom fast_rcnn.nms_wrapper import nmsfrom utils.timer import Timerimport matplotlib.pyplot as pltimport numpy as npimport scipy.io as sioimport caffe, os, sys, cv2import argparseimport jsonimport pickleCLASSES = ('__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 argsif __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/

0 0
原创粉丝点击