Уменьшить сетевую модель Caffe

Я хотел бы использовать Caffe для извлечения функций изображения. Однако обработка изображения занимает слишком много времени, поэтому я ищу способы оптимизации скорости.

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

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

Как вы думаете, может ли удаление четырех слоев сильно повлиять на производительность сети?

Если да, то как мне ознакомиться с содержимым файла, чтобы я мог его редактировать, и как мне узнать, какие части удалить?


person Dušan Rychnovský    schedule 10.09.2015    source источник


Ответы (3)


во-первых, я не думаю, что удаление двоичных весов будет иметь какой-либо эффект.
Во-вторых, вы можете легко сделать это с помощью интерфейса Python: см. это руководство.
И последнее, но не менее важное: пробовали ли вы запускать caffe time для измерения производительности вашей сети? это может помочь вам определить узкие места ваших вычислений.

PS. Вы также можете найти эту тему актуальной.

person Shai    schedule 10.09.2015

Caffemodel хранит данные в виде пары ключ-значение. Caffe копирует вес только для тех слоев (в train.prototxt), которые имеют то же имя, что и caffemodel. Поэтому я не думаю, что удаление двоичных весов сработает. Если вы хотите изменить структуру сети, просто измените train.prototxt и deploy.txt.

Если вы настаиваете на удалении весов из двоичного файла, следуйте этому caffe пример.

И чтобы убедиться, что вы удалили нужную часть, этот инструмент визуализации должен помочь.

person Lyken    schedule 01.06.2016

Я бы переобучил на меньший размер ввода, изменил шаги и т. д. Однако, если вы хотите уменьшить размер файла, я бы предложил квантизировать веса https://github.com/yuanyuanli85/CaffeModelCompression, а затем использовать что-то вроде сжатия lzma (xz для unix). Мы делаем это, чтобы мы могли развертывать на мобильных устройствах. 8-битные веса хорошо сжимаются.

person Joel Teply    schedule 11.03.2018