当前位置: 首页 > news >正文

py怎么运行_Mac Tensorflow Faster R-CNN CPU实现环境配置及Demo运行

53903773c332ecd199878d2dbfbc201f.png

一. 环境准备:

Macbook pro 2016 python 2.7 Anaconda2

Code Source:

endernewton/tf-faster-rcnn​github.com
6f3a0291f0114eab179ebba4c880efae.png
  1. 创建环境:打开Terminal, 创建一个新环境,可随意命名,名称跟在--name后面,版本python 2.7
conda create --name TC python=2.7

2. 激活TC环境

conda activate -TC

此时Terminal命令行前面有TC标志

3. 安装所需要的库,pip或者conda install + 库名

pip install tensorflow
pip install easydict
pip install matplotlib
pip install cython
pip install opencv-python
pip install pillow

二. 修改配置,使适用于CPU

  1. 下载Github源码:想下载到哪里,就在Terminal中cd到那个位置,在下载
git clone https://github.com/endernewton/tf-faster-rcnn.git

2. 修改配置

a) 打开⁨ tf-faster-rcnn-master⁩ / ⁨lib⁩ / setup.py ,在这里设置CPU和GPU参数, 本文选用CPU运行。

注释第55行

# CUDA = locate_cuda()

注释第87行

# self.set_executable('compiler_so', CUDA['nvcc'])

注释第120-136行

# Extension('nms.gpu_nms',
    #     ['nms/nms_kernel.cu', 'nms/gpu_nms.pyx'],
    #     library_dirs=[CUDA['lib64']],
    #     libraries=['cudart'],
    #     language='c++',
    #     runtime_library_dirs=[CUDA['lib64']],
    #     # this syntax is specific to this build system
    #     # we're only going to use certain compiler args with nvcc and not with gcc
    #     # the implementation of this trick is in customize_compiler() below
    #     extra_compile_args={'gcc': ["-Wno-unused-function"],
    #                         'nvcc': ['-arch=sm_52',
    #                                  '--ptxas-options=-v',
    #                                  '-c',
    #                                  '--compiler-options',
    #                                  "'-fPIC'"]},
    #     include_dirs = [numpy_include, CUDA['include']]
    # )

b) 打开 ⁨tf-faster-rcnn-master⁩ / ⁨lib⁩ / model⁩ / config.py ,把269行__C.USE_GPU_NMS = True改为__C.USE_GPU_NMS = False

__C.USE_GPU_NMS = False

c) 打开tf-faster-rcnn-master⁩ / ⁨lib⁩ / model / nms_wrapper.py,注释掉12行

from model.config import cfg
# from nms.gpu_nms import gpu_nms
from nms.cpu_nms import cpu_nms

注释第20 21行

if dets.shape[0] == 0:
    return []
#if cfg.USE_GPU_NMS and not force_cpu:
    #return gpu_nms(dets, thresh, device_id=0)
else:
    return cpu_nms(dets, thresh)

三. 编译环境,安装数据库

  1. 在Terminal中cd到tf-faster-rcnn-master⁩ / ⁨lib目录下,运行以下命令编译环境:
make clean
make
cd ..

返回tf-faster-rcnn-master⁩主目录

2. 安装Python COCO API,使用COCO数据库,运行以下命令

cd data
git clone https://github.com/pdollar/coco.git
cd coco/PythonAPI
make
cd ../../..

四. 运行Demo并测试Pre-trained模型

  1. 模型:voc_0712_80k-110k.tgz

下载链接:

Google Drive ---

https://drive.google.com/open?id=0B1_fAEgxdnvJVjFjTFl5cFd5cEk​drive.google.com

百度云 ---

https://pan.baidu.com/s/1kWkF3fT​pan.baidu.com

下载完成后,解压得到voc_2007_trainval+voc_2012_trainval文件夹,将其移动到⁨tf-faster-rcnn-master⁩ / data下。

在Terminal中cd到⁨tf-faster-rcnn-master⁩ / data目录下,并创建pre-trained模型的soft link,运行以下命令:

NET=res101
TRAIN_IMDB=voc_2007_trainval+voc_2012_trainval
mkdir -p output/${NET}/${TRAIN_IMDB}

cd output/${NET}/${TRAIN_IMDB}
ln -s ../../../voc_2007_trainval+voc_2012_trainval ./default
cd ../../..

运行前三条命令,新建一个目录:tf-faster-rcnn/data/output/res101/voc_2007_trainval+voc_2012_trainval

运行第四条命令,Terminal进入voc_2007_trainval+voc_2012_trainval文件夹

运行第五条命令,产生一个文件名为default的快捷方式文件,打开会链接到四个模型文件

d6cce46557e93cc34bfda6da22bee964.png

运行最后一条命令,Terminal回到data目录下

2. 修改并运行Demo

打开demo.py, 修改第120行的路径:把刚刚data里的output文件夹拖入Terminal,复制你自己的完整路径并修改。

tfmodel = os.path.join('/Users/Desktop/tf-faster-rcnn/data/output', demonet, DATASETS[dataset][0], 'default',
                              NETS[demonet][0])

运行demo

../tools/demo.py

运行结果:

f9ea958e9892b385a2a889542e2ed760.png

预测结果图像(部分):

b6291239d3907a677fb9121a91c84492.png

acb93e0746dea4d6b3d2a8ff304aa5b4.png

fab4d9352ebe2f9493d992a9ecea3da3.png

34b710597664f12ae45cdcaf2c89e410.png

相关文章:

  • 一个数等于两个不同素数的乘机_【朝夕的ACM笔记】数论-反素数
  • spring是什么_Spring 源码第三弹!EntityResolver 是个什么鬼?
  • python界面开发webview_Python使用Pyqt5实现简易浏览器!非常实用!
  • 程序实例python_Python花式编程案例集锦(5)
  • python装饰器作用和功能_Python装饰器实现类Java注解功能
  • 树莓派无屏幕安装kali_树莓派制作魔镜屏幕旋转不正确的处理方法
  • 没有与参数列表匹配的重载函数_C++覆盖和重载的区别
  • python嵌入式系统开发_python能开发单片机吗
  • python根据excel生成报表_python提取Excel中的特定列生成新的表格
  • python显示数据长度_python 读取数据再写入,文件大小总会出现变差?
  • datagrid如何获取一行数据中的某个字段值_UI测试中,我们应该注意哪些?
  • python常考题_python 一个批量出考题,生成不同考卷的小例题
  • python简历项目经验在哪里找_Linux运维工程师简历项目经验
  • matlab函数编写_实验二 | M函数与M文件的编写与应用
  • docker 部署_docker自动化部署前端项目实战
  • Centos6.8 使用rpm安装mysql5.7
  • js
  • rabbitmq延迟消息示例
  • 聊聊hikari连接池的leakDetectionThreshold
  • 前端_面试
  • 前端面试题总结
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 实战|智能家居行业移动应用性能分析
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 再次简单明了总结flex布局,一看就懂...
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #HarmonyOS:Web组件的使用
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • (1) caustics\
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (接口自动化)Python3操作MySQL数据库
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)创业的注意事项
  • *p++,*(p++),*++p,(*p)++区别?
  • .gitignore文件---让git自动忽略指定文件
  • .Net IOC框架入门之一 Unity
  • .NET 的程序集加载上下文
  • .NET 使用 XPath 来读写 XML 文件
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @PreAuthorize注解
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • [ solr入门 ] - 利用solrJ进行检索
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • []我的函数库
  • [<死锁专题>]
  • [BZOJ1053][HAOI2007]反素数ant
  • [BZOJ3223]文艺平衡树