2018年7月20日 第一天
- 成功安装Android Studio及其Android SDK,并将GitLab上的androidAudioRecg[1] 项目下载并安装到提供的Android平板上。
- 以自己为声源,对androidAudioRecg项目所需的训练集进行了扩充
- 初步了解了PYNQ的使用方法,尝试编写了一个LED灯计数的程序并进行了烧写
2018年7月23日 第二天
- 进一步熟悉了对PYNQ的操作,通过外界模块实现了对光强的测量
- 初步接触opencv,将样例程序烧写至PYNQ,实现了对图像的捕捉和人脸检测
- 安装opencv和python-opencv,并简单地进行了图像识别的尝试
以开源图片训练集[2]中的100张犀鸟图片作为正样本,[3]中截取的300图片作为负样本。根据要求,所有正样本通过PhotoShop批处理变为长宽比一致的矩形。
使用opencv自带的opencv_createsamples命令和opencv_traincascade(opencv_haartraining未成功使用)命令,具体参数为:
opencv_createsamples: -num 100 -w 60 -h 60
opencv_traincascade: -numPos 40 -numNeg 600 -numStages 5 -w 60 -h 60 -minHitRate 0.98 -maxFalseAlarmRate 0.5 -weightTrimRate 0.95 -maxDepth 1 -mode ALL
尝试中发现正样本图像的规格达到150*150像素时,训练过程无法正常进行(磁盘迅速被占用),故最后使用100张60*60像素的正样本,并参考网上建议使用了300张负样本。实际上训练过程中-numPos参数仍然过大,使得训练两级后正样本即使用完毕,训练结果并不理想。
训练测试结果如下,可见其可以在某些情况下实现对“鸟类”(而非犀鸟)的识别,但仍会出现极大误差(甚至无法识别犀鸟)。
|
|
|
- 后期进一步查阅资料,[4]中指出一个较好的训练集需要1000各左右的正样本和2000各左右的负样本。正样本不应当有相似背景,推荐训练层数为14~25层(我的训练过程在第三层就出现虚警无法继续)。文章举例一个可用的人脸分类器在Pentium 2.7GHZ 2GB RAM处理器上训练了6天。
- 进一步尝试训练参数,然而由于样本过少,训练结果依然不理想。
2018年7月24日 第三天
- 参观公司。
实际上该公司给我的感觉并不是很好。虽然一直说要作出TreeOS的操作系统,然而听上去产品更像是一个单片机的IDE罢了。更何况对比与赛灵思等大公司开发的单片机(如PYNQ),TreeOS更想通过支持更多类型的模块来实现更丰富的支持,这一思路在我看来是不可行的(何况居然还是闭源系统)。最主要的是,最终的产品展示在我看来也没有任何新颖之处,无非是一个插了很多传感器和通讯模块的单片机罢了。