-1

我正在尝试将图像数据集转换为 LMDB 格式以用于 Caffe,并且我需要调用 convert_imageset 函数以从 Matlab 内部应用此转换。

我正在使用 Linux,并且我创建了一个 shell (.sh) 脚本,其中包含运行转换所需的参数。这是我的 shell 文件的示例:

GLOG_logtostderr=1 /usr/local/caffe-master2/build/tools/convert_imageset -resize_height=256 -resize_width=256 images_folder data_split/train.txt data_split/dataCNN_train_lmdb

当我像这样从终端运行我的脚本时:

./example_shell.sh

它可以正常工作。但是当我尝试使用该system()函数从 Matlab 执行此操作时:

system('./example_shell.sh')

似乎无法打开/找到我的文件,导致 train.txt 中的每个图像出现以下错误:

I0917 18:15:13.637830 8605 convert_imageset.cpp:82] A total of 68175 images.
I0917 18:15:13.638947 8605 db.cpp:34] Opened lmdb data_split/dataCNN_train_lmdb
E0917 18:15:13.639143 8605 io.cpp:77] Could not open or find file ...
E0917 18:15:13.639143 8605 io.cpp:77] Could not open or find file ...
E0917 18:15:13.639143 8605 io.cpp:77] Could not open or find file ...

以下是 train.txt 文件中的一些示例行(不要介意 0,它们只是虚拟标签):

/media/user/HDD_2TB/Food_101_Dataset/images/beef_carpaccio/970563.jpg 0
/media/user/HDD_2TB/Food_101_Dataset/images/chocolate_mousse/1908117.jpg 0
/media/user/HDD_2TB/Food_101_Dataset/images/cup_cakes/632892.jpg 0
/media/user/HDD_2TB/Food_101_Dataset/images/garlic_bread/1498092.jpg 0
/media/user/HDD_2TB/Food_101_Dataset/images/ceviche/3115634.jpg 0

它们是绝对路径,所以应该没有问题。

您对可能发生的事情的任何想法都可能对我很有帮助!

谢谢,

马克

4

1 回答 1

0

我无法使用 Matlab 解决特定问题,但我设法通过使用 .txt 文件进行通信来完成以下(奇怪的)解决方法:

  1. 从 Python 调用主要的 Matlab 程序。
  2. 检查 Matlab 何时需要调用./example_shell.sh脚本。
  3. Python 进行转换调用./example_shell.sh
  4. Matlab 执行继续。
于 2015-09-21T10:20:25.867 回答