透明物体への3D計測について調査中



## ClearGrasp: 3D Shape Estimation of Transparent Objects for Manipulation
https://github.com/Shreeyak/cleargrasp
Official repository for the paper "ClearGrasp: 3D Shape Estimation of Transparent Objects for Manipulation"


[pdf](https://arxiv.org/pdf/1910.02550)
![](https://github.com/Shreeyak/cleargrasp/raw/master/data/readme_images/task.png)

ClearGraspは、合成学習データによるディープラーニングを活用し、1枚のRGB-D画像から透明オブジェクトの正確な3Dジオメトリを推測します。

透明な物体は、標準的な3Dセンサーが正確な奥行きを推定するのが信じられないほど難しい、ユニークな視覚特性を持っています。 多くの場合、透明物体は、その背後にある表面のノイズや歪んだ近似として表示されます。 これらの課題に対処するために、我々はロボット操作のための透明物体の正確な3Dジオメトリを推定するためのディープラーニングアプローチであるClearGraspを提示する。 実験の結果、ClearGraspは単眼の奥行き推定ベースラインよりも大幅に優れており、実世界の画像や新規オブジェクトに汎化できることが実証された。 また、ClearGraspは、透明な物体に対する把持アルゴリズムの性能を向上させるために、すぐに適用できることも実証しています。 透明な物体のRGB-D画像が与えられた場合、ClearGraspはまず、深層畳み込みネットワークへの入力としてカラー画像を使用し、表面の法線、オクルージョンの境界といった一連の情報を推測します。 マスクは、透明な表面に対応するすべてのポイントを削除することにより、入力深度を "クリーン "にするために使用されます。 次にClearGraspは、サーフェスの法線とオクルージョンの境界を使用して透明オブジェクトの深度を再構築するグローバル最適化アルゴリズムを使用します。
![](https://github.com/Shreeyak/cleargrasp/raw/master/data/readme_images/cleargrasp_approach_overview.png)

次の３つの推定結果を使うことで、改良に寄与している。
- 法線の推定
- 境界の検出
- 透明物体のセグメンテーション


## [データのダウンロード](https://github.com/Shreeyak/cleargrasp?tab=readme-ov-file#setup)
上記のリンクをたどって、次の３つを必要に応じてダウンロードします。
- Model Checkpoints 学習済みのモデルファイル
- train datasets
- Val + Test datasets

### APIの動作確認
[Compile depth2depth (global optimization):](https://github.com/Shreeyak/cleargrasp?tab=readme-ov-file#setup) の手順にしたがって、以下の内容を実行する。

```
cd api/depth2depth/gaps
bash depth2depth.sh
```
以下のディレクトリに入力ファイルと実行結果のファイルがあります。
api/depth2depth/gaps/sample_files/

api/depth2depth/gaps/sample_files/input-depth-rgb.jpg

![](https://github.com/Shreeyak/cleargrasp/blob/master/api/depth2depth/gaps/sample_files/input-depth-rgb.jpg?raw=true)



./api/depth2depth/gaps/sample_files/output-depth.png
./api/depth2depth/gaps/sample_files/expected-output-depth.png
./api/depth2depth/gaps/sample_files/expected-output-depth-rgb.jpg
./api/depth2depth/gaps/sample_files/output-depth-rgb.jpg

![](https://github.com/Shreeyak/cleargrasp/blob/master/api/depth2depth/gaps/sample_files/expected-output-depth-rgb.jpg?raw=true)

 normals-rgb.jpg 法線ベクトルの向きを表示する画像
![](https://github.com/Shreeyak/cleargrasp/blob/master/api/depth2depth/gaps/sample_files/normals-rgb.jpg?raw=true)


### 一連のデータに対する処理
```
cd eval_depth_completion/
cp config/config.yaml.sample config/config.yaml
# jeston の場合は, x86_64をaarch64 に変更すること
python3 eval_depth_completion.py -c config/config.yaml
```
### 実行結果のディレクトリ
cleargrasp/eval_depth_completion/results/exp-001/
exp-001の数字の部分は、実行回数をごとに増えていく。
### 実行結果
cleargrasp/eval_depth_completion/results/exp-001/result-viz/000000000-result-viz.png
![000000000-result-viz.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83761/79960da9-b55d-9b6c-9c79-0bdedbd635a5.png)

cleargrasp/eval_depth_completion/results/exp-001/input-depth/000000000-modified-input-depth-rgb.png
![000000000-modified-input-depth-rgb.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83761/8bec4468-5240-6d7f-1b3d-29f42bb16e83.png)

![Screenshot from 2024-07-25 10-52-04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83761/64f77ec1-87de-41da-8d1b-9644899eb093.png)

#### その他の結果ファイル
exrファイル：　ハイレゾの画像ファイル
plyファイル：　点群データ

./gt-depth/000000000-gt-depth.exr
./gt-point-cloud/000000000-gt-pointcloud.ply
./input-depth/000000000-input-depth.exr
./input-point-cloud/000000000-input-pointcloud.ply
./orig-input-depth/000000000-input-depth.exr
./orig-input-point-cloud/000000000-input-pointcloud.ply
./output-depth/000000000-output-depth.exr
./output-point-cloud/000000000-output-pointcloud.ply


000000000-input-depth.exr

## ステレオ計測の学習で合成データの果たしていること
- ステレオ計測でのdepthを学習させるには、真値（Ground-Truth)のdepthがあることが前提となる。
- 最近の研究の流れでは、3DCGを使ってステレオ画像のペアと対応するdepthを生成するのが多い。
- それを使うとpixel 単位で対応のついたleft画像とdepth画像とが得られる。
- CGのレンダリングでは、photo-realisticで微分可能なレンダラーが用いられていると聞く。

## ClearGrasp (youtube)
<iframe width="560" height="315" src="https://www.youtube.com/embed/lbmklphGgGE?si=5tEiWkjFgX--XyuJ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>


 
[ClearGraspを使って、透明なボトルをRealsenseで撮影したい！それもWindows(WSL)で](https://automationtarou.hatenablog.com/entry/2023/01/22/210346)

[[DL輪読会]ClearGrasp](https://www.docswell.com/s/DeepLearning2023/K24194-dlcleargrasp)
[ClearGrasp:透明な物体を認識可能な機械学習アルゴリズム(2/3)](https://webbigdata.jp/post-5026/)

##### ClearGrasp の問題点
ClearGrasp directly removes the transparent area from the raw depth map and then uses an optimization technique to restore the depth. We note that this method fails to fully utilize the original depth observation and relies on precise segmentation of the transparent objects.

ClearGraspは、生の深度マップから透明な領域を直接除去し、その後、深度を復元するために最適化技術を使用します。この方法は、元の深度観測を完全に利用できず、透明オブジェクトの正確なセグメンテーションに依存していることに注意する。

##### 私見：
透明物体のセグメンテーションが得られていることを前提とすることが、clearGraspの利用を困難にしている。


---
## [Learning Depth Completion of Transparent Objects using Augmented Unpaired Data](https://florise.github.io/faking_depth_web/)
[pdf](https://florise.github.io/faking_depth_web/20230303_paper.pdf)
github faking_depth_icra[ICRA 2023 release of depth completion of transparent objects using augmented unpaired data](https://github.com/FlorisE/faking_depth_icra/)　

我々は、複雑な形状を持つ実環境から直接取得した拡張データを用いて、透明オブジェクトの奥行きを補完する技術を提案する。 巡回敵対的学習を用いて、オブジェクトのペイントされたバージョンと、実際の透明な対応物との間の変換を行うトランスレータを訓練する。 トランスレータは対になっていないデータで学習されるため、データセットは手作業によるラベリングなしで迅速に作成できる。 我々の技術は、ClearGraspのような容易に観察可能なオクルージョンや接触エッジを仮定するSOTAシステムとは異なり、環境の幾何学的形状を仮定しない。 オクルージョンや接触エッジの観察が困難な食器洗い機環境において、我々の手法がClearGraspをどのように上回るかを示す。 また、ヒューマノイドロボットによる物体操作アプリケーションを作成するために、この手法がどのように利用できるかを示す。

![Screenshot from 2024-07-25 21-13-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83761/82957824-dc4a-ba0a-cfb8-03ac097de3b2.png)

![Screenshot from 2024-07-24 15-31-08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83761/f6be1019-c8d2-b809-86ec-eedc80b9ab10.png)

Ours(RGBD-U-Net) がclearGrasp よりも良い結果を与えていると主張する。

![Screenshot from 2024-07-24 15-41-41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83761/63feb5da-a9b5-d95b-ff31-2b38fe773fce.png)
Fig. 2
透明物体をつかむ動作の例

- RT Corporation Sciurus 17
- ROS
- MoveIt
- transparent depth estimation performed on an external notebook (CPU: Intel Core i9-
10980HK). 


```
Written in Python and using TensorFlow 2+.

To install, clone this repository and run pip install -r requirements.txt. Probably best to run it in a conda, virtual or docker environment :)

Models that convert from RGBD to RGBD can be found in the folder RGBD2RGBD. Models that convert from depth to depth can be found in the folder Depth2Depth.
```
- かなり限られたデータセットで評価しているように見える。
- そのため、有用性については私は判断ができない。


---
付記：
### EXR ファイル
https://www.filetypeadvisor.com/ja/extension/exr
.exr ファイル名の拡張子は OpenEXR 画像フォーマットに属し、OpenEXR 画像 (.exr) ファイルタイプを表します。OpenEXR は Industrial Light & Magic (Lucasfilm Ltd.) によって開発されたオープンなハイダイナミックレンジ (HDR) ラスター画像フォーマットで、BSD ライクなライセンスの下でリリースされています。
https://snapcraft.io/install/openexr-viewer/ubuntu
sudo snap install openexr-viewer

![Screenshot from 2024-07-25 10-29-12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83761/21d91d45-2b57-aa12-6bbe-5a394dccaf5e.png)