Поэкспериментируйте с проектом facebook maskrcnn-benchmark 1

глубокое обучение PyTorch
Поэкспериментируйте с проектом facebook maskrcnn-benchmark 1

maskrcnn-benchmarkЭто проект алгоритма эталонного тестирования Facebook с открытым исходным кодом, который включаетобнаружить,сегментацияиключевые точки человеческого телаалгоритм.

В настоящее время многие алгоритмы SOTA для обнаружения и сегментации, основанные на платформе PyTorch, являются улучшениями этого проекта. Например, CVPR 2019 Oral Paper,Mask Scoring R-CNN.

проект:GitHub.com/Facebook Рес…

название:Faster R-CNN and Mask R-CNN in PyTorch 1.0

  1. Как использовать среду pip для настройки проекта;
  2. Как настроить библиотеки зависимостей, используя среду ЦП MacOS;

Среда: MacOS + pip + torch + maskrcnn-benchmark

В этой серии две статьи:


настроить

Загрузите проект maskrcnn-benchmark

git clone https://github.com/facebookresearch/maskrcnn-benchmark.git

virtualenv создает виртуальную среду, выбирает python3 и одновременно активирует его.

virtualenv -p python3 mlp3_venv

Необходимо использовать Python 3.6.8+, рекомендуется 3.7

Или используйте существующую виртуальную среду.

Установить зависимости:

pip install ninja yacs cython matplotlib tqdm opencv-python

Установите PyTorch напрямуюОфициальный сайт

pip3 install torch torchvision

Mac + PyTorch

Библиотека зависимостей

maskrcnn-benchmark требует наличия двух зависимых библиотек Cocoapi и Apex,Ссылаться на,Немного отличается.

Установочный пакет: pycocotools 2.0,Активировать существующую виртуальную среду, а затем выполните:

git clone https://github.com/cocodataset/cocoapi.git
cd cocoapi/PythonAPI
python setup.py build_ext install

Пакет установки: apex 0.1, выполнить:

git clone https://github.com/NVIDIA/apex.git
cd apex
MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py install --cpp_ext

сервер Ubuntu, вы можете использовать следующую команду:Ссылаться на:

cd apex
pip install -v --no-cache-dir .

Уведомление:

  • MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++Он уникален для Mac и определяет скомпилированную библиотеку C++;
  • Среда процессора, не добавляйте--cuda_ext;

Пакет установки: maskrcnn-benchmark 0.1, выполнить

cd maskrcnn-benchmark
MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py build develop

предсказывать

существует·.torch/models, скачайте модель, про 458М:

wget https://dl.fbaipublicfiles.com/detectron/37697547/12_2017_baselines/e2e_keypoint_rcnn_R-50-FPN_1x.yaml.08_42_54.kdzV35ao/output/train/keypoints_coco_2014_train%3Akeypoints_coco_2014_valminusminival/generalized_rcnn/model_final.pkl

Переименовать:

mv model_final.pkl _detectron_37697547_12_2017_baselines_e2e_keypoint_rcnn_R-50-FPN_1x.yaml.08_42_54.kdzV35ao_output_train_keypoints_coco_2014_train%3Akeypoints_coco_2014_valminusminival_generalized_rcnn_model_final.pkl

Используйте OpenCV для чтения изображений, cv2.imread();

загрузить файл конфигурацииe2e_keypoint_rcnn_R_50_FPN_1x_caffe2.yaml,в:

  • keypoint — алгоритм ключевой точки;
  • rcnn — алгоритм обнаружения;
  • R_50 — это ResNet50;
  • FPN — это сеть функциональных пирамид;
  • 1x — это схема обучения, т. е. мини-пакет равен 16, схема имеет начальный LR = 0,02, затухает * 0,1 после 60 000 и 80 000 итераций и завершается на 90 000 итерациях,Ссылаться на;

Использовать режим ЦП, для MODEL.DEVICE установлено значение ЦП;

Создайте модель COCO Demo, минимальный размер изображения — 800, уровень достоверности — 0,7;

перечислитьrun_on_opencv_imageИнтерфейс предсказывает картинку и генерирует картинку нарисованного результата.

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

import os
import cv2
import pylab
import matplotlib.pyplot as plt

from maskrcnn_benchmark.config import cfg
from demo.predictor import COCODemo

from root_dir import DATA_DIR


def show_cv_img(img_cv):
    img = cv2.cvtColor(img_cv, cv2.COLOR_BGR2RGB)
    plt.imshow(img)
    plt.axis("off")
    fig = plt.gcf()
    fig.set_size_inches(10, 8)
    pylab.show()


def main():
    img_path = os.path.join(DATA_DIR, 'girl_generation.jpg')

    img = cv2.imread(img_path)
    print('[Info] img size: {}'.format(img.shape))
    show_cv_img(img)

    config_file = "../configs/caffe2/e2e_keypoint_rcnn_R_50_FPN_1x_caffe2.yaml"

    cfg.merge_from_file(config_file)  # 设置配置文件
    cfg.merge_from_list(["MODEL.DEVICE", "cpu"])  # 指定为CPU

    coco_demo = COCODemo(  # 创建模型文件
        cfg,
        min_image_size=800,
        confidence_threshold=0.7,
    )

    predictions = coco_demo.run_on_opencv_image(img)
    show_cv_img(predictions)


if __name__ == '__main__':
    main()

Эффект:

测试图片


Troubleshooting

Решения общих проблем.

libomp.dylib

Столкнулся со следующей проблемой: libomp.dylib не может быть загружен

ImportError: dlopen(python3.7/site-packages/torch/_C.cpython-37m-darwin.so, 9): Library not loaded: /usr/local/opt/libomp/lib/libomp.dylib
  Referenced from: python3.7/site-packages/torch/lib/libshm.dylib
  Reason: image not found

Установите пакет libomp:

brew install libomp

Ссылаться на:GitHub.com/py torch/Пак Ючон…

torch.version.cuda.split('.')

Версия GPU, исключение:

get_cuda_version
    return tuple(int(x) for x in torch.version.cuda.split('.'))
AttributeError: 'NoneType' object has no attribute 'split'

Среда — это среда ЦП Mac, графического процессора нет, а в исходном коде апекса все еще выполняется поиск графического процессора, что приводит к ошибкам, и исходный код можно изменить:

/apex/amp/lists/torch_overrides.pyВ строке 69 добавьте оператор Try-Except, чтобы замаскировать исключение:

try:
    if utils.get_cuda_version() >= (9, 1, 0):
        FP16_FUNCS.extend(_bmms)
    else:
        FP32_FUNCS.extend(_bmms)
except:
    FP32_FUNCS.extend(_bmms)

fatal error: Python.h: No such file or directory

Если заголовочные файлы Python отсутствуют, просто установите версию для разработки:

sudo apt-get install python3-dev

Рекомендуемое использованиеapt-fastСкачать, очень быстро.


OK, that's all!