CaPiano 基于 FPGA 和摄像头的现实增强钢琴

Queue 了一篇 CaPiano. 上午展示完. 人智课生产力低下. 把它 Dequeue 了罢. 这个项目的最初设想是造一个识别指尖的算法, 然后用它来弹钢琴并发出声音. 还有一个完全没有开动的二期工程是把它变成一个音游 / 录音机. 蓝图是美好的, 实现是丑陋的. 摄像头 过去一个半月的主要工作就是和这个 OV7670 (AL422B) 的摄像头做斗争. AL422B 是一个 DRAM 的 FIFO 队列, 通过巧妙地接 7670 和 422 的管脚可以实现把 422 作为 7670 的一个输出缓冲. 422 本来是用于简化这件事的. 在国外大学的 PA 文档里也是这么说的. 然而 422 这个东西最大的毛病就是没有 dataready 这个信号, 所以根本没法成功探索出什么时候可以读. 挣扎了很久之后我选择买了一个不带 422 的 7670. 7670 通过 SCCB 协议来进行配置, 有一些寄存器. 主要有用的是控制彩色的 12 和控制输出格式的 40. 本来想要 RGB565 加 QVGA 爽歪歪. 然而我的配置模块跑出来结果完全不对, 最后发现根本没设起. 降频到手工时钟都没有办法正常工作. 于是只好放弃, 使用默认的 YUV + VGA....

June 12, 2018 · 1 min · laekov

人智的另一个作业. 教你 30 分钟写完 MNIST 作业

教你 30 分钟写完 MNIST 作业 laekov 2018.05.20 Overview 题目要求 随便用什么框架去 Kaggle 上做手写数字识别的数据集. 你可以选择自己写一个框架. (谁爱写谁写) THU PACMAN 实验室最近在筹划写一个框架, 有兴趣的同学可以联系我. 最好多实现几个模型, 调调参, 写报告需要. 需要做的事 找一个框架 抄一遍 Tutorial 写一个处理数据 (csv格式) 的模块 写一个模型 写训练/验证/测试的东西 CNTK 框架 微软的框架. Python 文档见https://cntk.ai/pythondocs/index.html 安装. 见官网. pip, conda, install_cntk.exe 什么的都行. 略. 使用 CNTK 框架. import os import cntk as C import numpy as np 轻松愉快. 处理 CSV 数据格式 第一行不用管 1234567890,0,0,...,255,0 一行一张图, 第一个是数字, 后面是28x28个0-255的灰度值. 可以用 pandas 之类的又麻烦又难用的库. 不如自己写个小函数. def csv_reader(filename, batch_size = 1, is_test = False): with open(filename, 'r') as f: f....

May 18, 2018 · 3 min · laekov

LIRS Plus

最近在做一个 Cache 替换算法的 PA. 系统结构课. 给的 Baseline 是 2010 年的一个 championship. 看了看现在用得比较多的通用算法叫 LIRS. 在 LIRS 基础上想方法优化. 瞎搞的东西把单核 miss 率降低得有点 surprising. 还没有更多的 benchmark 测试. 感觉有点意思.

April 22, 2018 · 1 min · laekov

波的传输实验波形

断路负载波形 短路负载波形 匹配负载波形 纵波和深孔波形

April 15, 2018 · 1 min · laekov

人智作业展示, 手把手教写拼音输入法

这篇讲义都是五笔打的 laekov 2018.04.12 Overview 作业要求 写一个拼音输入法, 一行一行地读拼音, 输出对应的汉语句子 84: 两小时就能写完 给出的数据 GBK编码的拼音->汉字对应表 新浪新闻一年的文章 评分 基础2字模型 扩展3字模型 四字, 双词, 三词… 需要写什么东西 拼音 2 汉字的 map 快速查找某个字/词词频的 map 估值函数和 infer 的算法 训练数据处理 最常用的16位编码是utf-8, 但是 Python 默认是 ASCII 的 所以在程序第一行写上 # -*- coding:utf-8 -*- Py 内部的 u'一个字符串' 可以用来表示 unicode 格式的字符串. 但是好像用不到. 创建 pinyin to 汉字的 map 读 GBK 文件的最简单的方法 with open('somefile.txt', 'r', encoding = 'gbk') as f: for (lineno, content) in enumerate(f): dealWithALine(content) content 的格式 wo 窝 我 握 渥 (五笔党词穷了) python 自带分割 py2ch_map = {} def dealWithALine(c): d = c....

April 14, 2018 · 2 min · laekov

Lagrange插值, 三次样条插值和最小二乘拟合

看 paper 看烦了来贴点代码玩. Lagrange插值就是一个多项式乘. void genLagrangePoly(int n) { double *x = new double[n + 1]; double *y = new double[n + 1]; double *a = new double[n + 1]; double *tmp = new double[n + 1]; for (int i = 0; i <= n; ++ i) { x[i] = -5. + 10. / n * i; y[i] = f(x[i]); a[i] = 0; } for (int i = 0; i <= n; ++ i) { memset(tmp, 0, sizeof(double) * (n + 1)); tmp[0] = 1....

March 28, 2018 · 5 min · laekov

Strava heatmap and GPS

发现 strava 出了个 sport heatmap 的功能 于是去看了看 发现奥园有如下神奇现象 呵呵一笑 不说话

January 30, 2018 · 1 min · laekov

CST DS2017 PA3-3

PA3-3 题意 一堆字符串判循环相等 做法 最小表示法模板题 也可以直接 hash 不过最小表示了也得 hash. PA <= 常数优化实习. 可能会在这里贴代码.

December 6, 2017 · 1 min · laekov

Encode

Text Key Encode base64 Ceasar (needs key to be a number) Vigenere (needs key to be a string) MD5 SHA1

November 27, 2017 · 1 min · laekov

Logs on setting up Jupyter

最近在尝试搭 python 的数据分析的环境. 总结一下遇到的一些坑. 用的是 14.04 这个有点老的 ubuntu. nginx + jupyter jupyter 这个玩意的 web 写得不是很优美. 所以需要转发的地方蛮麻烦的. 本来想直接在 uri 里搞一下. 然后发现过于难受就放弃了, 重新配置了一个域名转发. nginx 的 server 配置里需要加这么一段. server { location ~* /(api/kernels/[^/]+/(channels|iopub|shell|stdin)|terminals/websocket)/? { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_pass http://127.0.0.1:8888; } } 其中有个Upgrade是这么定义的. http { map $http_upgrade $connection_upgrade { default upgrade; '' close; } sendfile on; } google 了几个配置文件才弄出这么一个能用的....

November 14, 2017 · 1 min · laekov