python
How to create Matterport3D segmentation images?
· ☕ 1 min read
Intro The other day, one of my labmates needed to make a segmentation of Matterport3D. He asked for help, and I got involved in creating the segmentation. However, it turned out to be a real struggle. We were not used to 3D mesh models. After several weeks, we completed the code to create a semantic segmentation image for Matterport3D. How to create Matterport3D segmentation images Matterport3D provides access to 3D segmentation but does not give users an easy way to access 2D. Matterport3D data only provides point clouds and meshes labeled by ground truth, and the user must add color directly to the point clouds and meshes to create 2D segmentations. We, therefore, wrote code using Matterport3DSimulator to place a camera for a given scan_id and viewpoint_id and create a segmentation from the original ply file. When we run our code, we get the following image. (I concatenated the obtained images and converted to a gif) Matterport3DSimulator takes a total of 36 pictures: 12 at the top, 12 at the perimeter, and 12 at the bottom. ...


【PyTorch】「CUDA error: device-side assert triggered」 解決の手引き
· ☕ 4 min read
はじめに PyTorchにて, “RuntimeError: CUDA error: device-side assert triggered"というエラーに出くわすことがある ネットに転がってるモデルで発生すると特に厄介である (自分が作った沼ではないので…) またMAEでのマスク処理のような, テクニカルな処理を行う場合などにも頻発 再現性が取れず, 出力されるエラー内容も二転三転. 一定 ...

日本語版Image Captioningの学習・推論コードを提供する
· ☕ 1 min read
ひょんなことから最近Image Captioning(画像キャプション生成)を触っている だが, ググってもググっても日本語でImage Captioningしてる人があまりに居ない… コードを検索してもヒットしたのはこの子だけ…🤔 (しかもChainer …) https://github.com/yuyay/chainer_nic 日本語での画像キャプション生成界隈はプレイヤ ...


【ray】@remoteがメモリを大量に食う時はray.put()を使おう
· ☕ 2 min read
はじめに rayとは → https://github.com/ray-project/ray 分散並列処理を簡単に書けるフレームワーク ray.remoteは怖い @ray.remoteが付された関数が使用するオブジェクトは, 呼び出される都度内部でray.put()が呼ばれ, データがメモリ上に展開される 若干この仕様が厄介で, ray.get()なんかを使うと, 同じオブジェクトを何度もメモリ上に展 ...

pycocoevalcapのMETEORがバグる (self.meteor_p.stdin.flush)
· ☕ 1 min read
なぜかpycocoevalcapでMETEORの計算が止まる問題 どうやらself.meteor_p.stdin.flush() あたりで止まっているらしい 結論から言えば, 俺の場合キャプションに\nが入っていたせいだった そもそもCOCO captions のキャプション自体結構汚いので注意 変な改行入ってたり, キャプションがなぜか6つあったり ...


必要なものだけpip freezeする方法
· ☕ 1 min read
pipreqsという非常に便利なライブラリが存在する pipreqs . だけでimportされているライブラリだけを出力してくれる マジで便利 例 pipreqsを使えばこれが出力される 1 2 3 4 5 6 7 8 9 10 11 12 ❯ pipreqs . && cat requirements.txt colored_traceback==0.3.0 h5py==3.7.0 matplotlib==3.5.3 nltk==3.7 numpy==1.23.2 Pillow==9.2.0 pycocoevalcap==1.2 skimage==0.0 torch==1.8.2+cu111 torchvision==0.9.2+cu111 tqdm==4.64.0 pip freeze だとこれ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ...

ストレスなくpdbを使う方法
· ☕ 1 min read
TL;DR pdbを使おうとすると, ブレークポイントが必要かどうかに拘らずcを入力する必要がある →ストレス😠 -m pdbだけでなく-c cをつけると自動でpdbモードに入ってくれる →ストレスフリー✨ 1 python -m pdb -c c main.py なので ~/.zshrcに 1 alias pdb="python -m pdb -c c" とでも書いておけば, デバッグしたいときにpythonをpdbに変えてしまうだけでいいの ...

fork vs spawn
· ☕ 1 min read
Fork 親プロセスをそのままコピーするので, メモリを圧迫する Spawn 親プロセスから必要なメモリだけコピーして, 立ち上げるので省メモリ 新たにインタプリタを起動するので遅い link1: https://britishgeologicalsurvey.github.io/science/python-forking-vs-spawn/ link2: https://itsuka-naritai.com/2021/04/18/multiprocessing-forkとspawnの違いを理解する/ CUDAはs ...

faiss
· ☕ 1 min read
k近傍法 とか最近傍探索とかクラスタリングとかできるらしい CPU / GPU 両方とも用意してあるが, err == CUBLAS_STATUS_SUCCESS faiss という謎エラーのためプロジェクトではCPU版を使うことに https://github.com/facebookresearch/faiss ...