Skip to main content

· 2 min read
PommesPeter

需求场景

最近需要在 shell 脚本进行一些 CLI 交互式操作(指在脚本中输入文字或回车等操作),经过调研发现可以使用 expect 脚本实现,通常以 .ex.exp 结尾。(与 shell 脚本有区别)

Linux expect 脚本

expect 是建立在 tcl 基础上的一个自动化交互套件, 在一些需要交互输入指令的场景下, 可通过脚本设置自动进行交互通信. 其交互流程是:

启动流程

spawn 启动指定进程 -> expect 获取指定关键字 -> send 想指定进程发送指定指令 -> 执行完成, 退出.

expect 用法

安装 expect

通常 linux 系统不会自动安装 expect 脚本,故需要自行安装,需要安装 tclexpect 两个包,Ubuntu 下的安装指令为:

sudo apt install tcl expect

expect 关键字

  • spaw: 启动新的交互进程, 后面跟命令或者指定程序
  • expect: 从进程中接收信息, 如果匹配成功, 就执行 expect 后的动作
  • send: 向进程发送字符串
  • send exp_sen: 用于发送指定的字符串信息
  • exp_continue: 在 expect 中多次匹配就需要用到
  • send_use: 用来打印输出 相当于 shell 中的 echo
  • interact: 允许用户交互
  • exit: 退出 expect 脚本
  • eof: expect执行结束, 退出
  • set: 定义变量
  • puts: 输出变量
  • set timeout: 设置超时时间

样例

本例为在无法设置 ssh-key 的情况下向 ssh 进程中输入密码。

#!/usr/bin/expect

set timeout 30
spawn ssh -l root 172.16.22.131
expect "password*"
send "123456\r"
interacts

解读:

  1. set timeout 30: 设置 30s 的 timeout
  2. spawn ssh -l root 172.16.22.131: 创建一个 ssh 进程,并执行 ssh
  3. expect "password*": 执行完 2 后期望 (expect) 拿到的控制台输出
  4. send "123456\r": 向终端输入流发送 "123456\r",其中 \r 表示回车
  5. interacts: 表示应用上述的交互

more cases comming soon...

· One min read
PommesPeter

Resistance Training using Prior Bias: toward Unbiased Scene Graph Generation

Chao Chen / Yibing Zhan / Baosheng Yu / Liu Liu / Yong Luo / Bo Du
Abstract
Scene Graph Generation (SGG) aims to build a structured representation of ascene using objects and pairwise relationships, which benefits downstreamtasks. However, current SGG methods usually suffer from sub-optimal scene graphgeneration because of the long-tailed distribution of training data. To addressthis problem, we propose Resistance Training using Prior Bias (RTPB) for thescene graph generation. Specifically, RTPB uses a distributed-based prior biasto improve models' detecting ability on less frequent relationships duringtraining, thus improving the model generalizability on tail categories. Inaddition, to further explore the contextual information of objects andrelationships, we design a contextual encoding backbone network, termed as DualTransformer (DTrans). We perform extensive experiments on a very popularbenchmark, VG150, to demonstrate the effectiveness of our method for theunbiased scene graph generation. In specific, our RTPB achieves an improvementof over 10% under the mean recall when applied to current SGG methods.Furthermore, DTrans with RTPB outperforms nearly all state-of-the-art methodswith a large margin.

Motivation

  • 使用 resistance bias 为了加强联系关联性差距比较大的两个关系的能力
  • 使用 dual Transformer 加强对于关系的识别的全局上下文的特征,使得编码器编码的特征信息更充分

· 5 min read
PommesPeter

当你阅读一篇研究论文时,你的目标是了解作者的科学贡献。这不是一项容易的任务。这可能需要把这篇论文看好几遍。准备花几个小时读一篇论文。