проблемы при использовании caffe (create_imagenet.sh) для конвертации моего jpg в lmdb - PullRequest
0 голосов
/ 01 июня 2018

Я хочу сделать тонкую настройку, чтобы тренировать мой JPG.Руководствуясь многими документами, я в основном изменил путь к данным, txt и инструменту в create_imagenet.sh следующим образом:

#!/usr/bin/env sh
# This script converts the mnist data into lmdb/leveldb format,
# depending on the value assigned to $BACKEND.
set -e

EXAMPLE=/home/sun/Documents/python/fine-tuning/Oxford102/data/test
DATA_TEST=/home/sun/Documents/python/fine-tuning/Oxford102/data/test/test/
DATA_TRAIN=/home/sun/Documents/python/fine-tuning/Oxford102/data/test/train/
NOTI=/home/sun/Documents/python/fine-tuning/Oxford102/data/test
BUILD=/home/sun/Documents/caffe/build/tools

#BACKEND="lmdb"

# Set RESIZE=true to resize the images to 256x256. Leave as false if images have  
# already been resized using another tool.  
RESIZE=true
if $RESIZE; then  
  RESIZE_HEIGHT=256  
  RESIZE_WIDTH=256  
else  
  RESIZE_HEIGHT=0  
  RESIZE_WIDTH=0  
fi  


if [ ! -d "$DATA_TRAIN" ]; then  
  echo "Error: TRAIN_DATA_ROOT is not a path to a directory: $DATA_TRAIN"  
  echo "Set the TRAIN_DATA_ROOT variable in create_imagenet.sh to the path" \  
       "where the ImageNet training data is stored."  
  exit 1  
fi  

if [ ! -d "$DATA_TEST" ]; then  
  echo "Error: TRAIN_DATA_ROOT is not a path to a directory: $DATA_TEST"  
  echo "Set the TRAIN_DATA_ROOT variable in create_imagenet.sh to the path" \  
       "where the ImageNet training data is stored."  
  exit 1  
fi  

echo "Creating train lmdb..."
GLOG_logtostderr=1 $BUILD/convert_imageset \
    --resize_height=$RESIZE_HEIGHT \ 
    --resize_width=$RESIZE_WIDTH \
    --shuffle \
    $DATA_TRAIN \  
    $NOTI/info_train.txt \  
    $EXAMPLE/img_train_lmdb  

echo "Creating test lmdb..."
GLOG_logtostderr=1 $BUILD/convert_imageset \
    --resize_height=$RESIZE_HEIGHT \ 
    --resize_width=$RESIZE_WIDTH \
    --shuffle \
    $DATA_TEST \  
    $NOTI/info_test.txt \  
    $EXAMPLE/img_test_lmdb

echo "Done."

Затем я запустил sudo sh create_oxford.sh в терминале, но ничего не получил.

результат выполнения в оболочке

Кроме того, моя структура документа выглядит следующим образом:

в / home / sun / Documents / python / Fine-tuning/ Oxford102 / data / test, я ставлю info_test.txt, info_train.txt, test (jpg для теста) и train (jpg для поезда).В тексте информация похожа на 'image_0001.jpg 0'.

1 Ответ

0 голосов
/ 06 июня 2018

1) Я успешно запустил код.

2) Я получаю использование и ничего, когда аргументы командной строки не передаются правильно.

3) Вы можете отлаживать свой скрипт оболочки, используя: set -vx. Фактические аргументы будут показаны следующим образом:

+ / home / u5652 / .conda / envs /riCffAlex3.6 / bin / convert_imageset - resize_height = 256 --resize_width = 256

convert_imageset: преобразовать набор изображений в формат leveldb / lmdb, используемый в качестве входных данных для Caffe.Использование: convert_imageset [FLAGS] ROOTFOLDER / LISTFILE DB_NAME .....................

Согласно caffe / tools / convert_imageset.cpp:

if (argc < 4) {
    gflags::ShowUsageWithFlagsRestrict(argv[0], "tools/convert_imageset");
    return 1;
  }

минимум аргументов должен быть 4, иначе он покажет использование. Вы, должно быть, получаете использование и ничего из-за неправильных аргументов.

4) Я запустил следующий код и успешно создал lmdb:

#!/usr/bin/env sh
set -vx
EXAMPLE=examples/imagenet/test
DATA=data/ilsvrc12/test
TOOLS=~/.conda/envs/riCffAlex3.6/bin
TRAIN_DATA_ROOT=~/caffe/data/ilsvrc12/test/train/
VAL_DATA_ROOT=~/caffe/data/ilsvrc12/test/test/

RESIZE=true
if $RESIZE; then
  RESIZE_HEIGHT=256
  RESIZE_WIDTH=256
else
  RESIZE_HEIGHT=0
  RESIZE_WIDTH=0
fi

if [ ! -d "$TRAIN_DATA_ROOT" ]; then
  echo "Error: TRAIN_DATA_ROOT is not a path to a directory: $TRAIN_DATA_ROOT"
  echo "Set the TRAIN_DATA_ROOT variable in create_imagenet.sh to the path" \
       "where the ImageNet training data is stored."
  exit 1
fi

if [ ! -d "$VAL_DATA_ROOT" ]; then
  echo "Error: VAL_DATA_ROOT is not a path to a directory: $VAL_DATA_ROOT"
  echo "Set the VAL_DATA_ROOT variable in create_imagenet.sh to the path" \
       "where the ImageNet validation data is stored."
  exit 1
fi

echo "Creating train lmdb..."

GLOG_logtostderr=1 $TOOLS/convert_imageset \
    --resize_height=$RESIZE_HEIGHT \
    --resize_width=$RESIZE_WIDTH \
    --shuffle \
    $TRAIN_DATA_ROOT \
    $DATA/train.txt \
    $EXAMPLE/train_lmdb

echo "Creating test lmdb..."

GLOG_logtostderr=1 $TOOLS/convert_imageset \
    --resize_height=$RESIZE_HEIGHT \
    --resize_width=$RESIZE_WIDTH \
    --shuffle \
    $VAL_DATA_ROOT \
    $DATA/val.txt \
    $EXAMPLE/test_lmdb

echo "Done."

5) Я помещаю детали в тот же формат, что и в файлы .txt.Я положил: TestJpg.jpg 0

ПРИМЕЧАНИЕ: Изображение должно иметь такое же имя и расширение, как вы вводите .txt

Попробуйте способ.Ваша ошибка должна быть устранена.

Спасибо

...