Подтвердить что ты не робот

Шпаргалка для кофе/пикаффе?

Кто-нибудь знает, есть ли чит-лист для всех важных команд pycaffe? Я до сих пор использовал caffe только через интерфейс Matlab и терминальные + bash скрипты.

Я хотел перейти к использованию ipython и работать с примерами ноутбуков ipython. Однако мне сложно получить обзор всех функций, которые находятся внутри модуля caffe для python. (Я также довольно новичок в python).

4b9b3361

Ответ 1

тесты pycaffe и этот файл являются основным шлюзом для интерфейса кодирования python.

Прежде всего, вы хотели бы выбрать, использовать ли Caffe с процессором или графическим процессором. Достаточно называть caffe.set_mode_cpu() или caffe.set_mode_gpu() соответственно.

Net

Основной класс, который предоставляет интерфейс pycaffe, это Net. Он имеет два конструктора:

net = caffe.Net('/path/prototxt/descriptor/file', caffe.TRAIN)

которые просто создают Net (в данном случае с использованием уровня данных, указанного для обучения) или

net = caffe.Net('/path/prototxt/descriptor/file', '/path/caffemodel/weights/file', caffe.TEST)

который создает Net и автоматически загружает веса, сохраненные в предоставленном файле caffemodel, - в этом случае с использованием уровня данных, указанного для тестирования.

Объект A Net имеет несколько атрибутов и методов. Их можно найти здесь. Я приведу только те, которые я использую чаще.

Вы можете получить доступ к сетевым блокам с помощью Net.blobs. Например.

data = net.blobs['data'].data
net.blobs['data'].data[...] = my_image
fc7_activations = net.blobs['fc7'].data

Аналогичным образом вы можете получить доступ к параметрам (весам). Например.

nice_edge_detectors = net.params['conv1'].data
higher_level_filter = net.params['fc7'].data

Хорошо, теперь настало время фактически подавать сеть с некоторыми данными. Таким образом, вы будете использовать методы backward() и forward(). Итак, если вы хотите классифицировать одно изображение

net.blobs['data'].data[...] = my_image
net.forward() # equivalent to net.forward_all()
softmax_probabilities = net.blobs['prob'].data

Метод backward() эквивалентен, если его интересует вычисление градиентов.

Вы можете сохранить весы сети, чтобы впоследствии их повторно использовать. Это просто вопрос

 net.save('/path/to/new/caffemodel/file')

Solver

Другим компонентом ядра, подвергнутым pycaffe, является Solver. Существует несколько типов решателей, но для ясности я буду использовать только SGDSolver. Это необходимо для обучения модели кофе. Вы можете создать экземпляр решателя с помощью

solver = caffe.SGDSolver('/path/to/solver/prototxt/file')

Solver будет инкапсулировать сеть, которую вы обучаете, и, если присутствует, сеть, используемая для тестирования. Обратите внимание, что они обычно являются одной и той же сетью, только с другим уровнем данных. Доступ к сетям осуществляется с помощью

 training_net = solver.net
 test_net = solver.test_nets[0] # more than one test net is supported

Затем вы можете выполнить итерацию решателя, то есть прокрутку вперед/назад с обновлением веса, набрав только

 solver.step(1)

или запустите решатель до последней итерации с помощью

 solver.solve()

Другие функции

Обратите внимание, что pycaffe позволяет вам делать больше вещей, таких как указание сетевой архитектуры через класс Python или создание новый тип слоя. Эти функции используются менее часто, но их довольно легко понять, прочитав тестовые примеры.

Ответ 2

Обратите внимание, что ответ Флавио Феррары имеет проблему, которая может вызвать у вас много времени:

net.blobs['data'].data[...] = my_image
net.forward()

Приведенный выше код неэффективен, если ваш первый уровень является слоем типа данных, потому что, когда вызывается net.forward(), он начинается с первого уровня, а затем будут вставлены ваши вставленные данные my_image. Таким образом, он не будет показывать ошибки, но даст вам совершенно неактуальный результат. Правильный способ - назначить начальный и конечный уровни, например:

net.forward(start='conv1', end='fc')

Вот репозиторий Github эксперимента по проверке личности на LFW Dataset, используя pycaffe и некоторый код matlab. Я думаю, это может сильно помочь, особенно файл caffe_ftr.py.

https://github.com/AlfredXiangWu/face_verification_experiment

Кроме того, здесь приведен краткий пример кода использования pycaffe для классификации изображений:

http://codrspace.com/Jaleyhd/caffe-python-tutorial/ http://prog3.com/sbdm/blog/u011762313/article/details/48342495