2016-12-18 7 views
2

Я хотел запустить код [FCN] [1] для семантической сегментации. Тем не менее, я новичок в Caffe, и я не знал, с какого момента я должен запустить код.Как вы использовали семантическую сегментацию кода FCN?

Есть ли пошаговые инструкции для запуска?

+0

Насколько я вижу, вам просто нужно запустить скрипт 'solve.py', который вы хотите, и все. – hbaderts

+0

@hbaderts Большое спасибо за ваш ответ, знаете ли вы, как я могу узнать всю сеть и слои? и как я могу применить его к своим конкретным данным? Я буду благодарен, если вы знаете, что какой-либо ресурс для тонкой настройки познакомит меня. Еще раз спасибо. –

+0

@hbaderts Как я могу скачать caffemodel? спасибо –

ответ

2

Поскольку я не мог получить такую ​​помощь здесь, я размещаю шаги здесь. Это может быть полезно для тех, кто неопытен (как я). Мне потребовалось много времени, чтобы выяснить, как запустить его и получить результаты. вы можете запустить его успешно, но, как и в моем случае, результаты были пустым изображением в течение длительного времени и, наконец, выяснили, как должны быть настройки.

Я мог успешно выполнить FCN8s по моим данным, и я сделал следующие шаги:

  1. Разделить данные в двух сетах (поезд, проверка) и этикетки, а также для соответствующих изображений в обоих поездов и проверки (4 папки в целом: train_img_lmdb, train_label_lmdb, val_img_lmdb и val_label_lmdb)
  2. Преобразование данных (каждый из них по отдельности) в формате lMDB (если это не RGB, преобразовать его с помощью функции CV2), вы будете иметь 4 lmdb папки, включая data.mdb и lock.mdb
  3. Скачать .caffemodel из url, что предоставили авторам,
  4. Изменить путь к пути ваших lmdb файлов в файле train_val.ptototxt, вы должны иметь 4 слоя данных, source это путь к train_img_lmdb, train_label_lmdb, val_img_lmdb и val_label_lmdb, подобно this link
  5. Добавить convolution слой после this line (здесь, у меня есть пять классов, а затем изменить num_output на основе количества классов в изображениях подспутниковых):

    слоя { названия: "score_5classes" типа: "Свертка" внизу: "оценка" сверху: "score_5classes" convolution_param { num_output: 5 площадка: 0 kernel_size: 1 } }

  6. изменение потери слоя следующим образом (только по имени, что у вас есть в нижнем слое):

    слой { название: «потеря» типа: «SoftmaxWithLoss» Botto м: "score_5classes" дна: "метка" сверху: "потеря" loss_param { нормализует: истинный }}

  7. Запустите модель, чтобы начать обучение у вас есть pycaffe и установлены caffe среды.

    кофейная поезд -solver =/путь/к/solver.prototxt -weights /path/to/pre-trained/model/fcn8s-heavy-pascal.caffemodel 2> & 1 | tee/path/to/save/training/log/file/fcn8_exp1.log

Надеюсь, это поможет. Спасибо за помощь @ Shai

+0

Это действительно полезно! Спасибо! Вы знаете, как сделать набор данных в первую очередь? Я задал этот вопрос на SO, но у меня пока нет ответов. Я просмотрел некоторые существующие наборы данных и не совсем понимаю, что происходит. Так, например, у меня есть исходное изображение, то же изображение с подсвеченными пикселями интересующего объекта (помечены определенным образом, я полагаю), а затем текстовый файл. Но как именно он формируется? Вот вопрос, который я задал: https://stackoverflow.com/questions/47964716/how-to-format-a-data-set-for-fully-convolutional-networks – Jonathan

+0

Также, пожалуйста, пожалуйста, что за интуиция стоит за очками 5 и 6? – Jonathan