安装caffe-CPU版本并进行训练

目录

前言

0、安装Ubuntu 18.04 版本

输入ls没有反应

ubuntu换源

 换源出现的问题

1、安装caffe出现E:Unable to locate package caffe-cpu问题

 2、把 code 文件夹下载到 ubuntu

3、在本地使用caffe-CPU,并部署数据标注工具 ATool

问题1

问题2

问题3

命令行修改

大功告成!

4、ATool图像标记设备的使用

教程

 我的标点逻辑

5、在华为云上使用caffe-GPU,并部署ATool

省流:vscode没有x11,直接换用mobaXterm。

MobaXterm使用

6、在华为云服务器使用cafffe-GPU训练模型

安装anaconda

到创建虚拟环境的时候报错

解决方案(后面类似问题也加上--insecure)

安装caffe-GPU

模型训练

d.train.sh 文件的修改

caffemodel文件的下载

具体修改细节

validation_regression.py代码的修改

有两处错误。

最优模型验证结果 


前言

仅做记录,本文参考学校人工智能社团的昇腾atlas 200dk自动循迹小车教程。这是数据训练过程的全记录。中间有很多省略,是实操过程中的一点笔记。请谨慎入坑。

0、安装Ubuntu 18.04 版本

因为搜索时发现有人评论22.04没有caffe-CPU,就安装了老版本。

sudo apt install caffe-cpu

输入ls没有反应

参考博客Ubuntu用户目录下缺失Desktop Downloads等文件夹的解决办法_ubuntuhome找不到desktop-CSDN博客

ubuntu换源

Ubuntu修改源镜像方法(22.04也能用)附带常用源镜像地址_ubuntu22.04lts镜像源下载-CSDN博客

 换源出现的问题

ubuntu18换源并且解决/etc/apt/sources.list“ E212: Can‘t open file for writing-CSDN博客

1、安装caffe出现E:Unable to locate package caffe-cpu问题

原因,新装的ubuntu太空,没有apt-get依赖。下面博客虽然是VIP,但第一部分可以用。

安装caffe(CPU版)_e: 无法定位软件包 caffe-cuda-CSDN博客z

下面这个博客我没试过,感觉有用。

[已解决] Ubuntu 上的“E:无法找到包”错误 (linux-console.net)

 2、把 code 文件夹下载到 ubuntu

由于在windous上下载了code文件,出于省时间,便直接从windous复制到linux ubuntu 18.04之中,没想到花了我十几分钟。总结:傻瓜式操作,时间耗费长。

3、在本地使用caffe-CPU,并部署数据标注工具 ATool

总参考智能小车算法开发 - Wiki - Gitee.com

这个教程有些问题。下面是我的实践经过。

要一行一行地复制命令行。否则会出现一些命令行运行不完全。 

问题1

下行代码的意思是解压缩包,但这里有几点问题。

tar vxf Atool.tar.gz

 文中显示打不开,经核查,刚刚下载的code文件夹的ATool压缩包名字为ATool.tar.gz,而不是Atool.tar.gz。其次要定位到文件夹位置才能解压缩,否则还是打不开。

问题2

问题代码

mkdir build

解释:在ATool文件夹里新建build文件夹。 

报错提示

mkdir: cannot create directory ‘build’: File exists

当你在使用 mkdir 命令尝试创建一个名为 build 的目录时,如果系统显示错误 “mkdir: cannot create directory ‘build’: File exists”,这意味着 build 这个目录已经存在于你当前的工作目录中。

上面截图可以看出,build文件夹已经存在。 

问题3

 问题太多了,那看来是我哪一步没走好,重来。

重来后还是回到这一步 

cmake ..

解释:

在命令行中执行 cmake .. 命令时,这个命令是在告诉 CMake 工具使用当前目录的上一级目录(即 .. 表示的目录)中的 CMakeLists.txt 文件来配置和生成项目的构建系统。

具体来说,这个命令做了以下几件事情:

  1. 查找 CMakeLists.txt:CMake 会首先在当前目录的上一级目录(即 ..)中查找名为 CMakeLists.txt 的文件。这个文件是 CMake 项目的配置文件,包含了项目的构建信息和规则。

  2. 解析 CMakeLists.txt:一旦找到 CMakeLists.txt 文件,CMake 就会解析这个文件中的指令。这些指令告诉 CMake 需要哪些源文件、如何编译它们、需要链接哪些库、以及生成哪些目标(如可执行文件或库)等。

  3. 生成构建系统:根据 CMakeLists.txt 文件中的指令,CMake 会生成一个或多个构建系统文件。这些文件通常包括 Makefile(对于 Unix-like 系统)、Visual Studio 项目文件(对于 Windows)或其他类型的构建系统文件,具体取决于你运行 CMake 时使用的生成器(通过 -G 选项指定)。

  4. 准备构建:一旦构建系统文件被生成,你就可以使用它们来构建你的项目了。例如,在 Unix-like 系统上,你可以通过运行 make 命令来构建项目(前提是你已经生成了 Makefile)。

 (文心一言生成)

报错提示

Command 'cmake' not found, but can be installed with:sudo snap install cmake  # version 3.30.0, or
sudo apt  install cmakeSee 'snap info cmake' for additional versions.

我回到home文件夹下载了cmake(用GPU做的时候忘了这一步),又回到ATool文件夹,结果报错。而且又回到ATool文件夹下载,依然报此错误。

CMake Error: The source directory "/home/zjs/Downloads/code/code/tools" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.

 OK,报错说找不到CMakeLists.txt文件,可以看到CMakeLists.txt文件就在ATool文件夹中,但cmake寻找的是ATool的上一级文件夹。这里也能看出,cmake找文件不会去找本文件夹的子文件夹里的文件。

已解决,cd进入build文件夹,再cmake寻找上一级文件夹。

最后在build文件夹中输入make指令。

命令行修改

原来的

tar vxf Atool.tar.gz
cd ATool
mkdir build
cmake ..
make

现在的

tar vxf ATool.tar.gz
cd ATool
cd build
cmake ..
make

注意,一行一行的复制粘贴最为保险。 

大功告成!

最后输入

./ATools

全过程展示(输入路径时左右正斜杠要有,从home开始,而不是从Downloads开始)

全部标记完会回到命令行界面,忘记截图标点情形了,后面会补上。

如果没有未标记的截图,结果如下

补上的截图(红点应该放在蓝线与中间白色的虚线的交点处,用来指示小车前进的方向)

 小车出界我不太知道怎么处理,是要停下吗?不知道。

——————————————————————————————————————————

4、ATool图像标记设备的使用

教程

ATool比较原始,标记白点切换下一张图像后,不能直接修改。只能在与img文件夹同级的table文件夹中寻找与.img同级的.json文件,删除即可。这样就可以重新标注了。

点击.json文件,可以发现一个坐标,这就是标记点的坐标。

逐字逐行的看下面的教程!!!

 我的标点逻辑

正常情况同上教程,往辅助线与白虚线的交点拐弯。

若小车压黄线,则小车在哪个车道部分更多,往哪最大程度地拐弯或往辅助线与白虚线交点方向拐弯。

若小车垂直穿过黄线,此时看不到白线,则向能让小车正向回到道路并能看到辅助线与白虚线的交点方向拐弯。

5、在华为云上使用caffe-GPU,并部署ATool

省流:vscode没有x11,直接换用mobaXterm。

到最后一步./ATools出现了这个问题

root@caffe-gpu:~/Downloads/code/tools/ATool/build# ./ATools
Unable to init server: Could not connect: Connection refused(src:28284): Gtk-WARNING **: 11:10:00.718: cannot open display: 

解决方案:回到home文件夹

cd $home

参考此博客(gedit是图像的文本处理器)

彻底解决关于gedit的Unable to init server: 无法连接: 拒绝连接_non-network local connections being added to acces-CSDN博客

使用如下命令

xhost local:gedit

系统提示

Command 'xhost' not found, but can be installed with:apt install x11-xserver-utils

让我下载x11。这就与文心一言给我的提示相似了,文心一言说我x11转发未启用,其实是未下载。安装后即可。

又出现下问题,可参考引用博客

xhost:  unable to open display ""

解决方案(逐行粘贴) 

export DISPLAY=:0
xhost local:gedit

参考之后又出现新问题

xhost:  unable to open display ":0"

 正解居然在CSDN文库上

Unable to init server: Could not connect: Connection refused - CSDN文库

ssh -X 远程服务器用户名@远程用户名ip

我是连接华为云GPU出的问题。不知道适不适用。 最后提示在浏览器打开,端口为10。

emmmm,又出新问题。

connect /tmp/.X11-unix/X0: No such file or directory
Unable to init server: Could not connect: Connection refused(src:10785): Gtk-WARNING **: 15:08:37.956: cannot open display: localhost:10.0

 经助教提示,我换用MobaXterm,并最终打开了ATool应用。(时间比较紧张,记一点重点)

MobaXterm使用

【业务工具】MobaXterm入门介绍和简单教程_mobaxterm详细教程-CSDN博客

安装完成后,进入界面,点击左上角session,出现新窗口,点击ssh,在Remote host输入远程服务器ip,点击Specity username左侧的方框,在Specity username输入远程服务器用户名。

对于本次任务,我更喜欢MobaXterm一些,因为左侧远端服务器的文件夹是可视化的。而且可以可视化实现windous与Linux文件互传。

6、在华为云服务器使用cafffe-GPU训练模型

安装anaconda

GPU没有代金券要花很多钱,我选的GPU,只要是使用,7.3802元每小时。还要另算流量,0.8元每G。

要修改code文件中的部分python文件夹,而且使用了一些用于数据处理的库。所以我们需要anaconda。

如何在Linux服务器上安装Anaconda(超详细)_linux安装anconda-CSDN博客

不过用GPU够快。

到这一步可以写no,其他有yes写yes,没有就按enter键。

后面按教程一步步来就好,下面是不按教程的后果。

到创建虚拟环境的时候报错

root@caffe-gpu:~# conda create -n pytorch python=3.7
Solving environment: failedCondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com/pkgs/main/noarch/repodata.json.bz2>
Elapsed: -An HTTP error occurred when trying to retrieve this URL.
HTTP errors are often intermittent, and a simple retry will get you on your way.If your current network has https://www.anaconda.com blocked, please file
a support request with your network engineering team.SSLError(MaxRetryError('HTTPSConnectionPool(host=\'repo.anaconda.com\', port=443): Max retries exceeded with url: /pkgs/main/noarch/repodata.json.bz2 (Caused by SSLError(SSLError("bad handshake: Error([(\'SSL routines\', \'ssl3_get_server_certificate\', \'certificate verify failed\')])")))'))

解决方案(后面类似问题也加上--insecure)

临时忽略SSL验证(不推荐,但可作为测试)

如果只是想快速测试是否是SSL验证问题导致的,可以尝试在命令中添加--insecure选项来临时忽略SSL验证(注意,这可能会使您的连接容易受到中间人攻击):

conda create -n pytorch python=3.7 --insecure

安装caffe-GPU

Anaconda安装caffe(超简单)_centos anaconda3 安装caffe-CSDN博客

不要考虑版本老旧的问题,能用就行。

linux上没有python编辑工具,有点后悔前面为什么没下载vscode,我以为pytorch是编辑器,所以没下vscode,结果发现错的离谱。不过又想起来anaconda又有自己的编辑器。——不过最后用的是mobaXterm自带的编辑器。

超详细的 Linux 环境下 Anaconda 安装与使用教程-CSDN博客

超级简单!退出Jupyter Notebook的几种小方法及注意事项!_退出jupyter notebook命令-CSDN博客

我后面的运行代码,有python3的代码都改为了python开头,因为有caffe-GPU的环境,python版本是2.7。

python3 ./1_generate_list.pypython ./1_generate_list.py

 编辑器就用MobaXterm自带的就行。

模型训练

d.train.sh 文件的修改

caffemodel文件的下载

注:.caffemodel 请从压缩包中复制,下面有链接。

智能小车算法开发 - Wiki - Gitee.com

这四个链接怎么用?什么时候用?注意后缀。 

.caffemodel在现在用。进入ATool文件,新建model文件夹,进入model文件夹,把下载的.caffemodel文件移到model文件夹内,拖动即可。

.prototxt文件与.cfg文件在这里用。到这里就不是我的任务了。我将开新博客介绍。

具体修改细节

若用gpu,下面方框处应该是gpu := 0。

validation_regression.py代码的修改

有两处错误。

1、如方框所示,-1改为-2 。2、125行逗号后的空格去掉。

注意开头几行有五六个要修改的路径!不是只有教程标着的几个。

最优模型验证结果 

第一个caffemodel文件,损失函数误差0.005416。

 第二个文件,损失函数误差0.005451

第三个文件,损失函数误差0.005437

应该选第一个为我们自己训练好上传的.caffemodel文件。

亲测使用GPU极有优势,训练三千张照片只要5分钟,三个caffemodel文件分别验证也不会超过十五分钟,是CPU的十几倍甚至几十倍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/50084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leedcode-数组-15 最接近的三数之和

原理 1、对数组进行升序排列&#xff1b; 2、定义变量_min&#xff0c;初始值是升序后数组的前3个元素之和&#xff0c;默认当前3个数之和离目标值最近&#xff1b; 3、遍历数组&#xff1b; 4、定义首指针为start&#xff0c;表示当前遍历元素的下一个元素&#xff0c;即i…

URL过滤、DNS过滤和内容过滤的总结

目录 URL过滤 URL和URI URL -- 统一资源定位符 URI --- 统一资源的标识符 URL和URI之间的区别 URL过滤的方式 HTTP协议获取URL的方式 HTTP协议做控制管理的流程 HTTPS协议做控制管理的流程 1&#xff0c;配置SSL的解密功能 2&#xff0c;直接针对加密流量进行过滤 例…

解决 Shiro 重复调用 doGetAuthenticationInfo 导致异常处理错误的问题

遇到一个 Shiro 中反复调用 doGetAuthenticationInfo 导致异常没有被成功处理的问题&#xff0c;经过一些源码调试&#xff0c;发现了问题的所在&#xff0c;只需在继承 BasicHttpAuthenticationFilter 的类中重写 onAccessDenied 方法即可。 文章目录 1.问题环境2.问题描述3.问…

2024-07-23 Unity AI行为树2 —— 项目介绍

文章目录 1 项目介绍2 AI 代码介绍2.1 BTBaseNode / BTControlNode2.2 动作/条件节点2.3 选择 / 顺序节点 3 怪物实现4 其他功能5 UML 类图 项目借鉴 B 站唐老狮 2023年直播内容。 点击前往唐老狮 B 站主页。 1 项目介绍 ​ 本项目使用 Unity 2022.3.32f1c1&#xff0c;实现基…

25.x86游戏实战-理解发包流程

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

【iOS】——Block循环引用

循环引用原因 如果在Block中使用附有_ _strong修饰符的对象类型自动变量&#xff0c;那么当Block从栈复制到堆时&#xff0c;该对象为Block所持有&#xff0c;这样容易引起循环引用。 HPPerson *person [[HPPerson alloc] init];person.block ^{NSLog("person.age--- …

服务韧性工程(SRE)论坛演讲实录 | 雅菲奥朗: 人工智能的未来之路引领智能运维新纪元

2024年5月24日&#xff0c;第二届服务韧性工程&#xff08;SRE&#xff09;论坛在杭州成功举办。本次会议由中关村人才协会作为指导单位&#xff0c;中国移动通信集团浙江有限公司和SRE创新联合体&#xff08;中关村人才协会SRE专委会&#xff09;联合主办,中移动信息技术有限公…

Linux 某进程 CPU 高问题,用 Shell 脚本发现处理

发现高CPU使用率进程 首先&#xff0c;我们需要编写一个Shell脚本来发现系统中CPU使用率最高的进程。以下是一个简单的脚本示例&#xff1a; #!/bin/bash# 设置 CPU 使用率的阈值,一般设置90&#xff1b;这里是demo&#xff0c;所以用30 CPU_THRESHOLD30# 获取占用 CPU 最高的…

pikauchu之Unsafe Fileupload(不安全的文件上传)

Client check&#xff08;客户检查&#xff09; 第一步先新建一个一句话木马 <?php eval($_POST[1]);?> 然后上传文件 有限制&#xff0c;只能上传那几种类型 现在看看源代码 我们将一句话木马文件的后缀改为png 然后用burp抓包&#xff0c;将png改成php 就能上传成功 …

运维上云/直播上云EasyNVS视频上云管理平台配置域名时的注意事项

EasyNVS视频上云管理平台拥有完整的视频流媒体服务能力和运维管理服务能力&#xff0c;不仅可以通过平台对EasyNVR、EasyGBS进行统一管理&#xff0c;还能解决设备现场没有固定公网IP却需要在公网直播的需求。 有用户反馈&#xff0c;在项目现场配置了EasyNVS的HTTPS证书&#…

Studying-代码随想录训练营day44| 1143.最长公共子序列、1035.不相交的线、53.最大子序和、392.判断子序列

第44天&#xff0c;动态规划part11&#xff0c;子序列题型part02(ง •_•)ง&#x1f4aa;&#xff0c;编程语言&#xff1a;C 目录 1143.最长公共子序列 1035.不相交的线 53.最大子序和 392.判断子序列 总结 1143.最长公共子序列 文档讲解&#xff1a;代码随想录最长公…

【微信小程序实战教程】之微信小程序原生开发详解

微信小程序原生开发详解 微信小程序的更新迭代非常频繁&#xff0c;几乎每个月都会有新版本发布&#xff0c;这就会让初学者感觉到学习的压力和难度。其实&#xff0c;我们小程序的每次版本迭代都是在现有小程序架构基础之上进行更新的&#xff0c;如果想要学好小程序开发技术&…

面试经典 114. 二叉树展开为链表

最近工作越来越难找&#xff0c;裁员越来越懂了&#xff0c;焦虑的睡不着&#xff0c;怎么办呢&#xff0c;只能刷面试题&#xff0c;卷死你们 今天这个题目没刷过&#xff0c;我思考了半天才只能用暴力&#xff0c;后来苦思冥想才想出来简单的方法&#xff0c;废话不多说&…

【机器学习】激活函数:神经网络的灵魂

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 激活函数&#xff1a;神经网络的灵魂什么是激活函数?常见激活函数类型1. Sigmo…

深入了解 JMeter 中的响应断言

JMeter 是一个强大的性能测试工具&#xff0c;能够模拟大量用户并发访问网站或应用程序&#xff0c;以便测试其性能和稳定性。在进行性能测试时&#xff0c;我们需要对响应结果进行断言&#xff0c;以确保应用程序或网站的功能和性能符合预期。 JMeter 提供了一套丰富的响应断…

VINS-FUSION 优化-IMU预积分因子(二)

VINS-FUSION 优化-IMU预积分因子(一)完成了IMU预积分及对于优化变量的全部雅克比矩阵的推导,本文结合VINS-FUSION源码,完成优化-IMU预积分因子的使用。 一、IMU预积分因子雅克比 VINS-FUSION源码中将优化变量分组如下: 1.对i时刻优化变量的雅可比

8.0.32 mysql 配置主从数据库

配置前提&#xff1a; 两台服务器都需要安装同一版本的mysql数据库 我的版本是8.0.32 数据库参数修改 主数据库my.cnf(linux)或my.ini(win)配置&#xff1a; 这里需要注意&#xff1a;server-id必须唯一主从两个库必须要不一样 log_binmysql-bin server-id24 gtid-modeON …

chapter08-面相对象编程的三大特征——封装

1、基础介绍 对电视机的操作就是典型封装 封装的好处&#xff1a;隐藏实现细节&#xff1b;可以对数据进行验证 2、封装的实现 3、入门案例 altinsert&#xff0c;getter and setter&#xff0c;自动插入

生成式人工智能的未来之路:对话系统与自主代理的交汇与展望

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

RAS--APEI 报错解析流程(2)

RAS--APEI 报错解析流程(1) 除了APEI 中除了GHES会记录错误&#xff0c;在Post过程中的错误通常是通过BERT Table汇报 1.BERT Boot Error Record Table is used to report unhandled errors that occurred in a previous boot&#xff0c;it is reported as a ‘one-time polle…