首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

linux ubuntu16安装编译matconvnet并测试,常见问题解决

  • 25-03-03 18:42
  • 4169
  • 10234
blog.csdn.net

文章目录

  • 1、安装编译MatConvNet
    • 1.1 安装libjpeg
    • 1.2 GCC降版本解决编译问题
    • 1.3 MatConvNet源码包下载
    • 1.4 编译
    • 1.5 测试
  • 2 安装编译中遇到的问题解决:
    • 问题一:numlabs labindex与原始库中有冲突的问题

1、安装编译MatConvNet

1.1 安装libjpeg

sudo apt-get install libjpeg-dev
  • 1

1.2 GCC降版本解决编译问题

本人测试用的Ubuntu16默认的是使用gcc5.x,而matlab2017b只有gcc4.9才支持,修改ubuntu中的gcc和g++版本:

sudo apt-get update
sudo apt-get install gcc-4.7
sudo apt-get install g++-4.7
  • 1
  • 2
  • 3

gcc --version显示版本依然是5.x,并没有把4.7版设置为默认的gcc的链接文件,进入/usr/bin/把gcc这个文件删除,建立链接到gcc-4.7(g++类似):

cd /usr/bin
sudo rm gcc
sudo ln -s gcc-4.9 gcc
sudo rm g++
sudo ln -s g++-4.9  g++
  • 1
  • 2
  • 3
  • 4
  • 5

1.3 MatConvNet源码包下载

从官网下载合适版本的 MatConvNet 源码包,目前版本为 1.0-beta25.解压后进入源码目录:
在这里插入图片描述

tar xfv matconvnet-1.0-beta25.tar.gz
cd matconvnet-1.0-beta25
  • 1
  • 2

1.4 编译

打开matlab之后将解压的包添加到matlab路径
在这里插入图片描述

接下来分为如下几种情况:

(1)假设只有CPU:

vl_compilenn()
  • 1

(2)假设你只有唯一的CUDA且匹配你的MATLAB版本

vl_compilenn('enableGpu', true)
  • 1

(3)如果你有很多CUDA,可以通过指定路径选择一个cuda版本

vl_compilenn('enableGpu',true,'cudaRoot','yourcudapath','cudaMethod','nvcc','enableCudnn',true,'cudnnRoot', 'yourcudnnpath')
  • 1

这里会有一个问题按照默认安装的时候cuda的路径一般是/usr/local/cuda/,但是在安装cudnn的时候路径没有找到对不对?

我当时的安装方式参考了如下两篇bolg进行安装

主要方式就是讲cudnn的库复制到cuda的路径里面进去

所以这里的cudnnpath就应该是cuda中的被复制路径,最终该指令可以写成如下形式

vl_compilenn('enableGpu',true,'cudaRoot','/usr/local/cuda','cudaMethod','nvcc','enableCudnn',true,'cudnnRoot', '/usr/local/cuda/lib64')
  • 1

1.5 测试

测试一:

addpath matlab
vl_setupnn()
vl_setupnn('gpu', true)
vl_testnn()
vl_testnn('gpu', true)
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

测试二:

下载预训练好的网络放到相应路径下

在这里插入图片描述

准备一张图片(因为从别的blog上面截得所以有个水印但是不影响测试结果哈哈之后会有一些我自己的改动)

在这里插入图片描述

文件夹结构示意图(我的系统是linux便于显示挂载到了windows上面,显示文件夹结构)

在这里插入图片描述

我自己写了一个脚本可以在之后都使用一下:

这个里面是init.m文件内容

currentFolder = pwd;
% fprintf(currentFolder);
% fprintf('\n');
addpath(genpath(currentFolder));
addpath(genpath('/home/zhouziqun/MATLAB/matconvnet-1.0-beta25/matlab'));%这个是我编译好的那个文件的路径(相当于吧子文件和文件都添加进路径中)
vl_setupnn();%完成初始化
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

matlab命令行中run 绝对路径init.m

然后运行test1文件

%将pepper.png这张图按照模型,根据得分确定最应该属于的类别
net = load('./netpath/imagenet-vgg-m-2048.mat');
im = imread('./datapath/peppers.png');
im_ = single(im);
im_ = imresize(im_,net.meta.normalization.imageSize(1:2));%缩放到224*224大小
im_ = im_ - net.meta.normalization.averageImage;%减去均值
res = vl_simplenn(net,im_);%res包含了计算结果,以及中间层的输出  最后一层可以用来分类
y = res(end).x;%最后一层
x = gather(res(end).x);
score = squeeze(gather(res(end).x));%分属于每个类别的分数
[bestScore, best] = max(score);
figure(1);
clf;
imshow(im);
title(sprintf('%s %d,%.3f',net.meta.classes.description{best},best,bestScore));%net.meta.classes.description里存放的是很多种类别的名称
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

matlab命令行中run 绝对路径test1.m

最终结果

显示准确率和类别如上

2 安装编译中遇到的问题解决:

问题一:numlabs labindex与原始库中有冲突的问题

Warning: Function labindex has the same name as a MATLAB builtin. We suggest you rename the function to avoid a potential name conflict.

Warning: Function numlabs has the same name as a MATLAB builtin. We suggest you rename the function to avoid a potential name conflict.

你可以使用open相关命令解决

在命令行中输入

open labindex
  • 1

这样就会打开你matconvnet路径中的函数文件

对函数名字和函数.m文件两个地方都进行重命名即可解决冲突(我这是已经改完的效果图)

再次进行open labindex之后就会打开matlab自己库中的labindex

在这里插入图片描述

如果为了避免matconvnet之中会用到labindex那就这样操作之后把这个matlab中间的labindex改成labindex2,然后在把matconvnet之中的labindex1改回labindex

别问我为啥不直接改matlab中间的labindex,因为我已开始找不到matlab中间的labindex在哪里哈哈哈,只能先改掉一个在open出来 现在你们有了路径就可以自己直接改了

然后就没有问题了

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux入门在线安装软件40158 人正在系统学习中
注:本文转载自blog.csdn.net的呆呆象呆呆的文章"https://blog.csdn.net/qq_41554005/article/details/100643324"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top