最近一直在做边缘检测。检测结果好坏的评价指标是ODS,OIS,AP等一系列数据。基于深度学习的边缘检测,主要包括三个部分:在train set上训练神经网络并保存结果、在test set上得到边缘图片、使用大神开发的工具计算出ODS等指标。 通常,前两项是基于python的,后一项需要在matlab上进行。而一般神经网络的训练是十分耗时的(我的是8小时),且在matlab上跑的检测程序也一般需要2小时,所以我安排在让代码在晚上睡觉期间跑,第二天早晨来实验室后,再用matlab算ODS。
那么,问题来了,晚上我22:30撤,早上8:30->来,期间的时间是10小时,等我来了后再测试ODS2小时,总共就浪费了4小时。如何才能充分利用这段时间呢?
之前一直没有思考这个问题,今天尝试解决。很简单,就是在shell脚本里面加上调用matlab的行就行了。
sh training.sh
sh testing.sh
cd matlab_path
matlab -nodisplay -r auto_run
可能需要解决的问题
- 命令行启动matlab
有两种方法:(1)在~/.bashrcc中添加matlab的路径
export PATH=/home/sofrware/matlab_2016b/bin:PATH
(2) 建立上文路径下下,matlab
文件的软链接
sudo ln -s /home/sofrware/matlab_2016b/bin/matlab /usr/local/bin/matlab
- 命令行中运行
.m
文件
Matlab的启动选项具体可以看这里,-r
就是运行.m
文件。在计算ODS时需要运行两个.m
文件,就是为了做nms和edge_eval。所以可以写一个.m
文件,包含以下内容:
run HED_nms.m
run start_test.m
display('Testing Done!')
exit()
然后走人,第二天看结果。
=================================
好多人在问ODS等指标的计算,可以参考大佬的:
https://github.com/yun-liu/plot-edge-pr-curves