ubuntu_environment_config.md

thead > tr > th {
text-align: left;
border-bottom: 1px solid;
}

table > thead > tr > th,
table > thead > tr > td,
table > tbody > tr > th,
table > tbody > tr > td {
padding: 5px 10px;
}

table > tbody > tr + tr > td {
border-top: 1px solid;
}

blockquote {
margin: 0 7px 0 5px;
padding: 0 16px 0 10px;
border-left: 5px solid;
}

code {
font-family: Menlo, Monaco, Consolas, "Droid Sans Mono", "Courier New", monospace, "Droid Sans Fallback";
font-size: 14px;
line-height: 19px;
}

body.wordWrap pre {
white-space: pre-wrap;
}

.mac code {
font-size: 12px;
line-height: 18px;
}

pre:not(.hljs),
pre.hljs code > div {
padding: 16px;
border-radius: 3px;
overflow: auto;
}

/** Theming */

.vscode-light,
.vscode-light pre code {
color: rgb(30, 30, 30);
}

.vscode-dark,
.vscode-dark pre code {
color: #DDD;
}

.vscode-high-contrast,
.vscode-high-contrast pre code {
color: white;
}

.vscode-light code {
color: #A31515;
}

.vscode-dark code {
color: #D7BA7D;
}

.vscode-light pre:not(.hljs),
.vscode-light code > div {
background-color: rgba(220, 220, 220, 0.4);
}

.vscode-dark pre:not(.hljs),
.vscode-dark code > div {
background-color: rgba(10, 10, 10, 0.4);
}

.vscode-high-contrast pre:not(.hljs),
.vscode-high-contrast code > div {
background-color: rgb(0, 0, 0);
}

.vscode-high-contrast h1 {
border-color: rgb(0, 0, 0);
}

.vscode-light table > thead > tr > th {
border-color: rgba(0, 0, 0, 0.69);
}

.vscode-dark table > thead > tr > th {
border-color: rgba(255, 255, 255, 0.69);
}

.vscode-light h1,
.vscode-light hr,
.vscode-light table > tbody > tr + tr > td {
border-color: rgba(0, 0, 0, 0.18);
}

.vscode-dark h1,
.vscode-dark hr,
.vscode-dark table > tbody > tr + tr > td {
border-color: rgba(255, 255, 255, 0.18);
}

.vscode-light blockquote,
.vscode-dark blockquote {
background: rgba(127, 127, 127, 0.1);
border-color: rgba(0, 122, 204, 0.5);
}

.vscode-high-contrast blockquote {
background: transparent;
border-color: #fff;
}
-->

code {
color: #C9AE75; /* Change the old color so it seems less like an error */
font-size: inherit;
}

/* Page Break : use

to insert page break
-------------------------------------------------------- */
.page {
page-break-after: always;
}
-->

ubuntu 环境配置

安装包准备

  • 下载 410以上显卡驱动 文件名: NVIDIA-Linux-x86_64-410.66.run
  • 下载 cuda 10.0 选择 CUDA Toolkit 10.0 (Sept 2018)... 选择详细参数: linux -> x86_64 -> ubuntu -> 16.04 -> runfile(local) 然后直接下载,2.0G,文件名: cuda_10.0.130_410.48_linux.run
  • 下载cudnn 7.4.2 首先注册一个帐号,然后登录,在这个页面 勾选 I Agree To the Terms of the cuDNN Software License Agreement 后能看见 Archived cuDNN Releases 点进去后选择 Download cuDNN v7.4.2 (Dec 14, 2018), for CUDA 10.0 然后弹出框里面选择 cuDNN Library for Linux 下载,大小:424.5M,文件名:cudnn-10.0-linux-x64-v7.4.2.24.tgz

安装依赖

  • 将apt-get更新到国内源并更新所有包(如果更新过程中出现权限不足的情况,请在命令最前面加上 sudo)
  • 安装opencv依赖:
    • sudo apt-get install build-essential
    • sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
    • sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
    • sudo apt-get install libavcodec-ffmpeg56 libhdf5-dev

安装cuda环境

  • 安装驱动

    • 桌面状态按住 Ctrl + Alt + F1 进入文本行模式,登录后,进入到默认下载文件夹 cd /home/swls/Downloads
    • sudo service lightdm stop #关闭桌面服务
    • chmod +x NVIDIA-Linux-x86_64-410.66.run # 增加执行权限
    • sudo ./NVIDIA-Linux-x86_64-410.66.run -no-x-check -no-nouveau-check -no-opengl-files # 安装驱动, 安装过程可能会提示,一直默认就可以
    • sudo sh ./cuda_10.0.130_410.48_linux.run # 安装cuda,过程中第一步会提示是否安装 410 的显卡驱动,选择 no ,因为上一步已经安装完成,后面都选择yes就行
    • 添加环境变量:
      echo 'export PATH="$PATH:/usr/local/cuda-10.0/bin:/usr/local/cuda-10.0/include:$HOME/bin"' >> ~/.bashrc echo 'export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-10.0/lib64:/usr/local/cuda-10.0/extras/CUPTI/lib64:/usr/local/cuda-10.0/include"' >> ~/.bashrc echo 'export CUDA_BIN_PATH="/usr/local/cuda-10.0/include:/usr/local/cuda-10.0/bin"' >> ~/.bashrc source ~/.bashrc
    • 安装 cudnn:
      tar -xf /home/swls/Download/cudnn-10.0-linux-x64-v7.4.2.24.tgz -C ./ sudo cp /home/swls/Download/cuda/include/cudnn.h /usr/local/cuda-10.0/include/ sudo cp /home/swls/Download/cuda/lib64/* /usr/local/cuda-10.0/lib64/
    • 终端执行 nvidia-smi 查看显卡与驱动信息,能正常显示即表明安装成功
    • sudo service lightdm start #打开桌面服务
  • 文本行模式 按住 Ctrl + Alt + F7 即可打开桌面系统
  • 再次终端执行 nvidia-smi 查看显卡与驱动信息,能正常显示即表明安装成功

调用示例

接口规范

接口函数共有三个,init_model函数负责初始化模型,可根据返回码查看应对错误详细信息,recognise函数接受三个参数,第一个为识别图片路径,第二个save_path为打框图片保存路径,第三个为空字符串,识别结果将填入其中(json格式),free_model即为关闭识别接口,释放资源。所有函数返回 非0 代表此次调用错误。

  • int init_model(const char *path_prefix);
  • int recognise(char* image_path, char *save_path, char *return_char);
  • int free_model();

c++ 代码调用示例请查看 demo.cc 需要编译: g++ -o demo.so demo.cc -std=c++11 -ldl -shared -fPIC; python 代码调用示例请查看 demo.py 可直接运行。

http服务

主目录下运行sh ./run_service.sh 即可开启web service 服务,将识别接口部署到本地环境下,其中 service文件夹下存放运行服务的必要文件和python依赖。

调用示例

以下代码块展示了初始化识别接口的调用示例,包括访问地址,以及传入参数形似,以及键名,必须为recoglib_so_pathmodel_dir,键值请填写相应参数。

url = 'http://127.0.0.1:9999/api/init' info_dict = { "recoglib_so_path" : "/home/swls/work_dir/github/models-master/research/object_detection/scene_recog/package/recoglib.so", "model_dir" : "/home/swls/work_dir/github/models-master/research/object_detection/scene_recog/package" } r = requests.post(url, data=info_dict, timeout=30) print("init: ") print(r.status_code)

详细代码请查看主目录下的demo_post.py,其中需要修改所有关于路径的参数即可运行查看返回结果(运行demo_post.py需要安装requests库),每次访问http接口都会返回json字符串,具体格式如下: **注意:**每次调用后都要先判断code值是否为0,才执行之后操作。非0代表调用失败,可在错误码一览表查看相应信息,即可根据返回值和message判断具体问题所在。

init接口返回格式:

{"message": "ok", "code": 0}

run接口返回格式:

{"message": "OK", "code": 0, "data": [{"y2": 1765.583984375, "y1": 1195.190673828125, "class_idx": 1, "score": 0.9999951124191284, "x2": 2938.8828125, "x1": 2512.82470703125}, {"y2": 3282.471435546875, "y1": 960.3641357421875, "class_idx": 6, "score": 0.9998703002929688, "x2": 2369.16552734375, "x1": 1262.511474609375}, {"y2": 1592.4522705078125, "y1": 1238.4974365234375, "class_idx": 1, "score": 0.9993507266044617, "x2": 2374.076171875, "x1": 2115.9111328125}], "out_path": "/home/swls/work_dir/github/models-master/research/object_detection/scene_recog/package/service/RecogApi2/upload/0c4fe954-45b5-403c-b257-6065df5dc24d.jpg"}

free接口返回格式:

{"message": "free success", "code": 0}

错误码一览

错误码 信息
200 模型文件不存在
201 模型运行失败
250 模型未初始化错误
251 图片不存在
252 json解析错误
253 图片名格式错误

识别结果格式

示例 变压器_呼吸器_硅胶变色_0032.JPG 识别结果如下

{ "code":0, "message":"ok", "out_path":"/home/swls/work_dir/github/models-master/research/object_detection/scene_recog/package/service/RecogApi2/upload/e1d83604-a7bc-40da-a83b-723bcfb5ed50.jpg", "data": [ { "class_idx" : 1, "score" : 0.99999511241912842, "x1" : 2512.82470703125, "x2" : 2938.8828125, "y1" : 1195.190673828125, "y2" : 1765.583984375 }, { "class_idx" : 6, "score" : 0.99987030029296875, "x1" : 1262.511474609375, "x2" : 2369.16552734375, "y1" : 960.3641357421875, "y2" : 3282.471435546875 }, { "class_idx" : 1, "score" : 0.99935072660446167, "x1" : 2115.9111328125, "x2" : 2374.076171875, "y1" : 1238.4974365234375, "y2" : 1592.4522705078125 } ] }

注意事项

  • 图片路径暂时不支持中文

  • 渲染图只标记了外框,不标记类别与置信度

  • 识别结果里面x1,y1 为左上角坐标,x2,y2为右下角坐标

  • 识别结果里面out_path为此次调用模型渲染图存放路径

  • 运行程序需要将lib文件夹加入到动态库查找路径,执行一下命令即可:(修改对应路径)

    • echo 'export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/swls/lib"' >> ~/.bashrc
    • source ~/.bashrc

Ubuntu环境配置机器安装驱动的更多相关文章

  1. ubuntu环境配置之vi 配置【转载】

    ubuntu环境配置之vi 配置 [日期:2014-02-10] 来源:Linux社区  作者:zhonghe1114 [字体:大 中 小]   Android的源码开发,几乎离不开Linux,Lin ...

  2. ubuntu环境配置eclipse+opencv

    blockquote { direction: ltr; color: rgb(0, 0, 0) } blockquote.western { font-family: "Liberatio ...

  3. 【Python开发实战】Windows7+VirtualBox+Ubuntu环境配置

    1. VirtualBox的安装 参考常规安装方式即可. VirtualBox 4.3.14 for Windows hosts:http://download.virtualbox.org/virt ...

  4. ubuntu环境配置终极解答

    1. ubuntu中常用的5个配置文件 1)/etc/profile 2)/etc/environment 环境变量在这个文件中定义,可以用vim /etc/environment查看该文件内容 3) ...

  5. ubuntu 环境配置

    安装包准备 下载 410以上显卡驱动 文件名: NVIDIA-Linux-x86_64-410.66.run 下载 cuda 10.0 选择 CUDA Toolkit 10.0 (Sept 2018) ...

  6. ubuntu环境配置

    网络配置 主要文件:/etc/network/interfaces,这里是IP.网关.掩码等的一些配置: # This file describes the network interfaces av ...

  7. MPSOC之2——ubuntu环境配置及petalinux安装

    MPSOC的linux开发需要使用petalinux,选择Ubuntu操作系统. 1.Ubuntu 1.1. Ubuntu安装 版本16.04.03 vmare版本:12.0 安装时注意选择" ...

  8. jdk 1.7 在ubuntu 环境配置

    在/opt/里解压了jdk 1.7后 设置环境变量 chen@caicai ~ $ vim .profile export JAVA_HOME=/opt/jdk1..0_79 export JRE_H ...

  9. rnnlib依赖ubuntu环境配置

    rnnlib help http://sourceforge.net/apps/mediawiki/rnnl/index.php?title=Main_Page boost: http://blog. ...

随机推荐

  1. Acwing-121-赶牛入圈(二分, 二维前缀和,离散化)

    链接: https://www.acwing.com/problem/content/123/ 题意: 农夫约翰希望为他的奶牛们建立一个畜栏. 这些挑剔的畜生要求畜栏必须是正方形的,而且至少要包含C单 ...

  2. 25. ClustrixDB 使用sierra_stats导出概率分布

    ClustrixDB提供了导出概率分布(PDs)的能力,这可以与模式(DDL)一起用于调查查询的性能.通常,这个过程是在Clustrix支持请求时执行的.下面的部分概述了如何使用python脚本sie ...

  3. 接口headers

    接口headers from-data header: { 'Content-Type':'application/json'},     header: { 'Content-Type':'appl ...

  4. 上传文件夹 vue

    ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现. 下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压. ASP.NE ...

  5. Tarjan求强连通分量、求桥和割点模板

    Tarjan 求强连通分量模板.参考博客 #include<stdio.h> #include<stack> #include<algorithm> using n ...

  6. Scrapy学习(二)、安装及项目结构

    一.安装 1.安装pywin32,下载地址:https://sourceforge.net/projects/pywin32/files/pywin32/ 我选择的是Build 221,点进去,根据自 ...

  7. 分布式-信息方式-ActiveMQ的动态网络链接

    ActiveMQ的动态网络链接多播协议 multicast ActiveMQ使用 Multicast协议将一个 Service和其他的 Broker的 Service连接起来,IPmulticast是 ...

  8. React 开发中面临的九个重要抉择

    抉择系列:在技术开发的过程中我们会面临着各种各样的抉择,我们在不同情境下该如何选择恰当的技术,这是本系列文章想要解决的问题. 在 React 开发的过程中我们常常会遇到一些抉择,下面我将选取其中一些个 ...

  9. Vue源码阅读一:说说vue.nextTick实现

    用法: 在下次 DOM 更新循环结束之后执行延迟回调.在修改数据之后立即使用这个方法,获取更新后的 DOM. 疑惑: 怎么实现的延迟回调 原理: JavaScript语言的一大特点就是单线程,同一个时 ...

  10. Zookeeper 选举过程

    Zookeeper 选举过程 问题 选举过程 服务器之间是怎么通信的? 答:QuorumCnxManager使用TCP-socket实现选举过程中的连接通信 Leader的选举过程在什么时候实现? L ...