caffe fastercbnnahdemo
https://download.csdn.net/download/zefan7564/10148990
https://blog.csdn.net/qq_37124237/article/details/81087505
目标检测 Faster R-CNN运行及实时性DEMO测试
- #!/usr/bin/env python
- # --------------------------------------------------------
- # Faster R-CNN
- # Copyright (c) 2015 Microsoft
- # Licensed under The MIT License [see LICENSE for details]
- # Written by Ross Girshick
- # --------------------------------------------------------
- """
- 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
- CLASSES = ('__background__',
- 'ship')
- NETS = {'vgg16': ('VGG16',
- 'VGG16_faster_rcnn_final.caffemodel'),
- 'zf': ('ZF',
- 'ZF_faster_rcnn_final.caffemodel'),
- 'wyx': ('wyx','vgg_cnn_m_1024_faster_rcnn_iter_1000.caffemodel')}
- 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 vis_detections_video(im, class_name, dets, thresh=0.5):
- """Draw detected bounding boxes."""
- global lastColor,frameRate
- inds = np.where(dets[:, -1] >= thresh)[0]
- if len(inds) == 0:
- return im
- for i in inds:
- bbox = dets[i, :4]
- score = dets[i, -1]
- cv2.rectangle(im,(bbox[0],bbox[1]),(bbox[2],bbox[3]),(0,0,255),2)
- cv2.rectangle(im,(int(bbox[0]),int(bbox[1]-20)),(int(bbox[0]+200),int(bbox[1])),(10,10,10),-1)
- cv2.putText(im,'{:s} {:.3f}'.format(class_name, score),(int(bbox[0]),int(bbox[1]-2)),cv2.FONT_HERSHEY_SIMPLEX,.75,(255,255,255))#,cv2.CV_AA)
- return im
- def demo(net, im):
- """Detect object classes in an image using pre-computed object proposals."""
- global frameRate
- # Load the demo image
- #im_file = os.path.join(cfg.DATA_DIR, 'demo', image_name)
- #im = cv2.imread(im_file)
- # 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])
- frameRate = 1.0/timer.total_time
- print "fps: " + str(frameRate)
- # Visualize detections for each class
- CONF_THRESH = 0.8
- NMS_THRESH = 0.3
- for cls_ind, cls in enumerate(CLASSES[1:]):
- cls_ind += 1 # because we skipped background
- cls_boxes = boxes[:, 4*cls_ind:4*(cls_ind + 1)]
- 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, :]
- vis_detections_video(im, cls, dets, thresh=CONF_THRESH)
- cv2.putText(im,'{:s} {:.2f}'.format("FPS:", frameRate),(1750,50),cv2.FONT_HERSHEY_SIMPLEX,1,(0,0,255))
- cv2.imshow(videoFilePath.split('/')[len(videoFilePath.split('/'))-1],im)
- cv2.waitKey(20)
- 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 [vgg16]',
- choices=NETS.keys(), default='vgg16')
- 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],
- # 'faster_rcnn_alt_opt', 'faster_rcnn_test.pt')
- prototxt = '/home/yexin/py-faster-rcnn/models/pascal_voc/VGG_CNN_M_1024/faster_rcnn_end2end/test.prototxt'
- # print 'see prototxt path{}'.format(prototxt)
- # caffemodel = os.path.join(cfg.DATA_DIR, 'faster_rcnn_models',
- # NETS[args.demo_net][1])
- caffemodel = '/home/yexin/py-faster-rcnn/output/faster_rcnn_end2end/voc_2007_trainval/vgg_cnn_m_1024_faster_rcnn_iter_100.caffemodel'
- # print '\n\nok'
- if not os.path.isfile(caffemodel):
- raise IOError(('{:s} not found.\nDid you run ./data/script/'
- 'fetch_faster_rcnn_models.sh?').format(caffemodel))
- print '\n\nok'
- 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)
- videoFilePath = '/home/yexin/py-faster-rcnn/data/demo/test_1-3.mp4'
- videoCapture = cv2.VideoCapture(videoFilePath)
- #success, im = videoCapture.read()
- while True :
- success, im = videoCapture.read()
- demo(net, im)
- if cv2.waitKey(10) & 0xFF == ord('q'):
- break
- videoCapture.release()
- cv2.destroyAllWindows()
caffe fastercbnnahdemo的更多相关文章
- 基于window7+caffe实现图像艺术风格转换style-transfer
这个是在去年微博里面非常流行的,在git_hub上的代码是https://github.com/fzliu/style-transfer 比如这是梵高的画 这是你自己的照片 然后你想生成这样 怎么实现 ...
- caffe的python接口学习(7):绘制loss和accuracy曲线
使用python接口来运行caffe程序,主要的原因是python非常容易可视化.所以不推荐大家在命令行下面运行python程序.如果非要在命令行下面运行,还不如直接用 c++算了. 推荐使用jupy ...
- 基于Caffe的Large Margin Softmax Loss的实现(中)
小喵的唠叨话:前一篇博客,我们做完了L-Softmax的准备工作.而这一章,我们开始进行前馈的研究. 小喵博客: http://miaoerduo.com 博客原文: http://www.miao ...
- 基于Caffe的Large Margin Softmax Loss的实现(上)
小喵的唠叨话:在写完上一次的博客之后,已经过去了2个月的时间,小喵在此期间,做了大量的实验工作,最终在使用的DeepID2的方法之后,取得了很不错的结果.这次呢,主要讲述一个比较新的论文中的方法,L- ...
- 基于Caffe的DeepID2实现(下)
小喵的唠叨话:这次的博客,真心累伤了小喵的心.但考虑到知识需要巩固和分享,小喵决定这次把剩下的内容都写完. 小喵的博客:http://www.miaoerduo.com 博客原文: http://ww ...
- 基于Caffe的DeepID2实现(中)
小喵的唠叨话:我们在上一篇博客里面,介绍了Caffe的Data层的编写.有了Data层,下一步则是如何去使用生成好的训练数据.也就是这一篇的内容. 小喵的博客:http://www.miaoerduo ...
- 基于Caffe的DeepID2实现(上)
小喵的唠叨话:小喵最近在做人脸识别的工作,打算将汤晓鸥前辈的DeepID,DeepID2等算法进行实验和复现.DeepID的方法最简单,而DeepID2的实现却略微复杂,并且互联网上也没有比较好的资源 ...
- 基于英特尔® 至强™ 处理器 E5 产品家族的多节点分布式内存系统上的 Caffe* 培训
原文链接 深度神经网络 (DNN) 培训属于计算密集型项目,需要在现代计算平台上花费数日或数周的时间方可完成. 在最近的一篇文章<基于英特尔® 至强™ E5 产品家族的单节点 Caffe 评分和 ...
- 基于英特尔® 至强 E5 系列处理器的单节点 Caffe 评分和训练
原文链接 在互联网搜索引擎和医疗成像等诸多领域,深度神经网络 (DNN) 应用的重要性正在不断提升. Pradeep Dubey 在其博文中概述了英特尔® 架构机器学习愿景. 英特尔正在实现 Prad ...
随机推荐
- NO11 SSH故障排查思路和netstat命令
本章知识相关考试:1.企业场景面试题:Linux系统如何优化?2.企业场景面试题:SSH服务连不上,如何排查?记住回答技巧: 1 ping 2 telnet 客户端ssh工具:SecureCRT,x ...
- CentOS 6.x 重置root 密码
1.重启,进入启动界面,快速按e,进入GNU GRUB界面. 2.选择第二项,按e,进行编辑. 3.在末尾输入1或single,回车,返回上一界面,还是选第二项,按b,进入单用户模式. 此时输入命令 ...
- Maven项目工程目录
maven工程目录规范: src/main/java 存放项目的.java文件 src/main/resources 存放项目的资源文件,如spring.hibernate配置文件 src/t ...
- 128-PHP类继承extends
<?php class father{ //定义father类 //定义public描述的成员属性和方法 public $eyes=2; public $ears=2; public funct ...
- 071-PHP数组合并
<?php $arr1=array('a','b','c'); //定义一个数组 echo '数组$arr1的信息:<br />'; print_r($arr1); //输出数组信息 ...
- Wdcp升级Php5.3成功
在lanmp/wdcp/wdOS的当前版本中,默认的php都是用到5.2.17的版本如需要升级到php5.3的,可使用如下脚本升级(注:此升级无安全漏洞等原因,只为某些追求高版本或应用需求需要高版本, ...
- ELK 介绍
章节 ELK 介绍 ELK 安装Elasticsearch ELK 安装Kibana ELK 安装Beat ELK 安装Logstash ELK是什么? ELK是3个开源产品的组合: Elastics ...
- 前端01 HTML5
01工具使用 Sublime插件安装和使用 2Sublime插件安装和使用.pcf 3Sublime插件安装与卸载.pcf 4Sublime安装markdown插件.pcf 使用typora生成pdf ...
- ZOJ - 3961 Let's Chat(区间相交)
题意:给定一个长度为n的序列,A和B两人分别给定一些按递增顺序排列的区间,区间个数分别为x和y,问被A和B同时给定的区间中长度为m的子区间个数. 分析: 1.1 ≤ n ≤ 109,而1 ≤x, y ...
- python 对axis的理解
首先请看一下官方帮助的解释: 轴用来为超过一维的数组定义的属性,二维数据拥有两个轴:第0轴沿着行的垂直往下,第1轴沿着列的方向水平延伸. 注意看,官方对于0和1的解释是轴,也就是坐标轴.而坐标轴是有 ...