注意:这不是一篇教程,而是一个学习者的记录。
- 最终使用了virtualenv的方式(遵循了tf官方的文档的推荐),但个人感觉使用native的pip方式应该更顺利。
- 卸载掉了anaconda并重新使用pip方式安装了jupyter notebook。
- 通过修改~/.bash_profile才使得jupyter notebook起作用;jupyter notebook --notebook-dir=/Users/testUser/Desktop/yourdir/ 改变notebook打开的目录。jupyter notebook --help可以查看支持的命令。
- 使用了自带的python2.7进行了安装(此前尝试3.x遇到了一些包和版本兼容的问题未能一一解决,为了最简化最终选择了2.7,tf文档里面有很多默认的选项)。
- 安装了tf1.10版本。
- object detection api里面有行代码需要注释掉:
#if tf.__version__ < '1.4.0':
# raise ImportError('Please upgrade your tensorflow installation to v1.4.* or later!')
复制代码
通过日志打印显示这里的版本正常,为'1.10.0',但这里判断却是小于(判断逻辑有错误),可能是python2.7的bug还是什么原因,这里确认自己版本没问题就简单注释掉就ok(没有深究,对python比较了解的同学可改之)。
- 这个notebook有两个地方可以定制,可以下载图片到test_images文件夹下,代码里有一处要修改图片的数量;另外一个地方就是加载model的逻辑,可以下载自己需要的model放到目录下,MODEL_NAME=你的model的文件夹名字就可以了。
8.我这里尝试了3种模型,分别是ssd_mobnetv1、ssd_resnet50、faster_rcnn_incept_res_v2。其中前面两个是ssd的一阶段方法,后面那个基于region proposal的二阶段方法。结果显示2阶段方法的性能优势明显,1阶段方法差异不大。但2阶段耗时5-10倍左右,模型大小也超过mobnet的5倍以上。具体使用需要在满足应用限制条件的情况下(模型大小不超过xx,预测速度不超过xx毫秒)再选择性能较好的模型,并在其基础上进行训练和超参数调节。