win10搭建cntk环境并使用fastRcnn实现目标检测
准备阶段,在这里我是基于anaconda进行安装的,所以首先去anaconda官网下载anaconda3,最好下载anaconda3,因为听说numpy库貌似不支持python2了,官网上有三个版本,windows,linux以及mac版,我们下载windows版即可,链接如下:https://www.anaconda.com/download/。接着下载cntk的工具包,在这里需要强调的是,我觉得貌似微软的文档有bug,因为首先下载的是cntk2.2的版本,但是在实现目标检测时,总是出错,我尝试着安装了四五遍,都一样的结果,总是提醒没有fastRcnn.utils.Cython,可是自己明明都安装了Cython这个库,有哪位网友安装好cntk2.2版本的并使用FasterRcnn实现目标检测的而不是fastRcnn的欢迎与我交流。最后没办法只好下载cntk2.0版本的,2.0版本的不支持fasterRcnn。链接如下:https://github.com/Microsoft/CNTK/releases。
安装阶段:anaconda是傻瓜是的安装,安装过程中不能改变路径,安装完成在命令行输入conda命令测试即可,出现如下画面表示安装成功。当然安装不成功的情况我也出现过,哈哈。
完成anaconda的安装之后,需要配置cntk的环境变量,将下载的cntk压缩包进行解压,然后配置环境变量,步骤如下:
右击我的电脑,属性,高级系统设置,环境变量,将上面的路径添加到path中即可,跟配置其他的环境变量一样。配置完再命令行中测试一下,结果如下:
接着在命令行执行conda create --name cntk-py35 python=3.5 numpy scipy h5py jupyter,注意这里我选的是python3.5,你也可以选择python3.4都可以
执行这行命令,系统会下载很多包,我们等待即可。完成之后,利用activate cntk-py35**cntk。因为我已经安装,所以我只截一个**命令窗户,如下:
如果你安装的是python3.4,那就**cntk-py34.接着我们用pip安装cntk的包,注意pip是你在安装anaconda的时候自带的。命令如下:
pip install https://cntk.ai/PythonWheel/CPU-Only/cntk-2.0-cp35-cp35m-win_amd64.whl 注意这里是cntk2.0版本,跟我们先前下载的cntk2.0版本相对应,还有cp35也跟python3.5对应,不能错,错了万劫不复,哈哈。具体可以看微软给的官方文档,这是链接:https://docs.microsoft.com/en-us/cognitive-toolkit/Setup-Windows-Python?tabs=cntkpy20。
至此,cntk的环境搭建完成,但是实现我们的目标检测还没完。首先进入我们刚刚下载的cntk的fastRcnn目录如下:
然后在这目录下,执行python install_fastrcnn命令,执行此命令,会下载一个Alex.model的网络模型,它是用来做预训练的,如下因为我已经下载好了,它会显示已存在。
然后进入C:\cntk\Examples\Image\DataSets\Grocery,下载相应的数据集。
接着进入C:\cntk\Examples\Image\Detection\FastRCNN,目录执行pip install -r requirements.txt,这是在下载相应的库文件,如果在后面之执行的时候,总是报no moudle named xxx,则表示库没有安装成功,此时我们执行 pip install xxx,正常情况下是这样,还有不正常的,比如no moudle named past,这个时候我们执行pip install future,哈哈。
接下来安装opencv库和scikit-image库,同样用pip命令进行安装即可。但是如果总是安装不成功的话,也可以进入到python库官网下载,注意此时,一定要下载与python版本对应的库。链接如下:https://www.lfd.uci.edu/~gohlke/pythonlibs/,下载后,在该文件目录下执行 pip install 库的全名。如pip install scikit_image-0.13.1-cp35-cp35m-win_amd64.whl。
这里我需要强调的是,cntk2.0版本真的有bug,因为里面有很多文件丢失,或者移到另外的目录下,然后还有下载的预训练的网络模型总是有问题,并且技术文档说得也不是很清楚,所以我才装的cntk2.0,但是cntk2.0版本不支持fasterRcnn。
以上用于做目标检测的所有准备工作已经完成。
接着我们就可以处理数据了。这里就不想详细赘述了。在fastRcnn目录下,按顺序执行以下命令即可。
python A1_GenerateInputROIs.py
python B1_VisualizeInputROIs.py
python B2_EvaluateInputROIs.py
python A2_RunWithBSModel.py 此命令就是在训练我们自己的网络,如果在cpu上,可能需要一个多小时。
python B3_VisualizeOutputROIs.py 这里就可以看到我们的结果了。
我们还可以在自己的数据集做实验,来进行目标检测或者分类,因为fastRcnn是把目标检测和分类一起做了的。可以参考以下链接:
https://docs.microsoft.com/en-us/cognitive-toolkit/Object-Detection-using-Fast-R-CNN
最后秀一下小哥自己做得实验。
同时,如果了解深度学习的话,我们调整网络的一下参数。比如minibatch,epoch,learningrate等,当然啦这是后话了。