Vast-stars' Blog

机器学习/算法/


  • 首页

  • 归档

  • 标签

Cambridge Summer Programme

发表于 2017-09-06 | 阅读次数

剑桥暑期游学心得

今年暑假我有幸参加了剑桥游学项目,不但认识结交了一群有趣小伙伴,还体验了原汁原味的剑桥生活与英国文化,感受颇多。本篇博文主要分为两部分:一是日程安排以及活动详情,二是心得体会。


一 日程

1.1 日程安排

00010002

1.2 课程

既然是游学项目,“学”自然必不可少。本次项目中共有4门课程,分别是纳米技术(Nanotechnology, 3课时 + 1课时观赏)、应用信息论(Applied Information Theory,2课时+Presentation)、可再生电能(Renewable Electrical Power 2课时)、莎士比亚和英文诗(Shakespeare & English Poetry 2课时),每课时3小时。以下分别介绍。

1.2.1 Nanotechnology

上的第一门课。以科普介绍为主。从物理学史发展开始入手,逐步引入纳米尺度,然后开始介绍纳米技术——这是一类技术的总称,没有很严格的界定。纳米技术也是各个领域都频繁交叉使用的技术,最常见的如材料、生物、能源、半导体工业等都大量使用了纳米技术。

课程对专注力、听力要求较高。跟不上的话很容易犯困o(╯□╰)o。老师人很有意思,联想发散无所不谈,比如吐槽了伦敦(英国?)政府打算在2040年禁止非电动汽车……从剑桥镇雨后的颗粒物到羡慕中国学生几乎没有过敏的……当然还有很多想不起来了,回头得翻翻教材和笔记……

晚上是助教(他手下读博的一个中国男生)来和我们聊天~真的超级棒!因为是同胞又都是电子领域的同志(这批去的几乎全是电院的),他和我们介绍了半导体的生产工艺概述、目前行业发展情况(恰好暑假IBM做出5nm的三极管,学长一直在佩服),后边部分几乎全是问了下读硕读博(尤其是英国高校),总结一下:门槛高、费用高、压力小、毕业快(硕士只要一年多)。就业环境也不错,不过学长还是有考虑回国助力国内半导体工业的发展……

最后一节是展示课,教授还真把贵重的AFM(原子力显微镜)搬到教室(他笑称是这个设备工作过环境最恶劣的地方了)。我也觉得出乎意料,因为这种高精尖的玩意走在路上损坏了不说,拿到教室来常温下精度也差的没法用了吧(原子做高速热运动还怎么观测)……不过还是大饱眼福了。

1.2.2 Applied Information Theory

第二门也是压力最大的一门。。。一个presentation把我们都虐成狗……先空着不写……内容太多了我得好好理一理

1.2.3 Renewable Electrical Power

无力吐槽的一门课。(几乎)学不到什么东西。。然后作业是把一道小学应用题加各种约束加各种条件然后玩出花来的既视感。。其实就是个二元函数的求最小值问题,只不过中间计算层和规则比较多。真·无话可说。最让我震惊的是老师做科学计算是用Excel,而且这个二元函数求最小值是靠手动调整搜索试出来的…………一个工科的教授不会不知道多元问题优化啊,难道他是临时随便做了个非专业方向的课程准备就来和我们上课了?还是说觉得中国学生理解不了这个问题的本质(EXO ME???)

总之,这门课,我给差评!

1.2.4 Shakespeare & English Poetry

这下算是管中窥豹、见识到了西方全面的素质教育了。虽然才2节课,但却是分别由2个老师来上的(他们还是一对夫妻,ORZ),妻子第一节课教Shakespeare丈夫之后教英文诗。教的非常非常非常非常好!而且口语、听力要求特别特别低,互动性太强(我在国内就还没上过这么互动的课),上着很有趣很高兴。课程虽短但也五脏俱全,我们每个组还演了一个小短剧(太欢乐了),但也算是入了门(有能力自行从不同方面欣赏体会莎士比亚作品)。

这门课强烈安利!

TensorFlow SequenceExample用法

发表于 2017-06-04 | 阅读次数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
def generate_TFrecord_SequenceExample2(files_list,labels_list,to_file="train.tfrecords"):
"""
待测试。生成一个TFrecord文件
:param files_list: 文件列表。
:param labels_list: 和文件列表对应的标签列表。
:param to_file: 写入目标TFrecord文件
:return: NULL
"""
def make_example(sequence, labels):
# The object we return
ex = tf.train.SequenceExample()
# A non-sequential feature of our example
#sequence_length = len(sequence)
#ex.context.feature["length"].int64_list.value.append(sequence_length)
# Feature lists for the two sequential features of our example
# fl_imgs = ex.feature_lists.feature_list["imgs"]
# fl_labels = ex.feature_lists.feature_list["labels"]
fl_imgs = ex.feature_lists.feature_list["imgs"]
fl_labels = ex.feature_lists.feature_list["labels"]
for img, label in zip(sequence, labels):
fl_imgs.feature.add().bytes_list.value.append(Image.open(img).tobytes())
fl_labels.feature.add().int64_list.value.append(label)
return ex
writer = tf.python_io.TFRecordWriter(to_file)
for sequence, label_sequence in zip(files_list, labels_list):
ex = make_example([sequence], [label_sequence])
writer.write(ex.SerializeToString())
writer.close()

参考:

  • 官方文档:tf.train.SequenceExample
  • Google开源项目magenta中的例程
  • TensorFlow SequenceExample范例
  • sequence_example.ipynb

TensorFlow Example

发表于 2017-06-04 | 阅读次数

测试环境:Windows 10 ; TensorFlow 1.1

测试样例:输入是30张128*128 jpg格式图片,大小96.4KB;标签是[0:30]

第一种:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def generate_TFrecord(files_list,labels_list,to_file="train.tfrecords"):
"""
生成一个TFrecord文件
:param files_list: 文件列表,例如 ['1.jpg','/dataset/2.jpg']
:param labels_list: 和文件列表对应的标签列表,例如[0,4]
:param to_file: 写入目标TFrecord文件
:return: NULL
"""
writer = tf.python_io.TFRecordWriter(to_file)
for (file,label) in zip(files_list,labels_list):
img = Image.open(file)
img_raw = img.tobytes() #转成byte
example = tf.train.Example(features=tf.train.Features(
feature={
"label": tf.train.Feature(int64_list=tf.train.Int64List(value=[label])),
'img_raw': tf.train.Feature(bytes_list=tf.train.BytesList(value=[img_raw]))
}))
writer.write(example.SerializeToString())#写入TFrecord文件
writer.close()

生成TFrecord大小:1.40MB


第二种:

直接用数组形式存下每个像素的值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def generate_TFrecord2(files_list,labels_list,to_file="train.tfrecords"):
writer = tf.python_io.TFRecordWriter(to_file)
for (file,label) in zip(files_list,labels_list):
img = Image.open(file)
#img_raw = img.tobytes() #转成byte
img_raw = (numpy.array(img).reshape(-1).tolist())
example = tf.train.Example(features=tf.train.Features(
feature={
"label": tf.train.Feature(int64_list=tf.train.Int64List(value=[label])),
'img_raw': tf.train.Feature(int64_list=tf.train.Int64List(value=img_raw))
}))
writer.write(example.SerializeToString())#写入TFrecord文件
writer.close()

测试结果:1.79MB


第三种

使用tf.train.SequenceExample代替tf.train.Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def generate_TFrecord_SequenceExample(files_list,labels_list,to_file="train.tfrecords"):
writer = tf.python_io.TFRecordWriter(to_file)
for (file,label) in zip(files_list,labels_list):
img = Image.open(file)
img_raw = img.tobytes() #转成byte
feature_input=tf.train.Feature(bytes_list=tf.train.BytesList(value=[img_raw]))
feature_label= tf.train.Feature(int64_list=tf.train.Int64List(value=[label]))
feature_list_input= tf.train.FeatureList(feature=[feature_input])
feature_list_label=tf.train.FeatureList(feature=[feature_label])
feature_list = {
'imgs': feature_list_input,
'labels': feature_list_label
}
feature_lists = tf.train.FeatureLists(feature_list=feature_list)
example= tf.train.SequenceExample(feature_lists=feature_lists)
#以上语句等同于下面3行。
# example=tf.train.SequenceExample()
# example.feature_lists.feature_list["imgs"].feature.add().bytes_list.value.append(img_raw)
# example.feature_lists.feature_list["labels"].feature.add().int64_list.value.append(label)
writer.write(example.SerializeToString())#写入TFrecord文件
writer.close()

测试结果:1.40MB

2017上海交大Hackthon活动有感

发表于 2017-05-10 | 阅读次数

img

首先,很有幸能参加今年的Hackthon活动。以下是比赛过程和一些感想。

5月5日19点开始开幕式,请到了IBM、NVIDA、英语流利说、青云的代表发言。不但说到技术-创新也关系,也谈了从市场、用户角度看待一个新技术新产品。开幕式完成后就是现场组队环节。我很幸运之前在线上认识了几位来组不同高校的研究生学长学姐,在一起简单自我介绍相互认识之后就开始头脑风暴构思、策划方案。

根据SJTU×HACK官网的介绍 :

此项活动将通过借助各家企业开源的API(Application Programming Interface)和SDK(Software Development Kit),以此为学生们提供在短时间内开发软件和硬件的竞赛平台,最终来促进学生们充分地利用所学的科技开发技能去完成设计插件或搭建各类应用项目的雏形。

而本次比赛各提供的赞助主要有:

  • IBM: Bluemix、Watson、PowerAI、Apach OpenWhisk
  • SenseTime(商汤科技):人脸技术SDK、手势、人脸技术SDK、人脸技术API
  • NVIDIA: 搭载强力GPU的小车、嵌入式开发平台等。
  • 英语流利说:语音识别以及打分API
  • 青云:容器、VPS等

奖项设置方面,主办方会评选出第1、2、3名,上述4个赞助商加上Github分别再根据团队使用API的情况评出各自奖项。

考虑到这些比赛规则,我们首先想到的就是NVIDIA的小车任务(在提供的小车上跑起图像识别,驱动车轮完成指定动作即可),然而晚了一步已经没小车了。那只能从软件角度考虑,可供挖掘的主要是商汤科技和流利说的API,一个是图像(人物)识别一个是语音处理(从最后作品来看多数团队思路也和我们一样)。

再进一步细分、讨论我们做一个基于图像的多目标识别、面部数据统计相关的程序,顺便加上语音输入、输出等。由于赞助商提供的API直接就能给出检测后的结果,所以我们分工:一边调用API,一边做Web前后端。我负责调用英语流利说的在线API
(福利:这个API在赛后不会回收,且不需要权限验证)。第一次接触Pocp library,误当做Socket处理(实际上是web socket),在Python浪费了不少时间。还好最终按时完成。这里必需吐槽一下英语流利说给出的API和文档,README一看就是仓促之下完成的,给出的web demo在比赛期间也还中断了一天。另外商汤科技的SDK也是有点乱(看上面就知道),果断调用在线API是个明智的选择。至于前后端开发我没参与,十分佩服学长学姐能在短时间内用Python完成一个站点,还有一个简洁却不失优雅的UI。

因为我们做的东西比较简单,工作量是比较少的,成型速度快,但实际应用场景也着实有点尴尬:最早想的是在教室检测学生的表情,通过犯困、低头等判断这节课的质量以及学生学习情况。做到一半突然发现另外一个队也和我们想的基本一样,于是我又绞尽脑汁想了个公共场合反恐。。实际上通过测试发现,商汤科技对人脸属性的精确判断需要高分辨率的正面人脸信息,如果实际应用不论是哪种场合都需要前期图像的预处理以及对视频流的优化处理算法。

总得来说,这次Hackthon活动处处是企业的身影,商业气息过于浓厚,创意 > 技术;各类公司提供一些API/SDK,而参赛选手则开脑洞,实现一个新的产品或者拓宽此类技术的适用面。

另外组队可以认为是此类活动的另一个决定性因素了。每个人的技术栈千差万别,而要在短短36小时内开发出一套完整的系统就必须要求每人都高效工作、无缝衔接; 要是团队已经经历过磨合那自然事半功倍,而一群陌生人临时组成的队伍无论在沟通交流还是开发实现上都要额外花费精力和时间。另外值得一提的是,研究生多为个人参赛,而本科生则有不少三五成群来参赛的(尤其SJTU本校)。或许是本科生时间精力充裕的缘故吧。

另外上交的环境是真心棒,电院群楼里面一大片的机房,不少学生深夜还守在机子旁,比我电(连开源社区都没地方呆、开放给学生的实验室少得可怜)不知道高到哪里去了。

下面是一些图片

上海交大:

img

img

比赛海报:

02

标配自行车专用道:

06

窄路上也有:(真心照顾学生)

05别人家的后勤部:

06

关于python生成gif图

发表于 2016-12-29 | 阅读次数

环境:Win10 x64 Python3.5/Pythom2.7

由于网上各种方案鱼龙混杂,正好顺带测试下。

(成功的方法在最下面,着急的可以直接看)

阅读全文 »

Win下Python3/2.7共存以及工作环境配置

发表于 2016-12-25 | 阅读次数

环境:Win10 x64 已安装Python3.5,pip以及Ipython和Pycharm。

因某些库只有py2.7的版本,于是开始配置2.7版本

阅读全文 »

HTTP Analyzer的Probably another instance is already up问题解决

发表于 2016-11-19 | 阅读次数

点击Start之后,弹出报错“Probably another instance is already up ,please don’t start me twice” 。

前几天一直没找到原因和解决方案,今天突然想起来可能是服务的缘故。遂打开计算机管理→服务,找到名称为HttpAnalyzerV7 NetFilter Service 的项,发现是手动开启,状态未开启。开启后,就不报错了。也是有点醉。

CentOS7.2 搭建OpenVPN 及 用户认证

发表于 2016-11-18 | 阅读次数

第一部分: 搭建

环境:Azure OpenLogic(CentOS) 7.2 64位
OpenVPN版本:
OpenVPN 2.3.12 x86_64-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Aug 23 2016

主要参考教程:https://www.phpini.com/linux/centos-7-install-openvpn-server

安装过程中出现了一些问题,记录如下:

阅读全文 »

CentOS 6 搭建 Nginx+Hexo全过程

发表于 2016-11-04 | 阅读次数

辛辛苦苦搭好的博客,纪念一下搭建过程吧。希望他人搭建的时候更加轻松

(假定读者能基本使用Linux)

总共分3部分:

第一部分,最早搭建在Azure上,Git+Nginx+Hexo 。

第二部分,将站点迁移到Github Page上的过程。

第三部分,Reference(Hexo基本操作)

阅读全文 »

关于蓝牙模块(HC-06)

发表于 2016-10-16 | 阅读次数

关于如何与Arduino接线、进入AT模式,请看:http://swf.com.tw/?p=712

这是HC-06所有AT指令(网上参考资料或多或少会漏,这是我整理比较齐全的)

阅读全文 »
123
Vast-Stars

Vast-Stars

或许是不知梦的缘故,游离之人追逐幻影 https://github.com/vast-stars vast2stars@gmail.com

24 日志
26 标签
© 2018 Vast-Stars
由 Hexo 强力驱动
主题 - NexT.Mist