Giter VIP home page Giter VIP logo

efficientpose's Introduction

EfficientPose

This is the official implementation of EfficientPose. We based our work on the Keras EfficientDet implementation xuannianz/EfficientDet which again builds up on the great Keras RetinaNet implementation fizyr/keras-retinanet, the official EfficientDet implementation google/automl and qubvel/efficientnet.

image1

Installation

  1. Clone this repository
  2. Create a new environment with conda create -n EfficientPose python==3.7
  3. Activate that environment with conda activate EfficientPose
  4. Install Tensorflow 1.15.0 with conda install tensorflow-gpu==1.15.0
  5. Go to the repo dir and install the other dependencys using pip install -r requirements.txt
  6. Compile cython modules with python setup.py build_ext --inplace

Dataset and pretrained weights

You can download the Linemod and Occlusion datasets and the pretrained weights from here. Just unzip the Linemod_and_Occlusion.zip file and you can train or evaluate using these datasets as described below.

The dataset is originally downloaded from j96w/DenseFusion as well as chensong1995/HybridPose and were preprocessed using the generate_masks.py script. The EfficientDet COCO pretrained weights are from xuannianz/EfficientDet.

Training

Linemod

To train a phi = 0 EfficientPose model on object 8 of Linemod (driller) using COCO pretrained weights:

python train.py --phi 0 --weights /path_to_weights/file.h5 linemod /path_to_dataset/Linemod_preprocessed/ --object-id 8

Occlusion

To train a phi = 0 EfficientPose model on Occlusion using COCO pretrained weights:

python train.py --phi 0 --weights /path_to_weights/file.h5 occlusion /path_to_dataset/Linemod_preprocessed/

See train.py for more arguments.

Evaluating

Linemod

To evaluate a trained phi = 0 EfficientPose model on object 8 of Linemod (driller) and (optionally) save the predicted images:

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

Occlusion

To evaluate a trained phi = 0 EfficientPose model on Occlusion and (optionally) save the predicted images:

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/

If you don`t want to save the predicted images just skip the --validation-image-save-path argument.

Inferencing

We also provide two basic scripts demonstrating the exemplary use of a trained EfficientPose model for inferencing. With python inference.py you can run EfficientPose on all images in a directory. The needed parameters, e.g. the path to the images and the model can be modified in the inference.py script.

With python inference_webcam.py you can run EfficientPose live with your webcam. Please note that you have to replace the intrinsic camera parameters used in this script (Linemod) with your webcam parameters. Since the Linemod and Occlusion datasets are too small to expect a reasonable 6D pose estimation performance in the real world and a lot of people probably do not have the exact same objects used in Linemod (like me), you can try to display a Linemod image on your screen and film it with your webcam.

Benchmark

To measure the runtime of EfficientPose on your machine you can use python benchmark_runtime.py. The needed parameters, e.g. the path to the model can be modified in the benchmark_runtime.py script. Similarly, you can also measure the vanilla EfficientDet runtime on your machine with the benchmark_runtime_vanilla_effdet.py script.

Debugging Dataset and Generator

If you want to modify the generators or build a new custom dataset, it can be very helpful to display the dataset annotations loaded from your generator to make sure everything works as expected. With

python debug.py --phi 0 --annotations linemod /path_to_dataset/Linemod_preprocessed/ --object-id 8

you can display the loaded and augmented image as well as annotations prepared for a phi = 0 model from object 8 of the Linemod dataset. Please see debug.py for more arguments.

Citation

Please cite EfficientPose if you use it in your research

@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}
}

License

EfficientPose is licensed under the Creative Commons Attribution-NonCommercial 4.0 International license and is freely available for non-commercial use. Please see the LICENSE for further details. If you are interested in commercial use, please contact us under [email protected] or [email protected].

efficientpose's People

Contributors

ybkscht avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

efficientpose's Issues

Can't train on YCB-V dataset

Thanks for your work, @ybkscht

I've spent preprocessed the YCB-V (Original synt. Training images) dataset, which I took from the link https://bop.felk.cvut.cz/datasets/
From 10 folders of 1k images, I got a dataset of 236 high-quality images, on which the target object overlap is minimal. My preprocessed YCB-V dataset turned out to be identical to Linemod-preprocessed. The debug.py script works fine on my YCBV-preprocessed dataset. However, during training, I do not receive any metrics, respectively, mAP, ADD, ADD-S are equal to zero.

mAP: 0.0000
ADD: 0.0000
ADD-S: 0.0000
5cm_5degree: 0.0000
TranslationErrorMean_in_mm: nan
TranslationErrorStd_in_mm: nan
RotationErrorMean_in_degree: nan
RotationErrorStd_in_degree: nan
2D-Projection: 0.0000
Summed_Translation_Rotation_Error: nan
ADD(-S): 0.0000
AveragePointDistanceMean_in_mm: nan
AveragePointDistanceStd_in_mm: nan
AverageSymmetricPointDistanceMean_in_mm: nan
AverageSymmetricPointDistanceStd_in_mm: nan
MixedAveragePointDistanceMean_in_mm: nan
MixedAveragePointDistanceStd_in_mm: nan

Epoch 00005: ADD did not improve from 0.00000
1790/1790 [==============================] - 564s 315ms/step - loss: 3.5037 - classification_loss: 0.8148 - regression_loss: 0.3623 - transformation_loss: 116.3291

Please tell me what the lack of metrics can be connected with in my case.

how to hand the mismatch caused by preprocess?

Hello, i have a quesion for you.
in the preprocess, we will resize the image to a fixed size.But, the 3D bboxes will not match the image. Like this:
image
so, how to hand it? is it not important for the network?
Look forward to your reply!
@ybkscht

Object detection is working well, but rotation error is very high

Hello,

I'm having an issue with training on my custom dataset. It seems that the network is finding the images just fine, and this is reflected in the translation errors. However, the rotational error seems rather high and not decreasing. This is an output of the last validation step:

4099 instances of class object with average precision: 0.8454
4099 instances of class object with ADD accuracy: 0.0071
4099 instances of class object with ADD-S-Accuracy: 0.0903
4099 instances of class object with 5cm-5degree-Accuracy: 0.0000
class object with Translation Differences in mm: Mean: 0.0645 and Std: 0.0274
class object with Rotation Differences in degree: Mean: 118.1196 and Std: 42.3033
4099 instances of class object with 2d-projection-Accuracy: 0.0002
4099 instances of class object with ADD(-S)-Accuracy: 0.0071
class object with Transformed Point Distances in mm: Mean: 0.0361 and Std: 0.0185
class object with Transformed Symmetric Point Distances in mm: Mean: 0.0197 and Std: 0.0127
class object with Mixed Transformed Point Distances in mm: Mean: 0.0361 and Std: 0.0185
mAP: 0.8454
ADD: 0.0071
ADD-S: 0.0903
5cm_5degree: 0.0000
TranslationErrorMean_in_mm: 0.0645
TranslationErrorStd_in_mm: 0.0274
RotationErrorMean_in_degree: 118.1196
RotationErrorStd_in_degree: 42.3033
2D-Projection: 0.0002
Summed_Translation_Rotation_Error: 160.5148
ADD(-S): 0.0071
AveragePointDistanceMean_in_mm: 0.0361
AveragePointDistanceStd_in_mm: 0.0185
AverageSymmetricPointDistanceMean_in_mm: 0.0197
AverageSymmetricPointDistanceStd_in_mm: 0.0127
MixedAveragePointDistanceMean_in_mm: 0.0361

For reference, I have a dataset of 10k images, with one object in each image. The scale of the 3D model has been changed to mm, and debug.py does not show anomalous behaviour:
image

When looking at the last set of validation images, I get a result like this (after 90 epochs):
image

This is the command with which I launch the training:
python train.py --phi 0 --gpu 0 --weights "XXXX/checkpoints/after_scale_2/object_0/phi_0_linemod_best_ADD_16_05_2021_09_37_03.h5" --snapshot-path "XXXX/checkpoints/after_scale_3/" --validation-image-save-path "XXXX/validation_images/" --tensorboard-dir "XXXX/logs5/" --no-6dof-augmentation linemod "XXXX/data/" --object-id 0

What do you think?

Thanks!

An error occurs during training: NotImplementedError: Cannot convert a symbolic Tensor (filtered_detections / map / while / strided_slice_1: 0) to a numpy array.

Hi @ybkscht
I am running your project on a new Ubuntu 18.04 system. I install your repository according to the recommendation: conda create -n myenv python==3.7-> conda install tensorflow-gpu==1.15.0-> pip install -r requirements.txt->python setup.py build_ext --inplace.

And at startup python train.py --phi 0 linemod /path_to_dataset/Linemod_preprocessed/ --object-id 1
I am getting the following output:

WARNING:tensorflow:From train.py:204: The name tf.ConfigProto is deprecated. Please use tf.compat.v1.ConfigProto instead.

WARNING:tensorflow:From train.py:206: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.

2021-05-28 23:29:35.653675: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX
2021-05-28 23:29:35.677039: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 3292420000 Hz
2021-05-28 23:29:35.677415: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x55a00b0c02e0 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2021-05-28 23:29:35.677448: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version
2021-05-28 23:29:35.678934: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcuda.so.1
2021-05-28 23:29:35.702501: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:983] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2021-05-28 23:29:35.702994: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1618] Found device 0 with properties: 
name: GeForce GTX 1650 major: 7 minor: 5 memoryClockRate(GHz): 1.62
pciBusID: 0000:01:00.0
2021-05-28 23:29:35.703249: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.0
2021-05-28 23:29:35.704563: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcublas.so.10.0
2021-05-28 23:29:35.705550: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcufft.so.10.0
2021-05-28 23:29:35.705804: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcurand.so.10.0
2021-05-28 23:29:35.707095: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusolver.so.10.0
2021-05-28 23:29:35.708178: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusparse.so.10.0
2021-05-28 23:29:35.711536: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7
2021-05-28 23:29:35.711733: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:983] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2021-05-28 23:29:35.712140: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:983] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2021-05-28 23:29:35.712444: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1746] Adding visible gpu devices: 0
2021-05-28 23:29:35.712531: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.0
2021-05-28 23:29:35.795894: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1159] Device interconnect StreamExecutor with strength 1 edge matrix:
2021-05-28 23:29:35.795966: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1165]      0 
2021-05-28 23:29:35.795976: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1178] 0:   N 
2021-05-28 23:29:35.796188: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:983] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2021-05-28 23:29:35.796540: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:983] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2021-05-28 23:29:35.796895: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:983] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2021-05-28 23:29:35.797193: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1304] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 3237 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1650, pci bus id: 0000:01:00.0, compute capability: 7.5)
2021-05-28 23:29:35.798773: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x55a00afbe8b0 initialized for platform CUDA (this does not guarantee that XLA will be used). Devices:
2021-05-28 23:29:35.798810: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): GeForce GTX 1650, Compute Capability 7.5
{'dataset_type': 'linemod', 'rotation_representation': 'axis_angle', 'weights': None, 'freeze_backbone': False, 'no_freeze_bn': False, 'batch_size': 1, 'lr': 0.0001, 'no_color_augmentation': False, 'no_6dof_augmentation': False, 'phi': 0, 'gpu': None, 'epochs': 500, 'steps': 1790, 'snapshot_path': 'checkpoints/28_05_2021_23_29_35', 'tensorboard_dir': 'logs/28_05_2021_23_29_35', 'snapshots': True, 'evaluation': True, 'compute_val_loss': False, 'score_threshold': 0.5, 'validation_image_save_path': None, 'multiprocessing': False, 'workers': 4, 'max_queue_size': 10, 'linemod_path': 'linemod_preproc', 'object_id': 1}

Creating the Generators...
Done!

Building the Model...
WARNING:tensorflow:From /home/nikita/anaconda3/envs/AP/lib/python3.7/site-packages/tensorflow_core/python/util/deprecation.py:507: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with distribution=normal is deprecated and will be removed in a future version.
Instructions for updating:
`normal` is a deprecated alias for `truncated_normal`
WARNING:tensorflow:From /home/nikita/anaconda3/envs/AP/lib/python3.7/site-packages/tensorflow_core/python/ops/resource_variable_ops.py:1630: calling BaseResourceVariable.__init__ (from tensorflow.python.ops.resource_variable_ops) with constraint is deprecated and will be removed in a future version.
Instructions for updating:
If using Keras pass *_constraint arguments to layers.
2021-05-28 23:30:00.743118: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:983] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2021-05-28 23:30:00.743751: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1618] Found device 0 with properties: 
name: GeForce GTX 1650 major: 7 minor: 5 memoryClockRate(GHz): 1.62
pciBusID: 0000:01:00.0
2021-05-28 23:30:00.743823: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.0
2021-05-28 23:30:00.743858: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcublas.so.10.0
2021-05-28 23:30:00.743890: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcufft.so.10.0
2021-05-28 23:30:00.743920: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcurand.so.10.0
2021-05-28 23:30:00.743949: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusolver.so.10.0
2021-05-28 23:30:00.743978: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusparse.so.10.0
2021-05-28 23:30:00.744007: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7
2021-05-28 23:30:00.744103: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:983] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2021-05-28 23:30:00.744458: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:983] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2021-05-28 23:30:00.744804: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1746] Adding visible gpu devices: 0
2021-05-28 23:30:00.745209: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:983] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2021-05-28 23:30:00.745535: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1618] Found device 0 with properties: 
name: GeForce GTX 1650 major: 7 minor: 5 memoryClockRate(GHz): 1.62
pciBusID: 0000:01:00.0
2021-05-28 23:30:00.745565: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.0
2021-05-28 23:30:00.745598: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcublas.so.10.0
2021-05-28 23:30:00.745638: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcufft.so.10.0
2021-05-28 23:30:00.745669: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcurand.so.10.0
2021-05-28 23:30:00.745692: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusolver.so.10.0
2021-05-28 23:30:00.745712: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusparse.so.10.0
2021-05-28 23:30:00.745734: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7
2021-05-28 23:30:00.745816: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:983] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2021-05-28 23:30:00.746147: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:983] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2021-05-28 23:30:00.746434: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1746] Adding visible gpu devices: 0
2021-05-28 23:30:00.746465: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1159] Device interconnect StreamExecutor with strength 1 edge matrix:
2021-05-28 23:30:00.746476: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1165]      0 
2021-05-28 23:30:00.746484: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1178] 0:   N 
2021-05-28 23:30:00.746569: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:983] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2021-05-28 23:30:00.746902: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:983] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2021-05-28 23:30:00.747202: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1304] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 3237 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1650, pci bus id: 0000:01:00.0, compute capability: 7.5)
Traceback (most recent call last):
  File "train.py", line 368, in <module>
    main()
  File "train.py", line 137, in main
    num_rotation_parameters = num_rotation_parameters)
  File "/home/nikita/EfficientPose/model.py", line 138, in build_EfficientPose
    )([bboxes, classification, rotation, translation])
  File "/home/nikita/anaconda3/envs/AP/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/base_layer.py", line 854, in __call__
    outputs = call_fn(cast_inputs, *args, **kwargs)
  File "/home/nikita/anaconda3/envs/AP/lib/python3.7/site-packages/tensorflow_core/python/autograph/impl/api.py", line 237, in wrapper
    raise e.ag_error_metadata.to_exception(e)
NotImplementedError: in converted code:

    /home/nikita/EfficientPose/layers.py:443 _filter_detections  *
        return filter_detections(
    /home/nikita/anaconda3/envs/AP/lib/python3.7/site-packages/tensorflow_core/python/ops/map_fn.py:268 map_fn
        maximum_iterations=n)
    /home/nikita/EfficientPose/layers.py:342 filter_detections  *
        labels = c * tf.ones((keras.backend.shape(scores)[0],), dtype='int64')
    /home/nikita/anaconda3/envs/AP/lib/python3.7/site-packages/tensorflow_core/python/ops/array_ops.py:2560 ones
        output = _constant_if_small(one, shape, dtype, name)
    /home/nikita/anaconda3/envs/AP/lib/python3.7/site-packages/tensorflow_core/python/ops/array_ops.py:2295 _constant_if_small
        if np.prod(shape) < 1000:
    <__array_function__ internals>:6 prod
        
    /home/nikita/anaconda3/envs/AP/lib/python3.7/site-packages/numpy/core/fromnumeric.py:3031 prod
        keepdims=keepdims, initial=initial, where=where)
    /home/nikita/anaconda3/envs/AP/lib/python3.7/site-packages/numpy/core/fromnumeric.py:87 _wrapreduction
        return ufunc.reduce(obj, axis, dtype, out, **passkwargs)
    /home/nikita/anaconda3/envs/AP/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py:736 __array__
        " array.".format(self.name))

    NotImplementedError: Cannot convert a symbolic Tensor (filtered_detections/map/while/strided_slice_1:0) to a numpy array.

As I understand this is a bug with numpy, but I cannot solve it, please help.

My pip list:

Package                         Version
------------------------------- -------------------
absl-py                         0.12.0
actionlib                       1.12.1
angles                          1.9.12
arbotix-python                  0.10.0
astor                           0.8.1
base-local-planner              1.16.7
bondpy                          1.8.5
cached-property                 1.5.2
camera-calibration              1.15.0
camera-calibration-parsers      1.11.13
catkin                          0.7.29
certifi                         2020.12.5
cob-cartesian-controller        0.8.12
cob-script-server               0.6.19
cob-twist-controller            0.8.12
controller-manager              0.18.3
controller-manager-msgs         0.18.3
controller-manager-tests        0.18.3
cv-bridge                       1.13.0
cycler                          0.10.0
Cython                          0.29.23
decorator                       4.4.2
diagnostic-analysis             1.9.7
diagnostic-common-diagnostics   1.9.7
diagnostic-updater              1.9.7
dynamic-reconfigure             1.6.3
dynamixel-sdk                   3.7.51
gast                            0.2.2
gazebo-plugins                  2.8.7
gazebo-ros                      2.8.7
gencpp                          0.6.5
geneus                          2.2.6
genlisp                         0.4.16
genmsg                          0.5.16
gennodejs                       2.0.1
genpy                           0.6.16
google-pasta                    0.2.0
grpcio                          1.14.1
h5py                            3.2.1
image-geometry                  1.13.0
imageio                         2.9.0
imgaug                          0.4.0
importlib-metadata              3.10.0
interactive-markers             1.11.5
joint-state-publisher           1.12.15
joint-state-publisher-gui       1.12.15
kdl-parser-py                   1.13.1
Keras-Applications              1.0.8
Keras-Preprocessing             1.1.2
kiwisolver                      1.3.1
laser-geometry                  1.6.7
Markdown                        3.3.4
matplotlib                      3.4.2
message-filters                 1.14.11
mkl-fft                         1.3.0
mkl-random                      1.2.1
mkl-service                     2.3.0
moveit-commander                1.0.7
moveit-python                   0.4.1
moveit-ros-planning-interface   1.0.7
moveit-ros-visualization        1.0.7
networkx                        2.5.1
numpy                           1.20.3
opencv-python                   4.5.2.52
opt-einsum                      3.3.0
pandas                          1.1.5
Pillow                          8.2.0
pip                             21.1.1
plyfile                         0.7.4
pr2-controller-manager          1.8.18
progressbar2                    3.53.1
protobuf                        3.14.0
pyparsing                       2.4.7
python-dateutil                 2.8.1
python-qt-binding               0.4.3
python-utils                    2.5.6
pytz                            2021.1
PyWavelets                      1.1.1
PyYAML                          5.4.1
qt-dotgraph                     0.4.2
qt-gui                          0.4.2
qt-gui-cpp                      0.4.2
qt-gui-py-common                0.4.2
resource-retriever              1.12.6
rosbag                          1.14.11
rosboost-cfg                    1.14.9
rosclean                        1.14.9
roscreate                       1.14.9
rosgraph                        1.14.11
roslaunch                       1.14.11
roslib                          1.14.9
roslint                         0.11.2
roslz4                          1.14.11
rosmake                         1.14.9
rosmaster                       1.14.11
rosmsg                          1.14.11
rosnode                         1.14.11
rosparam                        1.14.11
rospy                           1.14.11
rosservice                      1.14.11
rostest                         1.14.11
rostopic                        1.14.11
rosunit                         1.14.9
roswtf                          1.14.11
rqt-action                      0.4.9
rqt-bag                         0.5.1
rqt-bag-plugins                 0.5.1
rqt-console                     0.4.9
rqt-controller-manager          0.18.3
rqt-dep                         0.4.9
rqt-graph                       0.4.11
rqt-gui                         0.5.2
rqt-gui-py                      0.5.2
rqt-image-view                  0.4.16
rqt-joint-trajectory-controller 0.17.2
rqt-launch                      0.4.8
rqt-logger-level                0.4.8
rqt-moveit                      0.5.10
rqt-msg                         0.4.8
rqt-nav-view                    0.5.7
rqt-plot                        0.4.13
rqt-pose-view                   0.5.8
rqt-publisher                   0.4.8
rqt-py-common                   0.5.2
rqt-py-console                  0.4.8
rqt-reconfigure                 0.5.4
rqt-robot-dashboard             0.5.7
rqt-robot-monitor               0.5.13
rqt-robot-steering              0.5.10
rqt-runtime-monitor             0.5.7
rqt-rviz                        0.6.0
rqt-service-caller              0.4.8
rqt-shell                       0.4.9
rqt-srv                         0.4.8
rqt-tf-tree                     0.6.0
rqt-top                         0.4.8
rqt-topic                       0.4.11
rqt-web                         0.4.8
rviz                            1.13.17
scikit-image                    0.18.1
scipy                           1.6.2
seed-smartactuator-sdk          0.0.5
sensor-msgs                     1.12.8
setuptools                      52.0.0.post20210125
Shapely                         1.7.1
six                             1.16.0
smach                           2.0.1
smach-ros                       2.0.1
smclib                          1.8.5
srdfdom                         0.5.2
tensorboard                     1.15.0
tensorflow                      1.15.0
tensorflow-estimator            1.15.1
termcolor                       1.1.0
tf                              1.12.1
tf-conversions                  1.12.1
tf2-geometry-msgs               0.6.5
tf2-kdl                         0.6.5
tf2-py                          0.6.5
tf2-ros                         0.6.5
tifffile                        2021.4.8
topic-tools                     1.14.11
tqdm                            4.61.0
typeguard                       2.12.0
typing-extensions               3.7.4.3
urdfdom-py                      0.4.5
webencodings                    0.5.1
Werkzeug                        0.16.1
wheel                           0.36.2
wrapt                           1.12.1
xacro                           1.13.10
zipp                            3.4.1

my conda list:

# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                        main  
_tflow_select             2.1.0                       gpu  
absl-py                   0.12.0           py37h06a4308_0  
astor                     0.8.1            py37h06a4308_0  
binutils_impl_linux-64    2.31.1               h6176602_1  
binutils_linux-64         2.31.1               h6176602_9  
blas                      1.0                         mkl  
c-ares                    1.17.1               h27cfd23_0  
ca-certificates           2021.4.13            h06a4308_1  
cached-property           1.5.2                      py_0  
certifi                   2020.12.5        py37h06a4308_0  
cudatoolkit               10.0.130                      0  
cudnn                     7.6.5                cuda10.0_0  
cupti                     10.0.130                      0  
cycler                    0.10.0                   pypi_0    pypi
cython                    0.29.23                  pypi_0    pypi
decorator                 4.4.2                    pypi_0    pypi
gast                      0.2.2                    py37_0  
gcc_impl_linux-64         7.3.0                habb00fd_1  
gcc_linux-64              7.3.0                h553295d_9  
google-pasta              0.2.0                      py_0  
grpcio                    1.14.1           py37h9ba97e2_0  
gxx_impl_linux-64         7.3.0                hdf63c60_1  
gxx_linux-64              7.3.0                h553295d_9  
h5py                      3.2.1            py37h6c542dc_0  
hdf5                      1.10.6               hb1b8bf9_0  
imageio                   2.9.0                    pypi_0    pypi
imgaug                    0.4.0                    pypi_0    pypi
importlib-metadata        3.10.0           py37h06a4308_0  
intel-openmp              2021.2.0           h06a4308_610  
keras-applications        1.0.8                      py_1  
keras-preprocessing       1.1.2              pyhd3eb1b0_0  
kiwisolver                1.3.1                    pypi_0    pypi
libedit                   3.1.20210216         h27cfd23_1  
libffi                    3.2.1             hf484d3e_1007  
libgcc-ng                 9.1.0                hdf63c60_0  
libgfortran-ng            7.3.0                hdf63c60_0  
libprotobuf               3.14.0               h8c45485_0  
libstdcxx-ng              9.1.0                hdf63c60_0  
markdown                  3.3.4            py37h06a4308_0  
matplotlib                3.4.2                    pypi_0    pypi
mkl                       2021.2.0           h06a4308_296  
mkl-service               2.3.0            py37h27cfd23_1  
mkl_fft                   1.3.0            py37h42c9631_2  
mkl_random                1.2.1            py37ha9443f7_2  
ncurses                   6.2                  he6710b0_1  
networkx                  2.5.1                    pypi_0    pypi
numpy                     1.20.3                   pypi_0    pypi
opencv-python             4.5.2.52                 pypi_0    pypi
openssl                   1.0.2u               h7b6447c_0  
opt_einsum                3.3.0              pyhd3eb1b0_1  
pandas                    1.1.5                    pypi_0    pypi
pillow                    8.2.0                    pypi_0    pypi
pip                       21.1.1           py37h06a4308_0  
plyfile                   0.7.4                    pypi_0    pypi
progressbar2              3.53.1                   pypi_0    pypi
protobuf                  3.14.0           py37h2531618_1  
pyparsing                 2.4.7                    pypi_0    pypi
python                    3.7.0                h6e4f718_3  
python-dateutil           2.8.1                    pypi_0    pypi
python-utils              2.5.6                    pypi_0    pypi
pytz                      2021.1                   pypi_0    pypi
pywavelets                1.1.1                    pypi_0    pypi
pyyaml                    5.4.1                    pypi_0    pypi
readline                  7.0                  h7b6447c_5  
scikit-image              0.18.1                   pypi_0    pypi
scipy                     1.6.2            py37had2a1c9_1  
setuptools                52.0.0           py37h06a4308_0  
shapely                   1.7.1                    pypi_0    pypi
six                       1.16.0                   pypi_0    pypi
sqlite                    3.33.0               h62c20be_0  
tensorboard               1.15.0             pyhb230dea_0  
tensorflow                1.15.0          gpu_py37h0f0df58_0  
tensorflow-base           1.15.0          gpu_py37h9dcbed7_0  
tensorflow-estimator      1.15.1             pyh2649769_0  
tensorflow-gpu            1.15.0               h0d30ee6_0  
termcolor                 1.1.0            py37h06a4308_1  
tifffile                  2021.4.8                 pypi_0    pypi
tk                        8.6.10               hbc83047_0  
tqdm                      4.61.0                   pypi_0    pypi
typeguard                 2.12.0                   pypi_0    pypi
typing_extensions         3.7.4.3            pyha847dfd_0  
webencodings              0.5.1                    py37_1  
werkzeug                  0.16.1                     py_0  
wheel                     0.36.2             pyhd3eb1b0_0  
wrapt                     1.12.1           py37h7b6447c_1  
xz                        5.2.5                h7b6447c_0  
zipp                      3.4.1              pyhd3eb1b0_0  
zlib                      1.2.11               h7b6447c_3  

my custom dataset for multi object pose estimation

Hi,
I want to train my custom dataset using EfficientPose.But I have some problems.
How can I get the files(mask_all , merged_masks) as shown below:
2021-07-20 14-23-12屏幕截图

What do 'rotation center extend' mean in the file: Linemod_preprocessed/data/02/valid_poses/ape
2021-07-20 14-40-57屏幕截图

models_info.yml data

Hi Yannick,

Quick questions for you regarding the data in Linemod_preprocessed/models/models_info.yml:

  1. I assume the diameter values are in mm? can you confirm?
  2. What exactly are the min_{x,y,z} and size_{x,y,z} values relating to? Is this a value from the .ply file? I assume its not related to the ground truth data since there's only one per item. Also, any idea what the units are here?

I know you took this dataset from densefusionhttps://github.com/j96w/DenseFusion - I've been digging around there and haven't been able to find this. If I missed it, please do point me.

Thanks!

Custom Dataset

Hello!

I am trying to use a own custom box dataset.
but i have

  1. RGB Images
  2. 2d pixel coordinates of each point in the box (9 points including the center point)

Looking at the linemod data, there are depth, mask images, and a lot of other text data. Is it possible to solve this by using a generator?

Thanks

Possible to run on a Smartphone?

Hi, I was wondering if it might be possible to run your 6D Pose Estimator even on the limited hardware of a smartphone. Before diving too deep into it, I wanted to get the opinion of more experienced people in the field.

If you think it is possible, is a rough estimation for fps possible (Lets assume it would run on an Adreno 650 mobile GPU)?

If you think it is not possible could you briefly elaborate on the reasons.

Any insights are appreciated. Thank you very much!

Default batch size

Hi,

I read the paper where it mentioned that group normalization is used, instead of batch norm, in part due to being able to train well at lower batch sizes. I am trying to speed up training. Is there any reason to keep the batch size as low as 1? Turning up the batch size should speed up training without any major downsides, right?

Also, does this repo currently support multi-gpu training? I looked through the code and it seems that it does not, but would like to make sure.

Regardless, thanks for your time!

How do I train my custom dataset?

I want to train my custom dataset using EfficientPose.

I want to know clearly what data is needed to do that.

You also want to know which configuration settings need to be modified to train a custom dataset.

In this case, I would like to have a manual that beginners can follow.

Model not learning on custom data

Hello,

Thanks for providing the implementation to your work. Motivated by your results, I started training on my custom collected dataset and also visualized the dataset using 'debug.py' script provided in your code in order to validate the masks, bounding box (2d and 3d, etc.) Everything seems OK. So I started it's training but I'm getting 'nan' values. I also checked the previous issues and tried some suggested solutions but they did not work (masks for each image exists with same name).

Can you please suggest anything else to solve this issue??
efficient-pose-training-result

Thanks,
Ali

Question about own dataset

Hello, congratulations for your work, it's amazing!

I want to detect the orientation of chairs, I tried some weights but the results were not good. Is it possible to do the detection or should I train the model with my images?
image

How many images are necessary for a good training? The images must have the same order and files as linemod_preprocessed?
image

Thanks in advance!

Training procedure of EfficientPose

Hi authors,

Thank you for the great work and paper!

This issue is related with this in HybridPose.
In convention, recent methods (PoseCNN, BB8, PVNet, CDPN, and DPOD) train their networks using the LineMOD dataset and synthetic images to avoid overfitting, and then test the trained models on both the LineMOD and Occlusion LineMOD dataset.
The reason of this is If models are trained and evaluated separately, you can easily achieve the better performance on both datasets because of overfitting.
For example, HybridPose achieved 94.5% and 79.2% on the LineMOD and Occlusion LineMOD datasets respectively using the models trained separately by only real images before [1]. However, after following the convention, their score was dropped to 91.3% and 47.5% [2].

Could you please check if the same thing will happen to your network?
I'd say it's important to fairly compare the state-of-the-art methods.

Thanks,
Shun

[1] HybridPose: 6D Object Pose Estimation under Hybrid Representations, Chen Song, et al., https://arxiv.org/pdf/2001.01869v1.pdf, version 1
[2] HybridPose: 6D Object Pose Estimation under Hybrid Representations, Chen Song, et al., https://arxiv.org/pdf/2001.01869.pdf, version 4

Generating the model_info.json file

I am trying to generate the model_info.json file for further use in my own linemod extension. I already got the bounding box corners in the format that will be created in this function:

def convert_bbox_3d(model_dict):

Is it possible to get the reverse data with calculating this function "backwards" ? I am so over it and have no other idea on how to get the models_info of my own objects. I've searched the whole world wide web I guess..

If there are any other solutions I'd be so happy :-)

Why multi object pose estimation is not possible with linemod dataset?

Hello,

thank you very much for your nicely commented code!
In your paper under section 4.1.1 we have being told that multi label pose estimation is not possible with linemod dataset. Therefore Occlusion is used for that porpuse.
I have downloaded both datasets and cant really understand why this is not possible with linemod. Could you please assist me with this question?
It will be much helpful to let me train my own dataset with your project for multi lable pose estimation.

Im really grateful for your time

Checkpoints didn't save

I've checked the checkpoints folder, and .h5 file only updated in the begining epoch (like epoch 20...)
Message in terminal showed that Epoch 00028: ADD did not improve from 1.00000
Is this the reason why .h5 file didn't update?

Screenshot from 2022-07-07 14-58-45

6dof-augmentation didn't work

when I ran the debug.py file using following command:
python debug.py --phi 0 --annotations linemod SSD/ --object-id 1
the error show up like this
Screenshot from 2022-07-06 16-30-07
and I found that the problem is in this line shown below, the output is empty(annotations = [ ]).
Screenshot from 2022-07-06 16-34-50
Once I disable the 6dof-augmentation option, my annotation result can be visualized.
Screenshot from 2022-07-06 15-49-12
And another problem is why my 6d-pose bbox is always rotated 90 degrees ?

Where the occlusion dataset is?

Hello, I am a new guy. Can anyone tell me where the occlusion dataset is? I downloaded the link shown in README.md, but I only see the Linemod _preprocessed dataset. Is the occlusion dataset included in Linemod_preprocessed dataset? Sincere thanks!

Some Errors...

After training, I get this error #399 during the evaluation phase.

ValueError: Layer #399 (named "class_net/class-predict"), weight <tf.Variable 'class_net/class_net/class-predict/pointwise_kernel:0' shape=(1, 1, 64, 9) dtype=float32> has shape (1, 1, 64, 9), but the saved weight has shape (1, 1, 64, 810)

As far as I know, I knew I had to match the number of classes, but even if I match the num_classes of train.py and evaluate.py, it doesn't work. Please.

some error with training Linemod

Hi, I have some problems with training. The screenshots of the problem are as follows:
Screenshot from 2021-04-26 13-56-14
Screenshot from 2021-04-26 13-56-32
And Numpy version in my virtual environment is 1.20.0, I have tried many versions
Could you give me some advices? I look forword to your reply.Thanks.

Occlusion with multiple objects of the same type?

I currently have linemod working well detecting one of my custom objects. Thank you!

I now would like to extend this to support multiple objects of the same type using the occlusion model. However, your approach seems hard-coded to one model type per image. i.e., one 'drill' per image. This seems to manifest itself in creating the mask_all/merged_masks images - I need to identify each specific instance aligning the masked area to a specific object.

How would you recommend I implement multiple objects per type? (the default idea is to create new 'pseudo types', e.g., drill1, drill2, drill3 - but that fails as the objects are identical and would conflict.)

Here's an example of a single pallet being found in a simulated warehouse... And following that is an example of what I would like to detect, i.e., detect the pose of each pallet in a stack of 5 pallets.

10

and

stack5

Slow training using power GPU

Hi i have gtx1080 grapgics card and one epoch takes 5 minutes. And when i use tesla v100 on google cloud computing, takes 5 minutes too. I cant understand, How i can solve and what is the problem?

set batch size error

Error when I set the batch size to 2。

Note:GPU TITANV(16G)

Traceback (most recent call last):
File "/home/george/.conda/envs/cuda10/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 1472, in call
run_metadata_ptr)
tensorflow.python.framework.errors_impl.InvalidArgumentError: 2 root error(s) found.
(0) Invalid argument: Incompatible shapes: [2,49104] vs. [2]
[[{{node translation/truediv}}]]
[[loss/add_1/_4723]]
(1) Invalid argument: Incompatible shapes: [2,49104] vs. [2]
[[{{node translation/truediv}}]]
0 successful operations.
0 derived errors ignored.

training on preprocessed YCB-V dataset

Thank you for your work!
I converted the YCB-V dataset to the same format as linemod_preprocessed.
I then trained on a new preprocessed YCB-V dataset. The training took place in order to recognize the position of one object. However, after training, the scripts inference.py and inference_webcam.py did not give the expected result. That is, the object and the position of the object are not determined.
Of course, inside the "inference" scripts, I changed the following parameters: path_to_weights, class_to_name (for linemod), get_linemod_camera_matrix, get_linemod_3d_bboxes.

Can you please tell me, maybe I forgot to change some parameter?

AttributeError: 'str' object has no attribute 'decode'

I set up the repositoy as instructed (new environment -> Tensorflow 1.15.0 -> requirements.txt -> setup.py) and even downgraded my numpy version to 1.18.5. This seems to work successfully.

I still can't run the inference_webcam.py tough and receive the following output:

WARNING:tensorflow:From inference_webcam.py:124: The name tf.ConfigProto is deprecated. Please use tf.compat.v1.ConfigProto instead.

WARNING:tensorflow:From inference_webcam.py:126: The name tf.Session is deprecated. Please use tf.compat.v1.Session instead.

2021-06-01 08:37:54.436702: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
2021-06-01 08:37:54.438865: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library nvcuda.dll
2021-06-01 08:37:54.464910: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1618] Found device 0 with properties:
name: GeForce GTX 760 major: 3 minor: 0 memoryClockRate(GHz): 1.0715
pciBusID: 0000:01:00.0
2021-06-01 08:37:54.465119: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_100.dll
2021-06-01 08:37:54.470950: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cublas64_100.dll
2021-06-01 08:37:54.474237: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cufft64_100.dll
2021-06-01 08:37:54.475836: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library curand64_100.dll
2021-06-01 08:37:54.480456: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusolver64_100.dll
2021-06-01 08:37:54.483631: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusparse64_100.dll
2021-06-01 08:37:54.492904: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudnn64_7.dll
2021-06-01 08:37:54.494293: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1746] Adding visible gpu devices: 0
2021-06-01 08:37:55.110580: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1159] Device interconnect StreamExecutor with strength 1 edge matrix:
2021-06-01 08:37:55.110727: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1165]      0
2021-06-01 08:37:55.112652: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1178] 0:   N
2021-06-01 08:37:55.113550: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1304] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 1396 MB memory) -> physical GPU (device: 0, name: GeForce GTX 760, pci bus id: 0000:01:00.0, compute capability: 3.0)

Building model...

WARNING:tensorflow:From D:\Users\<User>\anaconda3\envs\EfficientPose2\lib\site-packages\tensorflow_core\python\util\deprecation.py:507: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with distribution=normal is deprecated and will be removed in a future version.
Instructions for updating:
`normal` is a deprecated alias for `truncated_normal`
WARNING:tensorflow:From D:\Users\<User>\anaconda3\envs\EfficientPose2\lib\site-packages\tensorflow_core\python\ops\resource_variable_ops.py:1630: calling BaseResourceVariable.__init__ (from tensorflow.python.ops.resource_variable_ops) with constraint is deprecated and will be removed in a future version.
Instructions for updating:
If using Keras pass *_constraint arguments to layers.
2021-06-01 08:38:11.434139: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1618] Found device 0 with properties:
name: GeForce GTX 760 major: 3 minor: 0 memoryClockRate(GHz): 1.0715
pciBusID: 0000:01:00.0
2021-06-01 08:38:11.434319: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_100.dll
2021-06-01 08:38:11.436316: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cublas64_100.dll
2021-06-01 08:38:11.436992: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cufft64_100.dll
2021-06-01 08:38:11.437411: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library curand64_100.dll
2021-06-01 08:38:11.437870: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusolver64_100.dll
2021-06-01 08:38:11.438298: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusparse64_100.dll
2021-06-01 08:38:11.438745: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudnn64_7.dll
2021-06-01 08:38:11.439238: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1746] Adding visible gpu devices: 0
2021-06-01 08:38:11.440169: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1618] Found device 0 with properties:
name: GeForce GTX 760 major: 3 minor: 0 memoryClockRate(GHz): 1.0715
pciBusID: 0000:01:00.0
2021-06-01 08:38:11.440266: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_100.dll
2021-06-01 08:38:11.440673: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cublas64_100.dll
2021-06-01 08:38:11.441075: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cufft64_100.dll
2021-06-01 08:38:11.441503: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library curand64_100.dll
2021-06-01 08:38:11.441936: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusolver64_100.dll
2021-06-01 08:38:11.442460: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusparse64_100.dll
2021-06-01 08:38:11.442859: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudnn64_7.dll
2021-06-01 08:38:11.443290: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1746] Adding visible gpu devices: 0
2021-06-01 08:38:11.443651: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1159] Device interconnect StreamExecutor with strength 1 edge matrix:
2021-06-01 08:38:11.443984: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1165]      0
2021-06-01 08:38:11.444343: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1178] 0:   N
2021-06-01 08:38:11.444790: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1304] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 1396 MB memory) -> physical GPU (device: 0, name: GeForce GTX 760, pci bus id: 0000:01:00.0, compute capability: 3.0)
WARNING:tensorflow:From C:\Users\<User>\Documents\GitHub\EfficientPose\layers.py:298: where (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.where in 2.0, which has the same broadcast rule as np.where

Done!

Loading weights...
Traceback (most recent call last):
  File "inference_webcam.py", line 317, in <module>
    main()
  File "inference_webcam.py", line 66, in main
    model, image_size = build_model_and_load_weights(phi, num_classes, score_threshold, path_to_weights)
  File "inference_webcam.py", line 221, in build_model_and_load_weights
    efficientpose_prediction.load_weights(path_to_weights, by_name=True)
  File "D:\Users\<User>\anaconda3\envs\EfficientPose2\lib\site-packages\tensorflow_core\python\keras\engine\training.py", line 182, in load_weights
    return super(Model, self).load_weights(filepath, by_name)
  File "D:\Users\<User>\anaconda3\envs\EfficientPose2\lib\site-packages\tensorflow_core\python\keras\engine\network.py", line 1371, in load_weights
    saving.load_weights_from_hdf5_group_by_name(f, self.layers)
  File "D:\Users\<User>\anaconda3\envs\EfficientPose2\lib\site-packages\tensorflow_core\python\keras\saving\hdf5_format.py", line 712, in load_weights_from_hdf5_group_by_name
    original_keras_version = f.attrs['keras_version'].decode('utf8')
AttributeError: 'str' object has no attribute 'decode'

Has someone experienced this issue and solved it?

Tensorflow2 support

Hello Everyone.

I am trying to run EfficientPose on RTX A4000 GPU, it works fine with GTX series but with higher CUDA versions, I guess tensorflow 1.15 is not sufficient. It needs to be run with tensorflow2 to get advantage of computation power.

If there is support for tensorflow2 or any pytorch implementation of EfficientPose it would be great help.

Thanks in advance.

Model not learning at all...

Similar to others, when I train the model it returns values of 0.0000 and nan. I did review issue #23 -- I did validate that both 2D and 3D bounding boxes are shown using debug.py. However, there was a magic step there that I missed to get to a solution (I believe I am using a COCO weights file.) (I even removed all and then retried again following instructions.) I'm on Ubuntu 18, GPU is RTX 3070, installed Cuda 10.2.

Attached are a file showing a complete run, and the 'conda list' results. EffPose.txt
EPCondaList.txt

I launched training with: (I've tried w/ no weights specified, and other variants - no change...)
python train.py --phi 0 --weights /media/pg/2TB/data/EfficientPose/Weights/COCO/efficientdet-d0.h5 linemod /media/pg/2TB/data/EfficientPose/Linemod_preprocessed/ --object-id 8

Here is the core problem:

1009 instances of class object with average precision: 0.0000
[EffPose.txt](https://github.com/ybkscht/EfficientPose/files/7062072/EffPose.txt)

1009 instances of class object with ADD accuracy: 0.0000
1009 instances of class object with ADD-S-Accuracy: 0.0000
1009 instances of class object with 5cm-5degree-Accuracy: 0.0000
[EPCondaList.txt](https://github.com/ybkscht/EfficientPose/files/7062073/EPCondaList.txt)

class object with Translation Differences in mm: Mean: nan and Std: nan
class object with Rotation Differences in degree: Mean: nan and Std: nan
1009 instances of class object with 2d-projection-Accuracy: 0.0000
1009 instances of class object with ADD(-S)-Accuracy: 0.0000
class object with Transformed Point Distances in mm: Mean: nan and Std: nan
class object with Transformed Symmetric Point Distances in mm: Mean: nan and Std: nan
class object with Mixed Transformed Point Distances in mm: Mean: nan and Std: nan
WARNING:tensorflow:From /home/pg/repos/EfficientPose/eval/eval_callback.py:240: The name tf.Summary is deprecated. Please use tf.compat.v1.Summary instead.

mAP: 0.0000
ADD: 0.0000
ADD-S: 0.0000
5cm_5degree: 0.0000
TranslationErrorMean_in_mm: nan
TranslationErrorStd_in_mm: nan
RotationErrorMean_in_degree: nan
RotationErrorStd_in_degree: nan
2D-Projection: 0.0000
Summed_Translation_Rotation_Error: nan
ADD(-S): 0.0000
AveragePointDistanceMean_in_mm: nan
AveragePointDistanceStd_in_mm: nan
AverageSymmetricPointDistanceMean_in_mm: nan
AverageSymmetricPointDistanceStd_in_mm: nan
MixedAveragePointDistanceMean_in_mm: nan
MixedAveragePointDistanceStd_in_mm: nan

Epoch 00001: ADD improved from -inf to 0.00000, saving model to checkpoints/26_08_2021_13_58_29/object_8/phi_0_linemod_best_ADD.h5
1790/1790 [==============================] - 1561s 872ms/step - loss: nan - classification_loss: 16538.6211 - regression_loss: nan - transformation_loss: 0.0000e+00
Epoch 2/500

And that continues, only classification_loss changes - and rather than be < 1.0 it's in the ten thousands.

Thanks!

inference.py error ....

Currently I am running INFERENCE.PY.
I get an error like the one below.
Can you tell what the problem is?

Error

Relying on driver to perform ptx compilation. This message will be only logged once.
2021-04-06 10:43:28.641402: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcublas.so.10.0
0%| | 0/1188 [28:43<?, ?it/s]
Traceback (most recent call last):
File "/home/user/pycharm-community-2020.3.3/plugins/python-ce/helpers/pydev/pydevd.py", line 1477, in _exec
pydev_imports.execfile(file, globals, locals) # execute the script
File "/home/user/pycharm-community-2020.3.3/plugins/python-ce/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "/home/user/PycharmProjects/EfficientPose/EfficientPose/inference.py", line 313, in
main()
File "/home/user/PycharmProjects/EfficientPose/EfficientPose/inference.py", line 103, in main
draw_name = draw_name)
File "/home/user/PycharmProjects/EfficientPose/EfficientPose/utils/visualization.py", line 166, in draw_detections
points_bbox_2D = project_bbox_3D_to_2D(class_to_bbox_3D[labels[i]], rotations[i, :], translation_vector, camera_matrix, append_centerpoint = True)
KeyError: 0
python-BaseException

Process finished with exit code 1

Thank you

a single instance of multiple objects on custom dataset.

Hi @ybkscht
I rewrote the generator for my dataset in BOP format. The main idea is that the masks of different objects are loaded separately for me, not as done in your example. If I train on a small dataset, then the training goes well. However, if I use a large data set, then I have problems with the memory of the video card.
Here's an example of the error I'm getting.

1/1790 [..............................] - ETA: 48:23:18 - loss: 254.8342 - classification_loss: 218.6633 - regression_loss: 0.2956 - transformation_loss: 1793.7649/home/pod/BLEND/EfficientPose/generators/common.py:281: UserWarning: Image with id 10692 (shape (960, 1280, 3)) contains the following invalid boxes: [[0. 0. 0. 0.]].
  annotations['bboxes'][invalid_indices, :]
2022-02-10 13:49:29.473884: I tensorflow/core/platform/default/device_tracer.cc:588] Collecting 0 kernel records, 0 memcpy records.
2022-02-10 13:49:29.474459: E tensorflow/core/platform/default/device_tracer.cc:70] CUPTI error: CUPTI could not be loaded or symbol could not be found.
   2/1790 [..............................] - ETA: 24:16:48 - loss: 179.8172 - classification_loss: 149.0374 - regression_loss: 0.1743 - transformation_loss: 1530.280   3/1790 [..............................] - ETA: 16:14:23 - loss: 144.1427 - classification_loss: 117.2560 - regression_loss: 0.1689 - transformation_loss: 1335.890   4/1790 [..............................] - ETA: 12:13:03 - loss: 121.3020 - classification_loss: 91.8570 - regression_loss: 0.1910 - transformation_loss: 1462.7010  13/1790 [..............................] - ETA: 3:52:06 - loss: 55.0581 - classification_loss: 30.6699 - regression_loss: 0.1850 - transformation_loss: 1210.15892022-02-10 13:49:33.735486: I tensorflow/stream_executor/cuda/cuda_driver.cc:831] failed to allocate 2.00G (2147483648 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
2022-02-10 13:49:33.736248: I tensorflow/stream_executor/cuda/cuda_driver.cc:831] failed to allocate 1.80G (1932735232 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
2022-02-10 13:49:33.736912: I tensorflow/stream_executor/cuda/cuda_driver.cc:831] failed to allocate 1.62G (1739461632 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
2022-02-10 13:49:33.737804: I tensorflow/stream_executor/cuda/cuda_driver.cc:831] failed to allocate 1.46G (1565515520 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
2022-02-10 13:49:33.738510: I tensorflow/stream_executor/cuda/cuda_driver.cc:831] failed to allocate 1.31G (1408964096 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
2022-02-10 13:49:33.739170: I tensorflow/stream_executor/cuda/cuda_driver.cc:831] failed to allocate 1.18G (1268067840 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
2022-02-10 13:49:33.739968: I tensorflow/stream_executor/cuda/cuda_driver.cc:831] failed to allocate 1.06G (1141261056 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
2022-02-10 13:49:33.740843: I tensorflow/stream_executor/cuda/cuda_driver.cc:831] failed to allocate 979.55M (1027134976 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
2022-02-10 13:49:33.741625: I tensorflow/stream_executor/cuda/cuda_driver.cc:831] failed to allocate 881.60M (924421632 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
2022-02-10 13:49:33.742464: I tensorflow/stream_executor/cuda/cuda_driver.cc:831] failed to allocate 793.44M (831979520 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
2022-02-10 13:49:33.743192: I tensorflow/stream_executor/cuda/cuda_driver.cc:831] failed to allocate 714.09M (748781568 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
2022-02-10 13:49:33.743889: I tensorflow/stream_executor/cuda/cuda_driver.cc:831] failed to allocate 642.68M (673903616 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
2022-02-10 13:49:33.744725: I tensorflow/stream_executor/cuda/cuda_driver.cc:831] failed to allocate 578.42M (606513408 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
2022-02-10 13:49:33.745502: I tensorflow/stream_executor/cuda/cuda_driver.cc:831] failed to allocate 520.57M (545862144 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
2022-02-10 13:49:33.746184: I tensorflow/stream_executor/cuda/cuda_driver.cc:831] failed to allocate 468.52M (491276032 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
2022-02-10 13:49:33.746848: I tensorflow/stream_executor/cuda/cuda_driver.cc:831] failed to allocate 421.67M (442148608 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
2022-02-10 13:49:33.747572: I tensorflow/stream_executor/cuda/cuda_driver.cc:831] failed to allocate 379.50M (397933824 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
2022-02-10 13:49:33.748306: I tensorflow/stream_executor/cuda/cuda_driver.cc:831] failed to allocate 341.55M (358140672 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
  17/1790 [..............................] - ETA: 2:59:56 - loss: 47.7832 - classification_loss: 23.7968 - regression_loss: 0.1838 - transformation_loss: 1190.12552022-02-10 13:49:35.387703: I tensorflow/stream_executor/cuda/cuda_driver.cc:831] failed to allocate 4.00G (4294967296 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
2022-02-10 13:49:35.388604: I tensorflow/stream_executor/cuda/cuda_driver.cc:831] failed to allocate 4.00G (4294967296 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY:
...............................................
2022-02-10 13:49:45.489750: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd7012700 next 229 of size 256
2022-02-10 13:49:45.489774: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd7012800 next 230 of size 256
2022-02-10 13:49:45.489800: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd7012900 next 231 of size 4608
2022-02-10 13:49:45.489821: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd7013b00 next 232 of size 4608
2022-02-10 13:49:45.489846: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd7014d00 next 1140 of size 256
2022-02-10 13:49:45.489871: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd7014e00 next 1141 of size 256
2022-02-10 13:49:45.489895: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd7014f00 next 1142 of size 2304
2022-02-10 13:49:45.489919: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd7015800 next 1143 of size 256
2022-02-10 13:49:45.489943: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd7015900 next 1144 of size 256
2022-02-10 13:49:45.489981: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd7015a00 next 1145 of size 2304
2022-02-10 13:49:45.490005: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd7016300 next 1146 of size 2304
2022-02-10 13:49:45.490030: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd7016c00 next 1147 of size 256
2022-02-10 13:49:45.490064: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd7016d00 next 1148 of size 2304
2022-02-10 13:49:45.490095: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd7017600 next 1149 of size 256
2022-02-10 13:49:45.490126: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd7017700 next 1150 of size 2304
2022-02-10 13:49:45.490154: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd7018000 next 1151 of size 256
2022-02-10 13:49:45.490178: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd7018100 next 1152 of size 256
2022-02-10 13:49:45.490203: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd7018200 next 233 of size 2816
2022-02-10 13:49:45.490227: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd7018d00 next 234 of size 2304
2022-02-10 13:49:45.490252: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd7019600 next 235 of size 221184
2022-02-10 13:49:45.490277: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd704f600 next 236 of size 16384
2022-02-10 13:49:45.490302: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd7053600 next 1309 of size 221184
2022-02-10 13:49:45.490326: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd7089600 next 1310 of size 221184
2022-02-10 13:49:45.490350: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd70bf600 next 1311 of size 4608
2022-02-10 13:49:45.490379: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd70c0800 next 1312 of size 41472
2022-02-10 13:49:45.490405: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd70caa00 next 1313 of size 81920
2022-02-10 13:49:45.490433: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd70dea00 next 1314 of size 10240
2022-02-10 13:49:45.490460: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd70e1200 next 1315 of size 28672
2022-02-10 13:49:45.490483: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd70e8200 next 1316 of size 256
2022-02-10 13:49:45.490506: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd70e8300 next 1317 of size 256
2022-02-10 13:49:45.490532: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd70e8400 next 1318 of size 256
2022-02-10 13:49:45.490556: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd70e8500 next 1319 of size 256
2022-02-10 13:49:45.490584: I tensorflow/core/common_runtime/bfc_allocator.cc:905] InUse at 0x7f8bd70e8600 next 18446744073709551615 of size 96768
2022-02-10 13:49:45.490606: I tensorflow/core/common_runtime/bfc_allocator.cc:914]      Summary of in-use Chunks by size: 
2022-02-10 13:49:45.490649: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 2039 Chunks of size 256 totalling 509.8KiB
2022-02-10 13:49:45.490678: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 46 Chunks of size 512 totalling 23.0KiB
2022-02-10 13:49:45.490704: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 49 Chunks of size 768 totalling 36.8KiB
2022-02-10 13:49:45.490730: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 34 Chunks of size 1024 totalling 34.0KiB
2022-02-10 13:49:45.490756: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 13 Chunks of size 1280 totalling 16.2KiB
2022-02-10 13:49:45.490783: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 11 Chunks of size 1536 totalling 16.5KiB
2022-02-10 13:49:45.490808: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 2 Chunks of size 1792 totalling 3.5KiB
2022-02-10 13:49:45.490834: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 41 Chunks of size 2048 totalling 82.0KiB
2022-02-10 13:49:45.490860: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 135 Chunks of size 2304 totalling 303.8KiB
2022-02-10 13:49:45.490887: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 6 Chunks of size 2560 totalling 15.0KiB
2022-02-10 13:49:45.490914: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 47 Chunks of size 2816 totalling 129.2KiB
2022-02-10 13:49:45.490940: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 4 Chunks of size 3072 totalling 12.0KiB
2022-02-10 13:49:45.490966: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 11 Chunks of size 3328 totalling 35.8KiB
2022-02-10 13:49:45.490993: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 29 Chunks of size 3584 totalling 101.5KiB
2022-02-10 13:49:45.491019: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 5 Chunks of size 3840 totalling 18.8KiB
2022-02-10 13:49:45.491045: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 80 Chunks of size 4096 totalling 320.0KiB
2022-02-10 13:49:45.491071: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 11 Chunks of size 4352 totalling 46.8KiB
2022-02-10 13:49:45.491096: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 49 Chunks of size 4608 totalling 220.5KiB
2022-02-10 13:49:45.491122: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 5 Chunks of size 4864 totalling 23.8KiB
2022-02-10 13:49:45.491149: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 4 Chunks of size 5120 totalling 20.0KiB
2022-02-10 13:49:45.491175: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 4 Chunks of size 5376 totalling 21.0KiB
2022-02-10 13:49:45.491202: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 3 Chunks of size 5632 totalling 16.5KiB
2022-02-10 13:49:45.491232: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 6 Chunks of size 5888 totalling 34.5KiB
2022-02-10 13:49:45.491260: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 6 Chunks of size 6144 totalling 36.0KiB
2022-02-10 13:49:45.491286: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 6400 totalling 6.2KiB
2022-02-10 13:49:45.491312: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 2 Chunks of size 6656 totalling 13.0KiB
2022-02-10 13:49:45.491338: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 7 Chunks of size 6912 totalling 47.2KiB
2022-02-10 13:49:45.491366: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 7424 totalling 7.2KiB
2022-02-10 13:49:45.491396: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 2 Chunks of size 7680 totalling 15.0KiB
2022-02-10 13:49:45.491422: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 4 Chunks of size 7936 totalling 31.0KiB
2022-02-10 13:49:45.491448: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 2 Chunks of size 8192 totalling 16.0KiB
2022-02-10 13:49:45.491474: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 5 Chunks of size 8704 totalling 42.5KiB
2022-02-10 13:49:45.491500: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 8960 totalling 8.8KiB
2022-02-10 13:49:45.491527: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 6 Chunks of size 9216 totalling 54.0KiB
2022-02-10 13:49:45.491553: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 9472 totalling 9.2KiB
2022-02-10 13:49:45.491580: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 12 Chunks of size 9728 totalling 114.0KiB
2022-02-10 13:49:45.491607: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 9984 totalling 9.8KiB
2022-02-10 13:49:45.491634: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 3 Chunks of size 10240 totalling 30.0KiB
2022-02-10 13:49:45.491660: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 2 Chunks of size 10496 totalling 20.5KiB
2022-02-10 13:49:45.491686: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 8 Chunks of size 13824 totalling 108.0KiB
2022-02-10 13:49:45.491712: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 14080 totalling 13.8KiB
2022-02-10 13:49:45.491740: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 4 Chunks of size 14592 totalling 57.0KiB
2022-02-10 13:49:45.491769: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 15872 totalling 15.5KiB
2022-02-10 13:49:45.491795: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 185 Chunks of size 16384 totalling 2.89MiB
2022-02-10 13:49:45.491822: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 3 Chunks of size 17408 totalling 51.0KiB
2022-02-10 13:49:45.491849: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 17664 totalling 17.2KiB
2022-02-10 13:49:45.491880: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 3 Chunks of size 18176 totalling 53.2KiB
2022-02-10 13:49:45.491923: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 2 Chunks of size 18688 totalling 36.5KiB
2022-02-10 13:49:45.491952: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 2 Chunks of size 18944 totalling 37.0KiB
2022-02-10 13:49:45.491980: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 4 Chunks of size 20480 totalling 80.0KiB
2022-02-10 13:49:45.492009: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 21504 totalling 21.0KiB
2022-02-10 13:49:45.492037: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 22272 totalling 21.8KiB
2022-02-10 13:49:45.492065: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 22528 totalling 22.0KiB
2022-02-10 13:49:45.492094: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 6 Chunks of size 23040 totalling 135.0KiB
2022-02-10 13:49:45.492123: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 5 Chunks of size 23296 totalling 113.8KiB
2022-02-10 13:49:45.492152: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 4 Chunks of size 24064 totalling 94.0KiB
2022-02-10 13:49:45.492182: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 24320 totalling 23.8KiB
2022-02-10 13:49:45.492209: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 24576 totalling 24.0KiB
2022-02-10 13:49:45.492238: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 25856 totalling 25.2KiB
2022-02-10 13:49:45.492266: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 27648 totalling 27.0KiB
2022-02-10 13:49:45.492294: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 2 Chunks of size 27904 totalling 54.5KiB
2022-02-10 13:49:45.492322: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 28160 totalling 27.5KiB
2022-02-10 13:49:45.492350: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 6 Chunks of size 28672 totalling 168.0KiB
2022-02-10 13:49:45.492378: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 29952 totalling 29.2KiB
2022-02-10 13:49:45.492405: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 2 Chunks of size 30464 totalling 59.5KiB
2022-02-10 13:49:45.492432: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 30976 totalling 30.2KiB
2022-02-10 13:49:45.492459: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 31232 totalling 30.5KiB
2022-02-10 13:49:45.492486: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 31488 totalling 30.8KiB
2022-02-10 13:49:45.492513: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 32256 totalling 31.5KiB
2022-02-10 13:49:45.492540: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 3 Chunks of size 32768 totalling 96.0KiB
2022-02-10 13:49:45.492567: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 35328 totalling 34.5KiB
2022-02-10 13:49:45.492595: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 26 Chunks of size 38400 totalling 975.0KiB
2022-02-10 13:49:45.492622: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 40960 totalling 40.0KiB
2022-02-10 13:49:45.492649: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 3 Chunks of size 41472 totalling 121.5KiB
2022-02-10 13:49:45.492676: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 2 Chunks of size 43520 totalling 85.0KiB
2022-02-10 13:49:45.492703: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 47616 totalling 46.5KiB
2022-02-10 13:49:45.492741: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 4 Chunks of size 48128 totalling 188.0KiB
2022-02-10 13:49:45.492759: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 49152 totalling 48.0KiB
2022-02-10 13:49:45.492777: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 58880 totalling 57.5KiB
2022-02-10 13:49:45.492796: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 89 Chunks of size 65536 totalling 5.56MiB
2022-02-10 13:49:45.492815: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 65792 totalling 64.2KiB
2022-02-10 13:49:45.492834: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 10 Chunks of size 67328 totalling 657.5KiB
2022-02-10 13:49:45.492855: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 69376 totalling 67.8KiB
2022-02-10 13:49:45.492873: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 73728 totalling 72.0KiB
2022-02-10 13:49:45.492891: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 15 Chunks of size 75264 totalling 1.08MiB
2022-02-10 13:49:45.492909: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 4 Chunks of size 76800 totalling 300.0KiB
2022-02-10 13:49:45.492927: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 78336 totalling 76.5KiB
2022-02-10 13:49:45.492946: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 9 Chunks of size 81920 totalling 720.0KiB
2022-02-10 13:49:45.492963: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 83200 totalling 81.2KiB
2022-02-10 13:49:45.492975: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 86016 totalling 84.0KiB
2022-02-10 13:49:45.492987: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 87040 totalling 85.0KiB
2022-02-10 13:49:45.492997: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 89600 totalling 87.5KiB
2022-02-10 13:49:45.493008: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 4 Chunks of size 93184 totalling 364.0KiB
2022-02-10 13:49:45.493020: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 96768 totalling 94.5KiB
2022-02-10 13:49:45.493031: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 5 Chunks of size 115200 totalling 562.5KiB
2022-02-10 13:49:45.493044: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 117504 totalling 114.8KiB
2022-02-10 13:49:45.493059: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 3 Chunks of size 131072 totalling 384.0KiB
2022-02-10 13:49:45.493072: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 140032 totalling 136.8KiB
2022-02-10 13:49:45.493087: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 142336 totalling 139.0KiB
2022-02-10 13:49:45.493101: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 145920 totalling 142.5KiB
2022-02-10 13:49:45.493117: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 146688 totalling 143.2KiB
2022-02-10 13:49:45.493131: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 152064 totalling 148.5KiB
2022-02-10 13:49:45.493143: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 11 Chunks of size 153600 totalling 1.61MiB
2022-02-10 13:49:45.493159: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 158976 totalling 155.2KiB
2022-02-10 13:49:45.493174: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 163328 totalling 159.5KiB
2022-02-10 13:49:45.493193: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 169216 totalling 165.2KiB
2022-02-10 13:49:45.493210: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 2 Chunks of size 174080 totalling 340.0KiB
2022-02-10 13:49:45.493236: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 16 Chunks of size 196608 totalling 3.00MiB
2022-02-10 13:49:45.493257: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 209920 totalling 205.0KiB
2022-02-10 13:49:45.493274: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 2 Chunks of size 215040 totalling 420.0KiB
2022-02-10 13:49:45.493292: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 20 Chunks of size 221184 totalling 4.22MiB
2022-02-10 13:49:45.493311: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 239360 totalling 233.8KiB
2022-02-10 13:49:45.493329: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 250880 totalling 245.0KiB
2022-02-10 13:49:45.493347: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 258560 totalling 252.5KiB
2022-02-10 13:49:45.493367: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 88 Chunks of size 262144 totalling 22.00MiB
2022-02-10 13:49:45.493385: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 262656 totalling 256.5KiB
2022-02-10 13:49:45.493403: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 278528 totalling 272.0KiB
2022-02-10 13:49:45.493421: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 14 Chunks of size 301056 totalling 4.02MiB
2022-02-10 13:49:45.493439: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 303104 totalling 296.0KiB
2022-02-10 13:49:45.493458: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 312832 totalling 305.5KiB
2022-02-10 13:49:45.493476: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 322560 totalling 315.0KiB
2022-02-10 13:49:45.493489: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 8 Chunks of size 327680 totalling 2.50MiB
2022-02-10 13:49:45.493504: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 2 Chunks of size 360448 totalling 704.0KiB
2022-02-10 13:49:45.493523: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 360960 totalling 352.5KiB
2022-02-10 13:49:45.493541: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 367104 totalling 358.5KiB
2022-02-10 13:49:45.493559: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 368640 totalling 360.0KiB
2022-02-10 13:49:45.493577: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 370688 totalling 362.0KiB
2022-02-10 13:49:45.493592: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 3 Chunks of size 372736 totalling 1.07MiB
2022-02-10 13:49:45.493603: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 386304 totalling 377.2KiB
2022-02-10 13:49:45.493613: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 404224 totalling 394.8KiB
2022-02-10 13:49:45.493625: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 441600 totalling 431.2KiB
2022-02-10 13:49:45.493637: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 453632 totalling 443.0KiB
2022-02-10 13:49:45.493656: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 457984 totalling 447.2KiB
2022-02-10 13:49:45.493674: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 10 Chunks of size 458752 totalling 4.38MiB
2022-02-10 13:49:45.493692: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 460032 totalling 449.2KiB
2022-02-10 13:49:45.493710: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 493056 totalling 481.5KiB
2022-02-10 13:49:45.493723: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 3 Chunks of size 516096 totalling 1.48MiB
2022-02-10 13:49:45.493734: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 524288 totalling 512.0KiB
2022-02-10 13:49:45.493753: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 562176 totalling 549.0KiB
2022-02-10 13:49:45.493771: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 589312 totalling 575.5KiB
2022-02-10 13:49:45.493789: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 5 Chunks of size 655360 totalling 3.12MiB
2022-02-10 13:49:45.493806: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 5 Chunks of size 688128 totalling 3.28MiB
2022-02-10 13:49:45.493823: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 777728 totalling 759.5KiB
2022-02-10 13:49:45.493834: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 11 Chunks of size 884736 totalling 9.28MiB
2022-02-10 13:49:45.493851: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 903424 totalling 882.2KiB
2022-02-10 13:49:45.493869: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 907776 totalling 886.5KiB
2022-02-10 13:49:45.493887: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 950272 totalling 928.0KiB
2022-02-10 13:49:45.493905: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 982528 totalling 959.5KiB
2022-02-10 13:49:45.493924: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 4 Chunks of size 983040 totalling 3.75MiB
2022-02-10 13:49:45.493942: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 59 Chunks of size 1048576 totalling 59.00MiB
2022-02-10 13:49:45.493972: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 1052672 totalling 1.00MiB
2022-02-10 13:49:45.493990: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 1064960 totalling 1.02MiB
2022-02-10 13:49:45.494008: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 36 Chunks of size 1179648 totalling 40.50MiB
2022-02-10 13:49:45.494026: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 2 Chunks of size 1212416 totalling 2.31MiB
2022-02-10 13:49:45.494043: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 1270272 totalling 1.21MiB
2022-02-10 13:49:45.494061: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 1327104 totalling 1.27MiB
2022-02-10 13:49:45.494079: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 1348864 totalling 1.29MiB
2022-02-10 13:49:45.494097: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 1392640 totalling 1.33MiB
2022-02-10 13:49:45.494115: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 1474560 totalling 1.41MiB
2022-02-10 13:49:45.494133: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 1476096 totalling 1.41MiB
2022-02-10 13:49:45.494151: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 3 Chunks of size 1490944 totalling 4.27MiB
2022-02-10 13:49:45.494170: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 1523712 totalling 1.45MiB
2022-02-10 13:49:45.494187: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 2 Chunks of size 1572864 totalling 3.00MiB
2022-02-10 13:49:45.494207: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 1626880 totalling 1.55MiB
2022-02-10 13:49:45.494224: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 1670144 totalling 1.59MiB
2022-02-10 13:49:45.494242: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 1677824 totalling 1.60MiB
2022-02-10 13:49:45.494260: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 2 Chunks of size 1686016 totalling 3.22MiB
2022-02-10 13:49:45.494277: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 1695744 totalling 1.62MiB
2022-02-10 13:49:45.494295: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 1748480 totalling 1.67MiB
2022-02-10 13:49:45.494315: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 1835008 totalling 1.75MiB
2022-02-10 13:49:45.494334: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 6 Chunks of size 1944064 totalling 11.12MiB
2022-02-10 13:49:45.494352: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 1963776 totalling 1.87MiB
2022-02-10 13:49:45.494372: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 27 Chunks of size 1966080 totalling 50.62MiB
2022-02-10 13:49:45.494389: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 2064384 totalling 1.97MiB
2022-02-10 13:49:45.494407: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 2097152 totalling 2.00MiB
2022-02-10 13:49:45.494425: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 2343680 totalling 2.23MiB
2022-02-10 13:49:45.494443: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 4 Chunks of size 2359296 totalling 9.00MiB
2022-02-10 13:49:45.494461: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 2360064 totalling 2.25MiB
2022-02-10 13:49:45.494477: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 2635008 totalling 2.51MiB
2022-02-10 13:49:45.494490: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 21 Chunks of size 2752512 totalling 55.12MiB
2022-02-10 13:49:45.494501: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 2967552 totalling 2.83MiB
2022-02-10 13:49:45.494511: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 3123200 totalling 2.98MiB
2022-02-10 13:49:45.494521: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 3129600 totalling 2.98MiB
2022-02-10 13:49:45.494532: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 3844096 totalling 3.67MiB
2022-02-10 13:49:45.494543: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 12 Chunks of size 3932160 totalling 45.00MiB
2022-02-10 13:49:45.494553: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 3 Chunks of size 6291456 totalling 18.00MiB
2022-02-10 13:49:45.494564: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 6373888 totalling 6.08MiB
2022-02-10 13:49:45.494574: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 7241984 totalling 6.91MiB
2022-02-10 13:49:45.494585: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 7356416 totalling 7.02MiB
2022-02-10 13:49:45.494596: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 7841792 totalling 7.48MiB
2022-02-10 13:49:45.494606: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 8209920 totalling 7.83MiB
2022-02-10 13:49:45.494623: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 3 Chunks of size 8388608 totalling 24.00MiB
2022-02-10 13:49:45.494634: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 9043712 totalling 8.62MiB
2022-02-10 13:49:45.494645: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 10 Chunks of size 9437184 totalling 90.00MiB
2022-02-10 13:49:45.494656: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 9765632 totalling 9.31MiB
2022-02-10 13:49:45.494666: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 9954560 totalling 9.49MiB
2022-02-10 13:49:45.494677: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 10158080 totalling 9.69MiB
2022-02-10 13:49:45.494691: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 10173952 totalling 9.70MiB
2022-02-10 13:49:45.494703: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 11511552 totalling 10.98MiB
2022-02-10 13:49:45.494714: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 13721600 totalling 13.09MiB
2022-02-10 13:49:45.494725: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 16408576 totalling 15.65MiB
2022-02-10 13:49:45.494735: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 17760512 totalling 16.94MiB
2022-02-10 13:49:45.494747: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 25905152 totalling 24.71MiB
2022-02-10 13:49:45.494758: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 27212544 totalling 25.95MiB
2022-02-10 13:49:45.494768: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 31740160 totalling 30.27MiB
2022-02-10 13:49:45.494779: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 1 Chunks of size 37192192 totalling 35.47MiB
2022-02-10 13:49:45.494790: I tensorflow/core/common_runtime/bfc_allocator.cc:917] 2 Chunks of size 843000064 totalling 1.57GiB
2022-02-10 13:49:45.494801: I tensorflow/core/common_runtime/bfc_allocator.cc:921] Sum Total of in-use chunks: 2.37GiB
2022-02-10 13:49:45.494811: I tensorflow/core/common_runtime/bfc_allocator.cc:923] total_region_allocated_bytes_: 3274068224 memory_limit_: 10355199181 available bytes: 7081130957 curr_region_allocation_bytes_: 4294967296
2022-02-10 13:49:45.494830: I tensorflow/core/common_runtime/bfc_allocator.cc:929] Stats: 
Limit:                 10355199181
InUse:                  2540005120
MaxInUse:               3024825344
NumAllocs:                  176618
MaxAllocSize:            976457984

2022-02-10 13:49:45.495199: W tensorflow/core/common_runtime/bfc_allocator.cc:424] ***______***************************______***************************______*************************
2022-02-10 13:49:45.495745: W tensorflow/core/framework/op_kernel.cc:1651] OP_REQUIRES failed at reduction_ops_common.h:180 : Resource exhausted: OOM when allocating tensor with shape[70250000] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
Traceback (most recent call last):
  File "train.py", line 368, in <module>
    main()
  File "train.py", line 195, in main
    validation_data = validation_generator
  File "/home/pod/anaconda3/envs/EP/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training.py", line 1296, in fit_generator
    steps_name='steps_per_epoch')
  File "/home/pod/anaconda3/envs/EP/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training_generator.py", line 265, in model_iteration
    batch_outs = batch_function(*batch_data)
  File "/home/pod/anaconda3/envs/EP/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training.py", line 1017, in train_on_batch
    outputs = self.train_function(ins)  # pylint: disable=not-callable
  File "/home/pod/anaconda3/envs/EP/lib/python3.7/site-packages/tensorflow_core/python/keras/backend.py", line 3476, in __call__
    run_metadata=self.run_metadata)
  File "/home/pod/anaconda3/envs/EP/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 1472, in __call__
    run_metadata_ptr)
tensorflow.python.framework.errors_impl.ResourceExhaustedError: 2 root error(s) found.
  (0) Resource exhausted: OOM when allocating tensor with shape[70250000] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
	 [[{{node loss/transformation_loss/norm/Sum}}]]
Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.

	 [[loss/add_1/_7419]]
Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.

  (1) Resource exhausted: OOM when allocating tensor with shape[70250000] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
	 [[{{node loss/transformation_loss/norm/Sum}}]]
Hint: If you want to see 

I'm not entirely sure that this is a problem with the video memory. But if so, could you advise me how to solve a similar problem?

Learning outcomes on complex objects

Hi all, i would like to share the results of training on the geometric body torus object. I believe that this is a complex object for learning due to its symmetry. Without any additional marks, it is quite difficult to determine its orientation. Training was carried out with the following add-ons: hyperparameter phi = 0, epochs = 500, input image size 640x480, pretrained weights efficientdet-0, batch-size = 3 were used, the training set consisted of 8k synthetically generated images. The images were generated using the physically based rendering (PBR) method. The camera position was generated in the range from 20 to 180 centimeters. The material of the object was randomized by roughness, color and reflection parameter. The object itself could be in varying degrees of occlusion. Lighting was also randomized.
Here is the output I got at epoch 500, with the best result coming a little early. Unfortunately I can't watch it:
`Epoch 500/500
1789/1790 [============================>.] - ETA: 0s - loss: 0.5182 - classificaRunning network: 100% (7920 of 7920) |###| Elapsed Time: 0:08:53 Time: 0:08:53
Parsing annotations: 100% (7920 of 7920) || Elapsed Time: 0:00:00 Time: 0:00:00
100%|██████████████████████████████████████| 7920/7920 [00:32<00:00, 247.40it/s]
7920 instances of class object with average precision: 0.8979
7920 instances of class object with ADD accuracy: 0.0097
7920 instances of class object with ADD-S-Accuracy: 0.5595
7920 instances of class object with 5cm-5degree-Accuracy: 0.0020
class object with Translation Differences in mm: Mean: 30.4905 and Std: 36.1610
class object with Rotation Differences in degree: Mean: 132.0638 and Std: 54.9160
7920 instances of class object with 2d-projection-Accuracy: 0.0302
7920 instances of class object with ADD(-S)-Accuracy: 0.5595
class object with Transformed Point Distances in mm: Mean: 80.4800 and Std: 30.5043
class object with Transformed Symmetric Point Distances in mm: Mean: 17.8650 and Std: 23.0659
class object with Mixed Transformed Point Distances in mm: Mean: 17.8650 and Std: 23.0659
mAP: 0.8979
ADD: 0.0097
ADD-S: 0.5595
5cm_5degree: 0.0020
TranslationErrorMean_in_mm: 30.4905
TranslationErrorStd_in_mm: 36.1610
RotationErrorMean_in_degree: 132.0638
RotationErrorStd_in_degree: 54.9160
2D-Projection: 0.0302
Summed_Translation_Rotation_Error: 253.6313
ADD(-S): 0.5595
AveragePointDistanceMean_in_mm: 80.4800
AveragePointDistanceStd_in_mm: 30.5043
AverageSymmetricPointDistanceMean_in_mm: 17.8650
AverageSymmetricPointDistanceStd_in_mm: 23.0659
MixedAveragePointDistanceMean_in_mm: 17.8650
MixedAveragePointDistanceStd_in_mm: 23.0659

Epoch 00500: ADD-S did not improve from 0.62500
`
Here is an example images:
000011

I also conducted training on a geometric body: a cube. The learning outcomes were worse. I would like to know if the only solution for symmetrical objects is adding recognition marks?

IndexError: list index out of range in evaluation.

Dear @ybkscht

I ran the code using standard lines I saw in your GitHub and I am not sure if I am doing it well but I had this error.
IndexError: list index out of range
When I execute this line:
python3 evaluate.py --phi 3 --weights Weights/Occlusion/phi_3_occlusion_best_ADD\(-S\).h5 linemod Database/linemod/linemod/Linemod_preprocessed

Please, let me know if this running is fine or not. I am also trying to adapt the code for TF2.x (in particular 2.4).

Thank you in advance for the time and effort in this code.

detailed (I added pdb functions and some prints in case code lines order are not exactly the same as the code in the repository):

    evaluate_model(prediction_model, generator, args.validation_image_save_path, args.score_threshold)
  File "evaluate.py", line 208, in evaluate_model
    diameter_threshold = diameter_threshold
  File "/home/xsensors/Edgar/EfficientPose/eval/common.py", line 387, in evaluate
    all_detections     = _get_detections(generator, model, score_threshold=score_threshold, max_detections=max_detections, save_path=save_path)
  File "/home/xsensors/Edgar/EfficientPose/eval/common.py", line 111, in _get_detections
    boxes, scores, labels, rotations, translations = model.predict_on_batch([np.expand_dims(image, axis=0), np.expand_dims(camera_input, axis=0)])[:5]
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py", line 1820, in predict_on_batch
    outputs = self.predict_function(iterator)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/def_function.py", line 828, in __call__
    result = self._call(*args, **kwds)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/def_function.py", line 871, in _call
    self._initialize(args, kwds, add_initializers_to=initializers)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/def_function.py", line 726, in _initialize
    *args, **kwds))
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/function.py", line 2969, in _get_concrete_function_internal_garbage_collected
    graph_function, _ = self._maybe_define_function(args, kwargs)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/function.py", line 3361, in _maybe_define_function
    graph_function = self._create_graph_function(args, kwargs)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/function.py", line 3206, in _create_graph_function
    capture_by_value=self._capture_by_value),
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/func_graph.py", line 990, in func_graph_from_py_func
    func_outputs = python_func(*func_args, **func_kwargs)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/def_function.py", line 634, in wrapped_fn
    out = weak_wrapped_fn().__wrapped__(*args, **kwds)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/func_graph.py", line 977, in wrapper
    raise e.ag_error_metadata.to_exception(e)
tensorflow.python.autograph.impl.api.StagingError: in user code:

    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:1478 predict_function  *
        return step_function(self, iterator)
    /home/xsensors/Edgar/EfficientPose/model.py:755 call  *
        feature = self.norm_layer[i][self.level](feature)
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/training/tracking/data_structures.py:380 __getitem__
        return self._storage[key]

    IndexError: list index out of range

Loss dropping but ADD still 0

Hi, @ybkscht
Thank you for this amazing work.
I have been trying to run the model on a custom dataset, although the loss is dropping, but the ADD still 0.
Thank you in advance.
(Here is the output after 5 epochs on 1217 images dataset)
`1035 instances of class object with average precision: 0.9975
1035 instances of class object with ADD accuracy: 0.0000
1035 instances of class object with ADD-S-Accuracy: 0.0000
1035 instances of class object with 5cm-5degree-Accuracy: 0.0000
class object with Translation Differences in mm: Mean: 24.2150 and Std: 2.5975
class object with Rotation Differences in degree: Mean: 59.8067 and Std: 21.9196
1035 instances of class object with 2d-projection-Accuracy: 0.0000
1035 instances of class object with ADD(-S)-Accuracy: 0.0000
class object with Transformed Point Distances in mm: Mean: 18.0325 and Std: 3.3026
class object with Transformed Symmetric Point Distances in mm: Mean: 11.4459 and Std: 3.4595
class object with Mixed Transformed Point Distances in mm: Mean: 18.0325 and Std: 3.3026
mAP: 0.9975
ADD: 0.0000
ADD-S: 0.0000
5cm_5degree: 0.0000
TranslationErrorMean_in_mm: 24.2150
TranslationErrorStd_in_mm: 2.5975
RotationErrorMean_in_degree: 59.8067
RotationErrorStd_in_degree: 21.9196
2D-Projection: 0.0000
Summed_Translation_Rotation_Error: 108.5388
ADD(-S): 0.0000
AveragePointDistanceMean_in_mm: 18.0325
AveragePointDistanceStd_in_mm: 3.3026
AverageSymmetricPointDistanceMean_in_mm: 11.4459
AverageSymmetricPointDistanceStd_in_mm: 3.4595
MixedAveragePointDistanceMean_in_mm: 18.0325
MixedAveragePointDistanceStd_in_mm: 3.3026

Epoch 00005: ADD did not improve from 0.00000`

Paper Typo?

image

The default # of epochs in train.py is 500. Is the 5,000 epochs in the paper a typo? 500 epochs of training already takes several days on my 2080 GPU.

Also, epoch is defined as 1,790. Usually epoch is defined as 1 loop thru the whole training set, thus changing the mini-batch size would change number of steps in an epoch. Is there a reason why epoch is defined differently in this repo?

Thanks ybkscht!

Shape mismatch

When I try to run the command: python inference.py I get the following error.

ValueError: Layer #480 (named "class_net/class-predict"), weight <tf.Variable 'class_net/class_net/class-predict/pointwise_kernel:0' shape=(1, 1, 64, 72) dtype=float32> has shape (1, 1, 64, 72), but the saved weight has shape (1, 1, 64, 9).
Does anyone know how to fix this issue?

Training on custom dataset

Can anyone help me solve this problem?
I try to train the network using my own dataset, but got an error like this
Screenshot from 2022-07-01 19-22-17

My dataset folder look like the picture below.
I followed the file format in Linemod_preprocessed folder.
Screenshot from 2022-07-01 19-28-04

Loss nonconvergence

I train my data set, what's the reason why the loss doesn't converge you know?But mAP is good.

11
22
33

Launching EfficientPose in ros

Hi, @ybkscht

I am trying to run your EfficientPose project in ros and test it with KUKA youbot. Can you give advice on how to implement my idea?

I am using ros melodic. And I ran into the following problem. When you initialize the inference.py and inference_webcam.py scripts, you use modules that have libraries that work only in python 3. As you know, ros only accepts the syntax of python 2. Please tell me the best way to implement such a project. Should I change the syntax of the whole project to python 2, or is it better to reinstall ros with python 3 support?

How to improve the speed?

Hi,

I want to speed up the training progress of the model. I only ran 32 epochs in 10 hours under GPU Tesla V100. I think it will take more time to run 500 epochs. Is this the normal training speed? (run completely according to the readme.md instance statement) what parameters can I modify to speed up the training process? Is it feasible to increase the batch size? Finally, can a command statement run the training results of multiple categories at a time instead of detecting only one category of objects at a time?

Thanks ybkscht!

about ***.txt in valid_poses folder

Thank you for your work!
I want to create custom dataset, but I don't know what do these documents represent. can you help me? thank you~

like ape/0.txt:
image size
640 480
001
rotation:
-0.602378699981 -0.0263068421656 -0.79796082795
-0.536762513 0.753302299834 0.380355424736
0.591028389942 0.657339229582 -0.467842840959
center:
0.183636333011 0.131496850447 -1.14730061109
extend:
0.0776 0.09177 0.075868

00000

I can't evaluate according to the procedure given on the page using python evaluate.py

inference.py works fine but I can't evaluate on linemod and occlusion using evaluate.py. When I enter the path to dataset and path to weights in the following command,
"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"

I give the path to dataset and path to weights as follows:
python evaluate.py --phi 0 --weights /weights/Linemod/object_8/phi_0_linemod_best_ADD.h5 --validation-image-save-path /predictions/linemod_eval/ linemod ./Datasets/Linemod_preprocessed/ --object-id 8

python evaluate.py --phi 0 --weights /weights/Occlusion/phi_0_occlusion_best_ADD(-S).h5 --validation-image-save-path /predictions/occlusion/ occlusion ./Datasets/Linemod_preprocessed/

It gives the following error:

2022-04-04 15:58:54.719694: F tensorflow/stream_executor/lib/statusor.cc:34] Attempting to fetch value instead of handling error Internal: failed to get device attribute 13 for device 0: CUDA_ERROR_UNKNOWN: unknown error

ADD not improving

Hey @ybkscht , I tried a lot of things but the ADD is not improving. I don't even see statements like "ADD improved/ ADD did not improve". The model does get better though.

The ADD value mostly remains 0 or changes to 0.0010 or some other small value.
Can you suggest some direction?
image

I have also tried for a large dataset like 10,000 synthetically generated images but I don't see a nice performance in the real world. What do you think should be the number of epochs to get a good real-world performance, when starting with pre-trained Linemod or Occlusion dataset weights?

Thanks!

NotImplementedError bug documentation

I was getting the following error on Ubuntu 18.04:

NotImplementedError: Cannot convert a symbolic Tensor (filtered_detections/map/while/strided_slice_1:0) to a numpy array.

I installed python 3.6 using conda instead and it fixed it.

Hopefully this can help someone else :)

EfficientPose Training

Hi, I am a student and I want to use EfficientPose. I have been working on the 6th step of the installation process. Below is what I get after running the command: python setup.py build_ext --inplace.

(EfficientPose) user@Puget-225743:~/EfficientPose$ python setup.py build_ext --inplace
running build_ext

Also, when training phi = 0 EfficientPose model on object 8 of Linemod (driller) using COCO pretrained weights, I get nan values as shown in the screenshot below.
Screenshot from 2021-11-11 18-47-43

Do you know what might be going on and how I can solve this issue? Thank you.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.