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
- Kitti数据集进行目标检测批处理和shell的入门
- 目标检测中KITTI数据集的简介与使用
- KITTI数据集转为VOC和训练
- 有关KITTI数据集
- KITTI数据集测试
- KITTI数据集测试
- KITTI数据集测试
- KITTI数据集测试
- SSD-Tensorflow:利用KITTI数据集进行训练
- 目标检测数据集
- KITTI数据集格式说明
- 在cuda8.0+faster-rcnn(python版)下使用kitti数据集进行训练
- 数据集:KITTI数据集分析
- 使用OpenCV进行目标检测的注意事项
- caffe-ssd训练kitti、lisa数据集
- KITTI数据集简介与使用
- KITTI数据集简介与使用
- KITTI数据集转ros_msg(odometry)
- 跳台阶
- Redis的安装和基本使用笔记
- Ubuntu16.10下安装Hadoophadoop-2.8.0(单机模式)
- 二分查找以及位图法
- 采用归并排序思想解决逆序对数问题
- Kitti数据集进行目标检测批处理和shell的入门
- 对象包装器和自动装箱
- JavaWeb前端知识-JavaScript基础
- react native codepush热更新解决成功更新
- Android 利用多线程从网络下载文件
- Hdu-1016-Prime Ring Problem [dfs]
- Macromedia Dreamweaver 8—页面三剑客之一与我的故事
- boolan——c++学习笔记之设计模式一
- js中的DOM