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 ...
随机推荐
- spark源码单步跟踪阅读-从毛片说起
想当年读大学时,那时毛片还叫毛片,现在有文明的叫法了,叫小电影或者爱情动作片.那时宿舍有位大神,喜欢看各种毛片,当我们纠结于毛片上的马赛克时,大神大手一挥说道:这算啥,阅尽天下毛片,心中自然无码!突然 ...
- UVA - 10129 Play on Words(欧拉回路)
题意:将n个单词排成一个序列,保证相邻单词相邻处字母相同. 分析:每个单词看做一条有向边,字母为点,并查集看图是否连通,因为是有向图,所以最多只能有两个点入度不等于出度,且这两个点一个入度比出度大1, ...
- c++数据结构排序
#include<stdio.h> #include<stdlib.h> #include<time.h> typedef int ElemType; typede ...
- InvalidOperationException: Cannot create a DbSet for 'IdentityUserClaim<string>' because this type is not included in the model for the context.
An unhandled exception occurred while processing the request. InvalidOperationException: Cannot crea ...
- Windows平台整合SpringBoot+KAFKA__第3部分_代码部分(结束)
重要的地方说下,算是给自己提醒,也给阅读者凑合着看看吧: (1)序列化.反序列化: 注意看这个文章 https://www.jianshu.com/p/5da86afed228 很多网上的例子都是 推 ...
- 054-for循环
<?php for($i=1;$i<=5;$i++){ echo "$i<br />"; //循环体 } ?>
- plsql和navicat连接远程oracle(易错点)
plsql和navicat连接远程oracle,只需要安装oracle客户端即可.注意此处是oracle客户端(Instant Client),并不是oracle数据库. oracle客户端下载地址: ...
- XPath--快速获取XML数据的节点或属性
转载自 XPath可以快速定位到Xml中的节点或者属性.XPath语法很简单,但是强大够用,它也是使用xslt的基础知识.示例Xml: <?xml version="1.0" ...
- C#不显示在任务栏
在我用c#写一些小程序是总是希望,程序窗体不在任务栏上显示程序的窗体,c# Form提供了一个 属性值可以很好的解决这个问题 这个属性就是 ShowInTaskbar 在微软的官方声明格式为: pub ...
- Python 内置类型 dict, list,线程安全吗
近段时间发现一个 Python 连接数据库的连接是线程不安全的,结果惹得我哪哪儿都怀疑变量的多线程是否安全的问题,今天终于找到了正确答案,那就是 Python 内置类型 dict,list ,tupl ...