训练结束来个短信通知

简介

训练要跑几天几小时,总不能时不时去看输出进展到哪一步了,心有旁骛,就不能专心看论文了。

现在好了,给自己的框架添上一个短信通知功能,在训练结束时得到第一手资讯,再也不用时不时的关注训练进度了。

本文实现的功能是基于Twilio提供的SMS功能。

Twilio是一个免费的SMS网关服务,在官网注册后可以使用程序向登记过的电话号码发送短信。

Twilio提供试用账户包含一个电话号码,将作为短信的发送者。

同时,Twilio发送短信的接收者只能是验证过的号码,一般来讲就是自己注册时验证账户用的手机号码。

注册和使用都很简单,分三步走:

  1. 注册账户,获取必要的账户信息和Token信息
  2. 测试短信发送接收
  3. 将该功能作为模块添加到自己的训练框架中

注册获取权限

  1. 官网注册账号。
  2. 验证自己的手机号。
  3. 创建一个Account Notifications project。
  4. 进入控制台(Console)。
  5. 进入PhoneNumer那一栏,也就是有个大大的#标志的那一栏。
  6. 通过Apply New Number,获取一个Twilio给的虚拟号码,改号码就是用来作为短信的发送者的。
  7. 收集必要信息。包括
    1. ACCOUNT SID
    2. AUTH TOKEN
    3. 自己的号码,用于接收短信
    4. Twilio Number:申请的Twilio号码,用于发送短信

这些信息可以在以下图示区域中找到。

AUTH

Twilio_2

Twilio_3

测试短信发送

安装Twilio 模块

1
pip install twilio

编程测试

代码如下(test.py):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# coding=utf-8
from twilio.rest import Client

# 填写自己信息
accountSID='ACbxxxxxxxxxxxxxxx353fd7b3'
authToken='2xxxxxxxxxxxxxxx97008'
myNumber='+861xxxxx0'
twilioNumber='+1xxxx2918'

def textmyself(message):
twilioCli = Client(accountSID,authToken)
twilioCli.messages.create(body=message,from_=twilioNumber,to=myNumber)

textmyself("快学习啊")

运行文件:python test.py,可以收到一条短信,如下图:

短信

添加至训练框架中

  1. 模块代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# coding=utf-8
from twilio.rest import Client

# 填写自己信息
accountSID = 'ACbxxxxxxxxxxxxxxx353fd7b3'
authToken = '2xxxxxxxxxxxxxxx97008'
myNumber = '+861xxxxx0'
twilioNumber = '+1xxxx2918'


class sms_notification(object):
def __init__(self):
self.twilioCli = Client(accountSID, authToken)

def sendMessage(self, message):
self.twilioCli.messages.create(body=message, from_=twilioNumber, to=myNumber)
  1. 在训练用的配置表中,添加一个选项。SMS_NOTIFICATION: True/False。
    比如在我用的maskrcnn_benchmark中,在配置表中添加如下:

notification

  1. 在框架代码中,在程序初始化时添加模块的初始化,在训练结束时发送完成信息。可以如下

demo

简单介绍到这里,其实还可以在此基础上继续DIY,比如训练过程中的重要信息,训练结束的测试结果等,也可以作为短信通知的内容。

参考