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
- Как использовать среду pip для настройки проекта;
- Как настроить библиотеки зависимостей, используя среду ЦП MacOS;
Среда: MacOS + pip + torch + maskrcnn-benchmark
В этой серии две статьи:
- первый разсреда сборки;
- Статья 2обучение и проверка;
настроить
Загрузите проект 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
Библиотека зависимостей
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!