Code Monkey home page Code Monkey logo

morefusion's Introduction

MoreFusion

Multi-object Reasoning for 6D Pose Estimation from Volumetric Fusion

Kentaro Wada, Edgar Sucar, Stephen James, Daniel Lenton, Andrew J. Davison
Dyson Robotics Laboratory , Imperial College London
IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2020

MoreFusion is an object-level reconstruction system that builds a map with known-shaped objects, exploiting volumetric reconstruction of detected objects in a real-time, incremental scene reconstruction senario. The key components are:

  • Occupancy-based volumetric reconstruction of detected objects for model alignment in the later stage;
  • Volumetric pose prediction that exploits volumetric reconstruction and CNN feature extraction from the image observation;
  • Joint pose refinement of objects based on geometric consistency among objects and impenetrable space.

Installation

There're several options for installation:

NOTE: We have developed this project on Ubuntu 16.04 (and ROS Kinetic, CUDA 10.1), so several code changes may be needed to adapt to other OS (and ROS, CUDA versions).

Python project only

make install
source .anaconda3/bin/activate

ROS project for camera demonstration

cd ros/
make install
source ../.anaconda3/bin/activate
source devel/setup.sh

ROS project for robotic demonstration

  • robot-agent: A computer with CUDA and a GPU for visual processing.
  • robot-node: A computer with a real-time OS for a Panda robot.

@robot-agent

Same as above instruction: ROS project for camera demonstration.

@robot-node

cd ros/
catkin build morefusion_ros_panda
source devel/setup.sh

rosrun morefusion_ros_panda create_udev_rules.sh

Usage

Training & Inference

Pre-trained models are provided in the demos as following, so this process is optional to run the demos.

Instance Segmentation

cd examples/ycb_video/instance_segm
./download_dataset.py
mpirun -n 4 python train_multi.py  # 4-gpu training
./image_demo.py --model logs/XXX/XXX.npz

6D pose prediction

# baseline model (point-cloud-based)
cd examples/ycb_video/singleview_pcd
./download_dataset.py
./train.py --gpu 0 --centerize-pcd --pretrained-resnet18  # 1-gpu
mpirun -n 4 ./train.py --multi-node --centerize-pcd --pretrained-resnet18  # 4-gpu

# volumetric prediction model (3D-CNN-based)
cd examples/ycb_video/singleview_3d
./download_dataset.py
./train.py --gpu 0 --pretrained-resnet18 --with-occupancy  # 1-gpu
mpirun -n 4 ./train.py --multi-node --pretrained-resnet18 --with-occupancy  # 4-gpu
mpirun -n 4 ./train.py --multi-node --pretrained-resnet18  # w/o occupancy

# inference
./download_pretrained_model.py  # for downloading pretrained model
./demo.py logs/XXX/XXX.npz
./evaluate.py logs/XXX

Joint pose refinement

cd examples/ycb_video/pose_refinement
./check_icp_vs_icc.py  # press [s] to start

Camera demonstration

Static Scene

# using orb-slam2 for camera tracking
roslaunch morefusion_ros rs_rgbd.launch
roslaunch morefusion_ros rviz_static.desk.launch
roslaunch morefusion_ros setup_static.desk.launch

Figure 1. Static Scene Reconstruction with the Human Hand-mounted Camera.
# using robotic kinematics for camera tracking
roslaunch morefusion_ros rs_rgbd.robot.launch
roslaunch morefusion_ros rviz_static.robot.launch
roslaunch morefusion_ros setup_static.robot.launch

Figure 2. Static Scene Reconstruction with the Robotic Hand-mounted Camera.

Dynamic Scene

roslaunch morefusion_ros rs_rgbd.launch
roslaunch morefusion_ros rviz_dynamic.desk.launch
roslaunch morefusion_ros setup_dynamic.desk.launch

roslaunch morefusion_ros rs_rgbd.robot.launch
roslaunch morefusion_ros rviz_dynamic.robot.launch
roslaunch morefusion_ros setup_dynamic.robot.launch

Figure 3. Dynamic Scene Reconstruction with the Human Hand-mounted Camera.

Robotic Demonstration

Robotic Pick-and-Place

robot-agent $ sudo ntpdate 0.uk.pool.ntp.org  # for time synchronization
robot-node  $ sudo ntpdate 0.uk.pool.ntp.org  # for time synchronization

robot-node  $ roscore

robot-agent $ roslaunch morefusion_ros_panda panda.launch

robot-node  $ roslaunch morefusion_ros rs_rgbd.robot.launch
robot-node  $ roslaunch morefusion_ros rviz_static.launch
robot-node  $ roslaunch morefusion_ros setup_static.robot.launch TARGET:=2
robot-node  $ rosrun morefusion_ros robot_demo_node.py
>>> ri.run()

Figure 4. Targetted Object Pick-and-Place. (a) Scanning the Scene; (b) Removing Distractor Objects; (c) Picking Target Object.

Citation

If you find MoreFusion useful, please consider citing the paper as:

@inproceedings{Wada:etal:CVPR2020,
  title={{MoreFusion}: Multi-object Reasoning for {6D} Pose Estimation from Volumetric Fusion},
  author={Kentaro Wada and Edgar Sucar and Stephen James and Daniel Lenton and Andrew J. Davison},
  booktitle={Proceedings of the {IEEE} Conference on Computer Vision and Pattern Recognition ({CVPR})},
  year={2020},
}

morefusion's People

Contributors

dependabot[bot] avatar djl11 avatar wkentaro 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

morefusion's Issues

How do I prepare "franka_control_custom"?

I'm creating the environment according to the procedure in "README.md" now.
Using"ubuntu16.04LTS image" on the Docker of ubuntu and built the environment there.

There was a problem with "rosrunfranka_control_custom create_udev_rules.sh".


(base) root@7ceaf1e36560:~/ros_morefusion# rosrun franka_control_custom create_udev_rules.sh
[rospack] Error: package 'franka_control_custom' not found

How do I prepare "franka_control_custom"?

Error in installation "ROS project for camera demonstration"

When running the command " ./rosdep_install.sh" it fails with the following code:
"
#All required rosdeps installed successfully

  • rosdep install --from-path src/jsk-ros-pkg/jsk_recognition/jsk_recognition_utils --skip-keys python-chainer-pip
    given path 'src/jsk-ros-pkg/jsk_recognition/jsk_recognition_utils' does not exist
    "
    How can I resolve this issue?

Edit: the itemize sign should be a +

python make failing, source directory does not exist

cd morefusion/
make install

Outcome:



==> Checking the remaining change in src/
==> Installing Anaconda3 to: /home/lorenzo/ghubrepo/morefusion/.anaconda3
PREFIX=/home/lorenzo/ghubrepo/morefusion/.anaconda3
Unpacking payload ...
Collecting package metadata (current_repodata.json): done                                                                           
Solving environment: done

## Package Plan ##

  environment location: /home/lorenzo/ghubrepo/morefusion/.anaconda3

  added / updated specs:
    - _libgcc_mutex==0.1=main
    - _openmp_mutex==4.5=1_gnu
    - brotlipy==0.7.0=py39h27cfd23_1003
    - ca-certificates==2022.3.29=h06a4308_1
    - certifi==2021.10.8=py39h06a4308_2
    - cffi==1.15.0=py39hd667e15_1
    - charset-normalizer==2.0.4=pyhd3eb1b0_0
    - colorama==0.4.4=pyhd3eb1b0_0
    - conda-content-trust==0.1.1=pyhd3eb1b0_0
    - conda-package-handling==1.8.1=py39h7f8727e_0
    - conda==4.12.0=py39h06a4308_0
    - cryptography==36.0.0=py39h9ce1e76_0
    - idna==3.3=pyhd3eb1b0_0
    - ld_impl_linux-64==2.35.1=h7274673_9
    - libffi==3.3=he6710b0_2
    - libgcc-ng==9.3.0=h5101ec6_17
    - libgomp==9.3.0=h5101ec6_17
    - libstdcxx-ng==9.3.0=hd4cf53a_17
    - ncurses==6.3=h7f8727e_2
    - openssl==1.1.1n=h7f8727e_0
    - pip==21.2.4=py39h06a4308_0
    - pycosat==0.6.3=py39h27cfd23_0
    - pycparser==2.21=pyhd3eb1b0_0
    - pyopenssl==22.0.0=pyhd3eb1b0_0
    - pysocks==1.7.1=py39h06a4308_0
    - python==3.9.12=h12debd9_0
    - readline==8.1.2=h7f8727e_1
    - requests==2.27.1=pyhd3eb1b0_0
    - ruamel_yaml==0.15.100=py39h27cfd23_0
    - setuptools==61.2.0=py39h06a4308_0
    - six==1.16.0=pyhd3eb1b0_1
    - sqlite==3.38.2=hc218d9a_0
    - tk==8.6.11=h1ccaba5_0
    - tqdm==4.63.0=pyhd3eb1b0_0
    - tzdata==2022a=hda174b7_0
    - urllib3==1.26.8=pyhd3eb1b0_0
    - wheel==0.37.1=pyhd3eb1b0_0
    - xz==5.2.5=h7b6447c_0
    - yaml==0.2.5=h7b6447c_0
    - zlib==1.2.12=h7f8727e_1


The following NEW packages will be INSTALLED:

  _libgcc_mutex      pkgs/main/linux-64::_libgcc_mutex-0.1-main
  _openmp_mutex      pkgs/main/linux-64::_openmp_mutex-4.5-1_gnu
  brotlipy           pkgs/main/linux-64::brotlipy-0.7.0-py39h27cfd23_1003
  ca-certificates    pkgs/main/linux-64::ca-certificates-2022.3.29-h06a4308_1
  certifi            pkgs/main/linux-64::certifi-2021.10.8-py39h06a4308_2
  cffi               pkgs/main/linux-64::cffi-1.15.0-py39hd667e15_1
  charset-normalizer pkgs/main/noarch::charset-normalizer-2.0.4-pyhd3eb1b0_0
  colorama           pkgs/main/noarch::colorama-0.4.4-pyhd3eb1b0_0
  conda              pkgs/main/linux-64::conda-4.12.0-py39h06a4308_0
  conda-content-tru~ pkgs/main/noarch::conda-content-trust-0.1.1-pyhd3eb1b0_0
  conda-package-han~ pkgs/main/linux-64::conda-package-handling-1.8.1-py39h7f8727e_0
  cryptography       pkgs/main/linux-64::cryptography-36.0.0-py39h9ce1e76_0
  idna               pkgs/main/noarch::idna-3.3-pyhd3eb1b0_0
  ld_impl_linux-64   pkgs/main/linux-64::ld_impl_linux-64-2.35.1-h7274673_9
  libffi             pkgs/main/linux-64::libffi-3.3-he6710b0_2
  libgcc-ng          pkgs/main/linux-64::libgcc-ng-9.3.0-h5101ec6_17
  libgomp            pkgs/main/linux-64::libgomp-9.3.0-h5101ec6_17
  libstdcxx-ng       pkgs/main/linux-64::libstdcxx-ng-9.3.0-hd4cf53a_17
  ncurses            pkgs/main/linux-64::ncurses-6.3-h7f8727e_2
  openssl            pkgs/main/linux-64::openssl-1.1.1n-h7f8727e_0
  pip                pkgs/main/linux-64::pip-21.2.4-py39h06a4308_0
  pycosat            pkgs/main/linux-64::pycosat-0.6.3-py39h27cfd23_0
  pycparser          pkgs/main/noarch::pycparser-2.21-pyhd3eb1b0_0
  pyopenssl          pkgs/main/noarch::pyopenssl-22.0.0-pyhd3eb1b0_0
  pysocks            pkgs/main/linux-64::pysocks-1.7.1-py39h06a4308_0
  python             pkgs/main/linux-64::python-3.9.12-h12debd9_0
  readline           pkgs/main/linux-64::readline-8.1.2-h7f8727e_1
  requests           pkgs/main/noarch::requests-2.27.1-pyhd3eb1b0_0
  ruamel_yaml        pkgs/main/linux-64::ruamel_yaml-0.15.100-py39h27cfd23_0
  setuptools         pkgs/main/linux-64::setuptools-61.2.0-py39h06a4308_0
  six                pkgs/main/noarch::six-1.16.0-pyhd3eb1b0_1
  sqlite             pkgs/main/linux-64::sqlite-3.38.2-hc218d9a_0
  tk                 pkgs/main/linux-64::tk-8.6.11-h1ccaba5_0
  tqdm               pkgs/main/noarch::tqdm-4.63.0-pyhd3eb1b0_0
  tzdata             pkgs/main/noarch::tzdata-2022a-hda174b7_0
  urllib3            pkgs/main/noarch::urllib3-1.26.8-pyhd3eb1b0_0
  wheel              pkgs/main/noarch::wheel-0.37.1-pyhd3eb1b0_0
  xz                 pkgs/main/linux-64::xz-5.2.5-h7b6447c_0
  yaml               pkgs/main/linux-64::yaml-0.2.5-h7b6447c_0
  zlib               pkgs/main/linux-64::zlib-1.2.12-h7f8727e_1


Preparing transaction: done
Executing transaction: done
installation finished.
/home/lorenzo/ghubrepo/morefusion
Collecting package metadata (current_repodata.json): ...working... done
Solving environment: ...working... done

## Package Plan ##

  environment location: /home/lorenzo/ghubrepo/morefusion/.anaconda3

  added / updated specs:
    - python[version='<3.9']


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    brotlipy-0.7.0             |py38h27cfd23_1003         323 KB
    ca-certificates-2022.4.26  |       h06a4308_0         124 KB
    certifi-2022.5.18.1        |   py38h06a4308_0         147 KB
    cffi-1.15.0                |   py38hd667e15_1         224 KB
    conda-4.13.0               |   py38h06a4308_0         896 KB
    conda-package-handling-1.8.1|   py38h7f8727e_0         885 KB
    cryptography-37.0.1        |   py38h9ce1e76_0         1.3 MB
    openssl-1.1.1o             |       h7f8727e_0         2.5 MB
    pip-21.2.4                 |   py38h06a4308_0         1.8 MB
    pycosat-0.6.3              |   py38h7b6447c_1          82 KB
    pysocks-1.7.1              |   py38h06a4308_0          31 KB
    python-3.8.13              |       h12debd9_0        18.8 MB
    ruamel_yaml-0.15.100       |   py38h27cfd23_0         258 KB
    setuptools-61.2.0          |   py38h06a4308_0        1012 KB
    ------------------------------------------------------------
                                           Total:        28.3 MB

The following packages will be UPDATED:

  ca-certificates                      2022.3.29-h06a4308_1 --> 2022.4.26-h06a4308_0
  certifi                          2021.10.8-py39h06a4308_2 --> 2022.5.18.1-py38h06a4308_0
  conda                               4.12.0-py39h06a4308_0 --> 4.13.0-py38h06a4308_0
  cryptography                        36.0.0-py39h9ce1e76_0 --> 37.0.1-py38h9ce1e76_0
  openssl                                 1.1.1n-h7f8727e_0 --> 1.1.1o-h7f8727e_0
  pycosat                              0.6.3-py39h27cfd23_0 --> 0.6.3-py38h7b6447c_1

The following packages will be DOWNGRADED:

  brotlipy                          0.7.0-py39h27cfd23_1003 --> 0.7.0-py38h27cfd23_1003
  cffi                                1.15.0-py39hd667e15_1 --> 1.15.0-py38hd667e15_1
  conda-package-han~                   1.8.1-py39h7f8727e_0 --> 1.8.1-py38h7f8727e_0
  pip                                 21.2.4-py39h06a4308_0 --> 21.2.4-py38h06a4308_0
  pysocks                              1.7.1-py39h06a4308_0 --> 1.7.1-py38h06a4308_0
  python                                  3.9.12-h12debd9_0 --> 3.8.13-h12debd9_0
  ruamel_yaml                       0.15.100-py39h27cfd23_0 --> 0.15.100-py38h27cfd23_0
  setuptools                          61.2.0-py39h06a4308_0 --> 61.2.0-py38h06a4308_0


Preparing transaction: ...working... done
Verifying transaction: ...working... done
Executing transaction: ...working... done
Cloning into 'v-hacd'...
remote: Enumerating objects: 3235, done.
remote: Counting objects: 100% (475/475), done.
remote: Compressing objects: 100% (186/186), done.
remote: Total 3235 (delta 252), reused 418 (delta 242), pack-reused 2760
Receiving objects: 100% (3235/3235), 104.00 MiB | 5.02 MiB/s, done.
Resolving deltas: 100% (1397/1397), done.
CMake Error: The source directory "/home/lorenzo/ghubrepo/morefusion/src/v-hacd/src" does not exist.
Specify --help for usage, or press the help button on the CMake GUI.
make: *** [Makefile:13: install_v-hacd] Error 1

make --version
GNU Make 4.2.1

Ubuntu 20.04

End to End training with MaskRCNN

Hi,

I'm curious if you thought of integrating the ResNet50 backbone and mask branch from MaskRCNN into DenseFusion for end-to-end training? It seems like the ResNet18 network is duplicated for rgb features.

Thanks for sharing your work,

Aidan

Simulation only!

Interesting work! Can I use this repo for simulation propose only ( in gazebo & rviz ) without connecting real robots?

YCB_Video_Dataset.reindexed.v2 does not exist.

Hi, i have followed all of your steps,but when i run :
cd examples/ycb_video/singleview_3d
./download_dataset.py
it shows:
OSError: /home/yuan/data/ycb_video/YCB_Video_Dataset.reindexed.v2 does not exist.

So what is the 'YCB_Video_Dataset.reindexed.v2'? is there anything else that should be done?

Thanks!

Failed to run `./download_dataset.py`

Hi,

After following all the installation steps, when running ./download_dataset.py I get this error:

Traceback (most recent call last):
File "./download_dataset.py", line 3, in
import morefusion
ModuleNotFoundError: No module named 'morefusion'

How to train on custom synthetic dataset?

Hi,

I would like to train MoreFusion on my own synthetic dataset of boxes. I've generated my dataset using BlenderProc and I have ground truth instance masks and 6D poses for the boxes. An example train image from my generated data is shown below:
image
I managed to train Mask R-CNN so it generalizes to real images to some extend. But I need to do full 6D pose estimation.

So my question is: do you think it would be possible to succesfully train MoreFusion on my own custom synthetic data as described above? And what would I need to do in order to adapt the training script to custom data?

Best regards, Mikkel

about segmentation in rviz

I am running ros dynamic desk application. I have build it successfully. But I cannot see the segmentation and objection detection in the rviz. I only can see the original, depth image and point cloud. My device is realsense d435i. I want to ask how to show the remaining images in the demo video. Do I need to other commands except the following commands:

roslaunch morefusion_ros rs_rgbd.launch roslaunch morefusion_ros rviz_dynamic.desk.launch roslaunch morefusion_ros setup_dynamic.desk.launch

Looking forward to your replay.

"No cam calibration" error wtih `roslaunch morefusion_panda_ycb_video setup_dynamic.desk.launch`

Hello,

Thank you for your work on morefusion. The package is quite comprehensive.

I have been trying to use it for ROS, and I encountered the following error while launching roslaunch morefusion_panda_ycb_video setup_dynamic.desk.launch:

Failed to get camera calibration parameters from the launch file.
terminate called after throwing an instance of 'std::runtime_error'
what(): No cam calibration

I could be wrong, but it seems like an issue with the orb_slam2_d435_rgbd.launch" file in the morefusion/ros/morefusion_panda_ycb_video/launch` folder. It should point to an .xml configuration file rs_rgbd.robot.814412071258.xml but it seems that it failed to load this calibration file calibration.

My question is:

  1. does the *.xml file need to match the real-sense serial number?
  2. is there a general procedure to follow or any particular "camera calibration" package you are using to generate this *.xml file? (I saw <jsk_interactive_maker> node in the .xml file, is that a hint?)

Attached is the screenshot of the error. Thank you very much for helping!

Screenshot from 2020-09-13 01-04-56

Error: Expect: b.shape[0] == W.shape[0] Actual: 88 != 324

Encounter the following error. Would you like to share how to fix it? Thanks in advance

(base) alan@alan-Precision-5820-Tower:~/Desktop/morefusion/examples/ycb_video/instance_segm$ mpirun -n 0 python train_multi.py
/ True
/bbox_head True
/bbox_head/conf True
/bbox_head/fc1 True
/bbox_head/fc2 True
/bbox_head/loc True
/extractor False
/extractor/base False
/extractor/base/conv1 False
/extractor/base/conv1/bn False
/extractor/base/conv1/conv False
/extractor/base/res2 False
/extractor/base/res2/a False
/extractor/base/res2/a/conv1 False
/extractor/base/res2/a/conv1/bn False
/extractor/base/res2/a/conv1/conv False
/extractor/base/res2/a/conv2 False
/extractor/base/res2/a/conv2/bn False
/extractor/base/res2/a/conv2/conv False
/extractor/base/res2/a/conv3 False
/extractor/base/res2/a/conv3/bn False
/extractor/base/res2/a/conv3/conv False
/extractor/base/res2/a/residual_conv False
/extractor/base/res2/a/residual_conv/bn False
/extractor/base/res2/a/residual_conv/conv False
/extractor/base/res2/b1 False
/extractor/base/res2/b1/conv1 False
/extractor/base/res2/b1/conv1/bn False
/extractor/base/res2/b1/conv1/conv False
/extractor/base/res2/b1/conv2 False
/extractor/base/res2/b1/conv2/bn False
/extractor/base/res2/b1/conv2/conv False
/extractor/base/res2/b1/conv3 False
/extractor/base/res2/b1/conv3/bn False
/extractor/base/res2/b1/conv3/conv False
/extractor/base/res2/b2 False
/extractor/base/res2/b2/conv1 False
/extractor/base/res2/b2/conv1/bn False
/extractor/base/res2/b2/conv1/conv False
/extractor/base/res2/b2/conv2 False
/extractor/base/res2/b2/conv2/bn False
/extractor/base/res2/b2/conv2/conv False
/extractor/base/res2/b2/conv3 False
/extractor/base/res2/b2/conv3/bn False
/extractor/base/res2/b2/conv3/conv False
/extractor/base/res3 False
/extractor/base/res3/a False
/extractor/base/res3/a/conv1 False
/extractor/base/res3/a/conv1/bn False
/extractor/base/res3/a/conv1/conv False
/extractor/base/res3/a/conv2 False
/extractor/base/res3/a/conv2/bn False
/extractor/base/res3/a/conv2/conv False
/extractor/base/res3/a/conv3 False
/extractor/base/res3/a/conv3/bn False
/extractor/base/res3/a/conv3/conv False
/extractor/base/res3/a/residual_conv False
/extractor/base/res3/a/residual_conv/bn False
/extractor/base/res3/a/residual_conv/conv False
/extractor/base/res3/b1 False
/extractor/base/res3/b1/conv1 False
/extractor/base/res3/b1/conv1/bn False
/extractor/base/res3/b1/conv1/conv False
/extractor/base/res3/b1/conv2 False
/extractor/base/res3/b1/conv2/bn False
/extractor/base/res3/b1/conv2/conv False
/extractor/base/res3/b1/conv3 False
/extractor/base/res3/b1/conv3/bn False
/extractor/base/res3/b1/conv3/conv False
/extractor/base/res3/b2 False
/extractor/base/res3/b2/conv1 False
/extractor/base/res3/b2/conv1/bn False
/extractor/base/res3/b2/conv1/conv False
/extractor/base/res3/b2/conv2 False
/extractor/base/res3/b2/conv2/bn False
/extractor/base/res3/b2/conv2/conv False
/extractor/base/res3/b2/conv3 False
/extractor/base/res3/b2/conv3/bn False
/extractor/base/res3/b2/conv3/conv False
/extractor/base/res3/b3 False
/extractor/base/res3/b3/conv1 False
/extractor/base/res3/b3/conv1/bn False
/extractor/base/res3/b3/conv1/conv False
/extractor/base/res3/b3/conv2 False
/extractor/base/res3/b3/conv2/bn False
/extractor/base/res3/b3/conv2/conv False
/extractor/base/res3/b3/conv3 False
/extractor/base/res3/b3/conv3/bn False
/extractor/base/res3/b3/conv3/conv False
/extractor/base/res4 False
/extractor/base/res4/a False
/extractor/base/res4/a/conv1 False
/extractor/base/res4/a/conv1/bn False
/extractor/base/res4/a/conv1/conv False
/extractor/base/res4/a/conv2 False
/extractor/base/res4/a/conv2/bn False
/extractor/base/res4/a/conv2/conv False
/extractor/base/res4/a/conv3 False
/extractor/base/res4/a/conv3/bn False
/extractor/base/res4/a/conv3/conv False
/extractor/base/res4/a/residual_conv False
/extractor/base/res4/a/residual_conv/bn False
/extractor/base/res4/a/residual_conv/conv False
/extractor/base/res4/b1 False
/extractor/base/res4/b1/conv1 False
/extractor/base/res4/b1/conv1/bn False
/extractor/base/res4/b1/conv1/conv False
/extractor/base/res4/b1/conv2 False
/extractor/base/res4/b1/conv2/bn False
/extractor/base/res4/b1/conv2/conv False
/extractor/base/res4/b1/conv3 False
/extractor/base/res4/b1/conv3/bn False
/extractor/base/res4/b1/conv3/conv False
/extractor/base/res4/b2 False
/extractor/base/res4/b2/conv1 False
/extractor/base/res4/b2/conv1/bn False
/extractor/base/res4/b2/conv1/conv False
/extractor/base/res4/b2/conv2 False
/extractor/base/res4/b2/conv2/bn False
/extractor/base/res4/b2/conv2/conv False
/extractor/base/res4/b2/conv3 False
/extractor/base/res4/b2/conv3/bn False
/extractor/base/res4/b2/conv3/conv False
/extractor/base/res4/b3 False
/extractor/base/res4/b3/conv1 False
/extractor/base/res4/b3/conv1/bn False
/extractor/base/res4/b3/conv1/conv False
/extractor/base/res4/b3/conv2 False
/extractor/base/res4/b3/conv2/bn False
/extractor/base/res4/b3/conv2/conv False
/extractor/base/res4/b3/conv3 False
/extractor/base/res4/b3/conv3/bn False
/extractor/base/res4/b3/conv3/conv False
/extractor/base/res4/b4 False
/extractor/base/res4/b4/conv1 False
/extractor/base/res4/b4/conv1/bn False
/extractor/base/res4/b4/conv1/conv False
/extractor/base/res4/b4/conv2 False
/extractor/base/res4/b4/conv2/bn False
/extractor/base/res4/b4/conv2/conv False
/extractor/base/res4/b4/conv3 False
/extractor/base/res4/b4/conv3/bn False
/extractor/base/res4/b4/conv3/conv False
/extractor/base/res4/b5 False
/extractor/base/res4/b5/conv1 False
/extractor/base/res4/b5/conv1/bn False
/extractor/base/res4/b5/conv1/conv False
/extractor/base/res4/b5/conv2 False
/extractor/base/res4/b5/conv2/bn False
/extractor/base/res4/b5/conv2/conv False
/extractor/base/res4/b5/conv3 False
/extractor/base/res4/b5/conv3/bn False
/extractor/base/res4/b5/conv3/conv False
/extractor/base/res5 False
/extractor/base/res5/a False
/extractor/base/res5/a/conv1 False
/extractor/base/res5/a/conv1/bn False
/extractor/base/res5/a/conv1/conv False
/extractor/base/res5/a/conv2 False
/extractor/base/res5/a/conv2/bn False
/extractor/base/res5/a/conv2/conv False
/extractor/base/res5/a/conv3 False
/extractor/base/res5/a/conv3/bn False
/extractor/base/res5/a/conv3/conv False
/extractor/base/res5/a/residual_conv False
/extractor/base/res5/a/residual_conv/bn False
/extractor/base/res5/a/residual_conv/conv False
/extractor/base/res5/b1 False
/extractor/base/res5/b1/conv1 False
/extractor/base/res5/b1/conv1/bn False
/extractor/base/res5/b1/conv1/conv False
/extractor/base/res5/b1/conv2 False
/extractor/base/res5/b1/conv2/bn False
/extractor/base/res5/b1/conv2/conv False
/extractor/base/res5/b1/conv3 False
/extractor/base/res5/b1/conv3/bn False
/extractor/base/res5/b1/conv3/conv False
/extractor/base/res5/b2 False
/extractor/base/res5/b2/conv1 False
/extractor/base/res5/b2/conv1/bn False
/extractor/base/res5/b2/conv1/conv False
/extractor/base/res5/b2/conv2 False
/extractor/base/res5/b2/conv2/bn False
/extractor/base/res5/b2/conv2/conv False
/extractor/base/res5/b2/conv3 False
/extractor/base/res5/b2/conv3/bn False
/extractor/base/res5/b2/conv3/conv False
/extractor/inner False
/extractor/inner/0 False
/extractor/inner/1 False
/extractor/inner/2 False
/extractor/inner/3 False
/extractor/outer False
/extractor/outer/0 False
/extractor/outer/1 False
/extractor/outer/2 False
/extractor/outer/3 False
/mask_head True
/mask_head/conv1 True
/mask_head/conv1/conv True
/mask_head/conv2 True
/mask_head/conv2/conv True
/mask_head/conv3 True
/mask_head/conv3/conv True
/mask_head/conv4 True
/mask_head/conv4/conv True
/mask_head/conv5 True
/mask_head/seg True
/rpn False
/rpn/conf False
/rpn/conv False
/rpn/loc False
/home/alan/Desktop/morefusion/examples/ycb_video/instance_segm/transforms.py:86: DeprecationWarning: AffineCv2 is deprecated. Use imgaug.augmenters.geometric.Affine(..., backend='cv2') instead.
  shear=(-15, 15),
/home/alan/Desktop/morefusion/examples/ycb_video/instance_segm/transforms.py:86: DeprecationWarning: AffineCv2 is deprecated. Use imgaug.augmenters.geometric.Affine(..., backend='cv2') instead.
  shear=(-15, 15),
/home/alan/Desktop/morefusion/examples/ycb_video/instance_segm/transforms.py:86: DeprecationWarning: AffineCv2 is deprecated. Use imgaug.augmenters.geometric.Affine(..., backend='cv2') instead.
  shear=(-15, 15),
/home/alan/Desktop/morefusion/examples/ycb_video/instance_segm/transforms.py:86: DeprecationWarning: AffineCv2 is deprecated. Use imgaug.augmenters.geometric.Affine(..., backend='cv2') instead.
  shear=(-15, 15),
/home/alan/Desktop/morefusion/examples/ycb_video/instance_segm/transforms.py:86: DeprecationWarning: AffineCv2 is deprecated. Use imgaug.augmenters.geometric.Affine(..., backend='cv2') instead.
  shear=(-15, 15),
/home/alan/Desktop/morefusion/examples/ycb_video/instance_segm/transforms.py:86: DeprecationWarning: AffineCv2 is deprecated. Use imgaug.augmenters.geometric.Affine(..., backend='cv2') instead.
  shear=(-15, 15),
/home/alan/Desktop/morefusion/examples/ycb_video/instance_segm/transforms.py:86: DeprecationWarning: AffineCv2 is deprecated. Use imgaug.augmenters.geometric.Affine(..., backend='cv2') instead.
  shear=(-15, 15),
/home/alan/Desktop/morefusion/examples/ycb_video/instance_segm/transforms.py:86: DeprecationWarning: AffineCv2 is deprecated. Use imgaug.augmenters.geometric.Affine(..., backend='cv2') instead.
  shear=(-15, 15),
Exception in main training loop: 
Invalid operation is performed in: LinearFunction (Forward)

Expect: b.shape[0] == W.shape[0]
Actual: 88 != 324
Traceback (most recent call last):
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/training/trainer.py", line 343, in run
    update()
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/training/updaters/standard_updater.py", line 240, in update
    self.update_core()
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/training/updaters/standard_updater.py", line 253, in update_core
    optimizer.update(loss_func, *in_arrays)
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainermn/optimizers.py", line 21, in update
    loss = lossfun(*args, **kwds)
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/link.py", line 287, in __call__
    out = forward(*args, **kwargs)
  File "train_multi.py", line 104, in forward
    head_locs, head_confs = self.model.bbox_head(hs, rois, roi_indices)
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/link.py", line 287, in __call__
    out = forward(*args, **kwargs)
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainercv/links/model/fpn/bbox_head.py", line 92, in forward
    locs = self.loc(h)
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/link.py", line 287, in __call__
    out = forward(*args, **kwargs)
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/links/connection/linear.py", line 183, in forward
    return linear.linear(x, self.W, self.b, n_batch_axes=n_batch_axes)
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/functions/connection/linear.py", line 308, in linear
    y, = LinearFunction().apply(args)
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/function_node.py", line 307, in apply
    self._check_data_type_forward(in_data)
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/function_node.py", line 455, in _check_data_type_forward
    self.check_type_forward(in_type)
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/functions/connection/linear.py", line 37, in check_type_forward
    b_type.shape[0] == w_type.shape[0],
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/utils/type_check.py", line 564, in expect
    expr.expect()
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/utils/type_check.py", line 497, in expect
    '{0} {1} {2}'.format(left, self.inv, right))
Will finalize trainer extensions and updater before reraising the exception.
Traceback (most recent call last):
  File "train_multi.py", line 376, in <module>
    main()
  File "train_multi.py", line 372, in main
    trainer.run()
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/training/trainer.py", line 376, in run
    six.reraise(*exc_info)
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/six.py", line 703, in reraise
    raise value
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/training/trainer.py", line 343, in run
    update()
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/training/updaters/standard_updater.py", line 240, in update
    self.update_core()
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/training/updaters/standard_updater.py", line 253, in update_core
    optimizer.update(loss_func, *in_arrays)
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainermn/optimizers.py", line 21, in update
    loss = lossfun(*args, **kwds)
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/link.py", line 287, in __call__
    out = forward(*args, **kwargs)
  File "train_multi.py", line 104, in forward
    head_locs, head_confs = self.model.bbox_head(hs, rois, roi_indices)
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/link.py", line 287, in __call__
    out = forward(*args, **kwargs)
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainercv/links/model/fpn/bbox_head.py", line 92, in forward
    locs = self.loc(h)
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/link.py", line 287, in __call__
    out = forward(*args, **kwargs)
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/links/connection/linear.py", line 183, in forward
    return linear.linear(x, self.W, self.b, n_batch_axes=n_batch_axes)
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/functions/connection/linear.py", line 308, in linear
    y, = LinearFunction().apply(args)
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/function_node.py", line 307, in apply
    self._check_data_type_forward(in_data)
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/function_node.py", line 455, in _check_data_type_forward
    self.check_type_forward(in_type)
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/functions/connection/linear.py", line 37, in check_type_forward
    b_type.shape[0] == w_type.shape[0],
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/utils/type_check.py", line 564, in expect
    expr.expect()
  File "/home/alan/Desktop/morefusion/.anaconda3/lib/python3.7/site-packages/chainer/utils/type_check.py", line 497, in expect
    '{0} {1} {2}'.format(left, self.inv, right))
chainer.utils.type_check.InvalidType: 
Invalid operation is performed in: LinearFunction (Forward)

Expect: b.shape[0] == W.shape[0]
Actual: 88 != 324

train.py: error: unrecognized arguments: --centerize-pcd

Found a error as below

./train.py --gpu 0 --centerize-pcd --pretrained-resnet18 --with-occupancy
usage: train.py [-h] [--multi-node] [--out OUT] [--debug] [--gpu GPU]
[--seed SEED] [--lr LR] [--max-epoch MAX_EPOCH]
[--call-evaluation-before-training] [--class-ids CLASS_IDS]
[--pretrained-model PRETRAINED_MODEL] [--with-occupancy]
[--note NOTE] [--pretrained-resnet18] [--resume RESUME]
[--loss {add/add_s,add/add_s+occupancy,add->add_s|1,add->add/add_s|1,add->add/add_s|1+occupancy}]
[--loss-scale LOSS_SCALE]
train.py: error: unrecognized arguments: --centerize-pcd

Omitted lookup points in estimating surface normals

In estimate_pointcloud_normals.py, it seems to compare only two out of eight patterns of orthogonal pairs.

lookup = lookups[k]
i2 = i1[None, :, :] + lookup[0][:, None, None]
j2 = j1[None, :, :] + lookup[1][:, None, None]

Should this be like the following?

lookup = lookups[k] # (8,2) shape
i2 = i1[None, :, :] + lookup[:, 0, None, None]
j2 = j1[None, :, :] + lookup[:, 1, None, None]

lack of dataset

Hello, I would like to train the 6d pose prediction model and I can't find the dataset "20190916_124002.877532.v2.reindexed".

(base) robotdl@robotdl:~/morefusion-master/examples/ycb_video/singleview_pcd$ ./download_dataset.py
Computing MD5: /home/robotdl/data/ycb_video/YCB_Video_Models.zip
MD5 matches: /home/robotdl/data/ycb_video/YCB_Video_Models.zip
Traceback (most recent call last):
File "./download_dataset.py", line 11, in
split="train"
File "/home/robotdl/morefusion-master/morefusion/datasets/rgbd_pose_estimation/my_synthetic_ycb20190916/reindexed.py", line 27, in init
split=split, class_ids=class_ids, augmentation=augmentation,
File "/home/robotdl/morefusion-master/morefusion/datasets/rgbd_pose_estimation/reindexed.py", line 16, in init
raise IOError(f"{self.root_dir} does not exist. ")
OSError: /home/robotdl/data/wkentaro/morefusion/ycb_video/synthetic_data/20190916_124002.877532.v2.reindexed does not exist.

I just found a similar one named "20190916_124002.877532.reindexed" but it doesn't have a meta.joson file inside. So, where can I download the dataset? 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.