论文复现

Posted yangdd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了论文复现相关的知识,希望对你有一定的参考价值。

配置jdk

  • 将下载下来的 jdk-8u241-linux-x64.tar.gz 进行解压
sudo tar zxvf ./jdk-8u241-linux-x64.tar.gz
  • 设置环境变量
sudo vim /etc/profile
  • 在其中添加:
#set Java environment
export JAVA_HOME=/home/ubuntu/jdk1.8.0_241
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
  • 生效环境变量配置,命令行输入:
source /etc/profile
  • 使用命令 java -version 检查Java是否已经安装在Ubuntu上
    技术图片

安装android studio以及配置sdk和adb

  • 下载安装包https://www.androiddevtools.cn/
  • 安装软件:解压压缩包,运行studio.sh脚本,完成剩下的安装。这个要在进入root模式之后进行:
sh /home/ubuntu/android-studio/bin/studio.sh
  • 按照提示,一步一步安装。
  • 之后会自动下载sdk文件,我的在/root/Android/Sdk下;
  • 配置环境变量:
sudo vim /etc/profile
  • 在其中添加:
export ANDROID_HOME=/root/Android/Sdk
export PATH=${PATH}:${ANDROID_HOME}/tools
export PATH=${PATH}:${ANDROID_HOME}/platform-tools
export PATH=${PATH}:${ANDROID_HOME}/build-tools 
  • 生效环境变量配置,命令行输入:
source /etc/profile
  • 检查是否配置成功: android -hadb
    技术图片
    技术图片
  • 这里出现了问题
  • 原来,在Android Studio官网的sdkmanager页面中,明确提到了在Android SDK Tools25.2.3及以后提供了sdkmanager command-line tools 以及舍弃android命令.
  • 参考的解决方法
  • 我这里选择下载了android-sdk_r24.4.1-linux.tar,然后解压,复制其中的tools目录,覆盖原来的tools目录。
  • 然鹅还是不行。。。。算了先回复成原来的吧。。

安装KVM

  • 执行以下命令以验证服务器的硬件是否支持虚拟化。如果输出结果大于 0,就意味着支持虚拟化。
egrep -c ‘(vmx|svm)‘ /proc/cpuinfo
  • 在linux终端安装东西的时候都要 sudo apt-get update 一下,然后安装KVM依赖:
sudo apt-get install qemu-kvm
sudo apt-get install qemu
sudo apt-get install virt-manager
sudo apt-get install virt-viewer 
sudo apt-get install libvirt-bin 
sudo apt-get install bridge-utils
  • 验证下,终端键入 kvm-ok,出现下面的界面,就说明已经装好了
    技术图片
  • 终端键入 sudo virt-manager ,可以进入图形界面。
    技术图片

配置aapt

aapt 为 Android Asset Packaging Tool , 在SDK的build-tools/目录下. 该工具可以查看, 创建, 更新ZIP格式的文档附件(zip, jar, apk). 也可将资源文件编译成二进制文件。

  • 配置环境变量:
sudo vim /etc/profile
  • 在其中添加:
# Add Android build-tools AAPT variable
export AAPT_HOME=/root/Android/Sdk/build-tools/29.0.3
export AAPT_HOME
export PATH=$PATH:$AAPT_HOME
  • 生效环境变量配置,命令行输入:
source /etc/profile
  • 使用命令 aapt 检查:
    技术图片

Add android-sdk/tools/lib to LD_LIBRARY_PATH.

  • 在终端下输入 sudo vim /etc/profile ,添加
export LD_LIBRARY_PATH=/root/Android/Sdk/tools/lib:$LD_LIBRARY_PATH
  • 生效环境变量配置,命令行输入:
source /etc/profile
  • 然后再输入 echo $LD_LIBRARY_PATH 即会显示:
    技术图片

配置emulator

  • 在配置abd环境的时候其实就已经配置好这个了,它在sdk目录下的tools文件目录下。
  • 但是我发现这个命令只能在root权限下运行。。
    技术图片

遇到的问题

问题1

  • 店家帮我装好了anaconda和pycharm,但是我打开pycharm的时候发现没有菜单栏,连settings都找不到。
  • 解决方法:
    • 按Ctrl + Shift + A打开“Action”对话框,键入“Experimental features”,然后按Enter键。
    • 把linux.native.menu选项旁边的复选框的钩子去掉,变成空白选项,应用更改并关闭对话框。
    • 重启PyCharm

问题2

  • 使用 pip 安装需要的模块的时候,出现下面这样的问题:
    技术图片
you are using pip version 10.0.1,however version 20.0.2 is available
You should consider upgrading via the ‘pip install --upgrade pip’ command.
  • 使用提示的更新命令:
pip install --upgrade pip --user
  • 更新成功并可以安装所需模块:
    技术图片
  • 在安装urllib3==1.9的时候出现了如下错误,但是最后显示还是安装成功了,不知道会不会对后续的实验有影响,先把图放在这里吧:
    技术图片
  • 错误消息:
ERROR: requests 2.19.1 has requirement urllib3<1.24,>=1.21.1, but you‘ll have urllib3 1.9 which is incompatible.
  • 在pycharm中添加conda的interpreter时候,出现如下问题:
    技术图片
  • 错误信息:
/home/ubuntu/anaconda3/lib/python3.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.9) or chardet (3.0.4) doesn‘t match a supported version!
  RequestsDependencyWarning)
pip install --upgrade urllib3
pip install --upgrade requests
  • 后来又遇到下面问题,重新安装pycharm即可。
    技术图片

  • 我发现在命令行使用命令 pip list 显示所安装好的包之后,在pycharm的解释器环境中找不到对应安装好的包,使用命令 which python 查看ubuntu中安装的python路径,然后就可以找到在命令行安装好的包啦。
    技术图片

问题3

  • 额。。,居然死机了,鼠标键盘都不动了。可能是我打开的窗口太多了。。
  • Ctrl + Alt + PrtSc (SysRq) + reisub ,再说明白一点,就是按住Ctrl,Alt和PtrSc(SysRq),按住他们的同时你需要按r,e,i,s,u,b 这样就能安全地重启linux

问题4

  • 在配置完LD_LIBRARY_PATH之后,应该是这个环境变量配置错误,导致把PATH覆盖了(此时的我快崩溃了)
    技术图片
  • 恢复办法如下:
/usr/bin/sudo vim /etc/profile          (由于找不到sudo,所以必须写全路径,其他命令如果提示找不到,也需要写全路径)
  • 在末尾加上:
export PATH="$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
  • 执行以下命令生效
source /etc/profile

2020.5.1

  • 今天打开测试运行环境,也也也太神奇了吧,上次这个 LD_LIBRARY_PATH 添加之后还不成功,今天打开居然检测成功啦!太开心了吧!就剩一个环境了!加油呀!
    技术图片

  • 嗯嗯,今天什么都没解决。。。


2020.5.2

  • 我卡在运行make_device.py这里了,怎么都运行不了,昨天那个的emulator64-x86也还是no,死机了。
    技术图片

  • make_device.py中的这句话:

p = pexpect.spawn(‘android create avd -n {} -t android-17 --snapshot‘
            ‘ --sdcard 200M --abi x86‘.format(sys.argv[1]), timeout=2)
  • 其中 spawn() 方法用来执行一个程序,它返回这个程序的操作句柄,以后可以通过操作这个句柄来对这个程序进行操作。
  • 命令 android create avd -n {} -t android-17 --snapshot --sdcard 200M --abi x86
参数 含义
-n AVD的名称(该项是必须的)
-t 运行的android的平台版本编号id
--snapshot 在AVD中设置一个快照文件
--sdcard 新的sd卡的大小
--abi 指定cpu架构 android list targe查看支持的cpu
  • timeout=2 就指定超时时间

  • p 就是 spawn() 的程序操作句柄了,之后对这个程序的所有操作都是基于这个句柄的,它可以说是最重要的部分。

  • 我好像知道问题的原因了,因为这个Android sdk是在安装Android studio的时候自动安装的,不支持 android 命令。┭┮﹏┭┮ 好吧,我重新装一下。

  • 先记录一下,这是目前为止配置的环境变量:
    技术图片

  • 下载https://dl.google.com/android/repository/tools_r25.2.3-linux.zip,然后直接把文件拖进sdk文件,直接覆盖,解决啦哈哈哈哈!
    技术图片


2020.5.3

  • android 命令是可以执行。
  • 但是运行make_device.py还是老问题,总是说avdname的事情(还是对python不够熟悉)
    技术图片
  • 还是make_device.py中的这句代码,发现运行的时候需要传参:
p = pexpect.spawn(‘android create avd -n {} -t android-17 --snapshot‘
            ‘ --sdcard 200M --abi x86‘.format(sys.argv[1]), timeout=2)
  • argv是一个list,它是sys模块下的一个全局变量(也称sys模块的属性),它的第一个元素是模块名、后面的元素是依次传入的参数!argv[1]代表第一个参数,这里是创建的avd的名字。

  • 传参之后出现了如下错误:
    技术图片

  • 查阅资料说是可能是权限的问题,然后 sudo su 进入root,再次执行 python3 make_device.py (这里我修改了一下代码不用传参) :
    技术图片

  • 分析发现异常的原因是expect()语句超时,期望得到的结果没有得到,直到超时抛出异常。

  • 查看已有的或新创建的AVD: android list avd

  • 运行指定的AVD: emulator -avd AVD名


2020.5.4

  • 出现pexpect.EOF异常错误、pexpect.TIMEOUT异常错误
  • 查阅资料说这两个错误可以使用try语句来处理报错,于是我在def main()中进行了如下修改:
try:
    ……
except pexpect.EOF:
    pass
except pexpect.TIMEOUT:
    pass
  • 是没有继续报错,查看创建的avd的时候并没创建成功。
  • try这个关键字来捕获异常:
try:尝试执行的代码
except:出现错误的处理
  • 所以上面的修改并没有实质性地解决问题。。。

  • 发现其中有个错误是运行的android的平台版本编号id无效。
    技术图片

  • 使用 android list targets 查询android版本编号,将代码中原来的17更改为29
    技术图片

  • 更改后再次运行,发现如下问题:没有ABI,然后在命令行使用命令 android sdk 打开 Android SDK Manager ,然后选择安装ABI,注意:下载时必须下载带有system image的项目,不然创建AVD时就会报如下的错误。参考
    技术图片

  • 下载完成之后再次运行,又出现了问题。。。
    技术图片

  • 查看了这篇文章,说是要添加前缀,就是下图红色框框中的:
    技术图片

  • 添加之后可以运行啦!
    技术图片

  • 运行的过程中会出现类似以下这样的问题,我就照着在相应的位置(运行卡住的模块后面)添加对应的模块,一共添加了如下九个模块(猜测可能是因为修改了android的平台版本编号导致)。
    技术图片
    技术图片
    技术图片
    技术图片
    技术图片
    技术图片
    技术图片
    技术图片
    技术图片

  • 使用命令 android list avd 查看新创建的AVD,发现错误 The following Android Virtual Devices could not be loaded
    技术图片


2020.5.5

  • 查了好多资料,说这个问题的原因是Android Studio安装和Sdk的安装位置不在同一个盘符下面,还有就是ANDROID_AVD_HOME这个环境变量要是SDK目录,然后我修改了环境变量,整体的环境变量如下:
    技术图片

  • 之后再次运行make_device.py,没抱希望的情况下,居然成功啦!老泪纵横o(╥﹏╥)o
    技术图片
    技术图片

  • 不过马上又有了新的问题,执行命令emulator -avd y 运行刚刚创建的avd:
    技术图片

  • 参考这篇博客,将 /Android/ubuntu/Android/Sdksystem-imagesandroid-27google_apisx86 目录下的“kernel-ranchu-64” 文件改名为 “kernel-qemu”,然后重新 start 虚拟机
    技术图片

  • 居然告诉我设备上没有空间。。。

  • 累到没有骂人的力气。。

  • 来看一下上面是warning:

emulator: WARNING: System image is writable
  • 说明启动可写方式成功,但此时terminal处于等待状态,无法再进行操作,如果关闭当前terminal,打开的模拟器也会随之关闭。所以需要再重新打开一个terminal进行后续操作。
emulator: WARNING: Classic qemu does not support SMP. The hw.cpu.ncore option from your config file is ignored.
  • 更新sdk tools,不过我更新之后还是不行

2020.5.30

  • 没有 intel atom system image 这一项,刷新后也仍然没有:大概是连接不到官网更新的问题。
    技术图片
    技术图片
  • SDK需要使用国内镜像地址更新,但是我把这里的镜像都试过了,都不行,后来开了一个代理,地址 127.0.0.1 ,端口 10809 。然后提权了一下居然可以了!!!感恩!!

运行程序

检查试验环境

技术图片

参考文献














































以上是关于论文复现的主要内容,如果未能解决你的问题,请参考以下文章

Vision Transformer(ViT)论文解读与代码复现(基于paddle框架)

FCOS论文复现:通用物体检测算法

一文详解ATK Loss论文复现与代码实战

一文详解ATK Loss论文复现与代码实战

论文复现:模拟风电不确定性——拉丁超立方抽样生成及缩减场景(Matlab全代码)

论文复现:模拟风电不确定性——拉丁超立方抽样生成及缩减场景(Matlab全代码)