这是EfficientPose的官方实现。我们的工作基于Keras EfficientDet实现xuannianz/EfficientDet,后者又基于Keras RetinaNet实现fizyr/keras-retinanet、官方EfficientDet实现google/automl和qubvel/efficientnet。
- 克隆该存储库
创建一个带有conda create -n EfficientPose python==3.7
的新环境
激活该环境:conda activate EfficientPose
安装Tensorflow 1.15.0与conda install tensorflow-gpu==1.15.0
前往存储库目录并使用pip install -r requirements.txt
安装其他依赖项
使用Cython编译模块python setup.py build_ext --inplace
您可以从这里下载Linemod和Occlusion数据集以及预训练权重。只需解压缩Linemod_and_Occlusion.zip文件,然后按照以下说明使用这些数据集进行训练或评估。
该数据集最初是从j96w/DenseFusion和chensong1995/HybridPose下载的,并使用 generate_masks.py
脚本进行了预处理。EfficientDet COCO预训练权重来自xuannianz/EfficientDet。
使用COCO预训练权重在Linemod的对象8(钻头)上训练phi = 0 EfficientPose模型:
python train.py --phi 0 --weights /path_to_weights/file.h5 linemod /path_to_dataset/Linemod_preprocessed/ --object-id 8
使用COCO预训练权重在遮挡上训练 phi = 0 的 EfficientPose 模型:
python train.py --phi 0 --weights /path_to_weights/file.h5 occlusion /path_to_dataset/Linemod_preprocessed/
请查看train.py以获取更多参数。
评估在Linemod的物体8(钻头)上训练的phi = 0 EfficientPose模型,并(可选)保存预测的图像:
python evaluate.py --phi 0 --weights /path_to_weights/file.h5 --validation-image-save-path /where_to_save_predicted_images/ linemod /path_to_dataset/Linemod_preprocessed/ --object-id 8
评估经过训练的 phi = 0 EfficientPose 模型在遮挡情况下的表现,并(可选)保存预测的图像:
python evaluate.py --phi 0 --weights /path_to_weights/file.h5 --validation-image-save-path /where_to_save_predicted_images/ occlusion /path_to_dataset/Linemod_preprocessed/
如果你不想保存预测图像,只需跳过--validation-image-save-path参数。
我们还提供了两个基本脚本,演示了训练好的EfficientPose模型的示例用法。使用 python inference.py
,您可以在目录中的所有图像上运行EfficientPose。所需的参数,例如图像路径和模型,可以在 inference.py
脚本中进行修改。
使用 python inference_webcam.py
,您可以通过网络摄像头实时运行EfficientPose。请注意,您必须使用此脚本(Linemod)中使用的内在摄像头参数替换您的摄像头参数。由于Linemod和遮挡数据集太小,无法期望在现实世界中获得合理的6D姿态估计性能,而且很多人可能没有与Linemod中使用的完全相同的物体(就像我一样),您可以尝试在屏幕上显示Linemod图像,并用网络摄像头拍摄它。
基准测试 重试 错误原因
要在您的计算机上测量EfficientPose的运行时间,您可以使用 python benchmark_runtime.py
。所需的参数,例如模型路径,可以在 benchmark_runtime.py
脚本中修改。同样,您也可以使用 benchmark_runtime_vanilla_effdet.py
脚本在您的计算机上测量vanilla EfficientDet的运行时间。
重试
错误原因
调试数据集和生成器
重试
错误原因
如果您想修改生成器或构建新的自定义数据集,显示从生成器加载的数据集注释可能非常有帮助,以确保一切按预期工作。
重试
错误原因
python debug.py --phi 0 --annotations linemod /path_to_dataset/Linemod_preprocessed/ --object-id 8
您可以显示加载和增强的图像,以及为Linemod数据集的对象8准备的phi = 0模型的注释。请参阅debug.py以获取更多参数。
重试
错误原因
引用 重试 错误原因
如果您在研究中使用了EfficientPose,请引用它
重试
错误原因
@misc{bukschat2020efficientpose,
title={EfficientPose: An efficient, accurate and scalable end-to-end 6D multi object pose estimation approach},
author={Yannick Bukschat and Marcus Vetter},
year={2020},
eprint={2011.04307},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
许可证 重试 错误原因
EfficientPose在知识共享署名-非商业性使用4.0国际许可证下授权,并可供非商业用途免费使用。有关详细信息,请参阅许可证。如果您有商业用途的兴趣,请通过yannick.bukschat@stw.de或marcus.vetter@stw.de与我们联系。