LoginSignup
3
0

画像セグメンテーションについて調査中

Last updated at Posted at 2023-12-22

ライブラリを調査するためのアドバイス
・よく使われているカメラの場合には、そのカメラでの利用例が開発元あるいは第3者によって公開されていることが多い。
 それをまず調査する。
・画像認識関係の場合だと、組み込み対象のデバイスの開発元(例:NVIDIA)がさまざまなアプリケーションを提供している。
 それらに利用したいライブラリが紹介されていることがある。
・推論エンジンに提供されているmodel zooにある学習済みのモデルとアルゴリズムを調べてみよう。
 例:OpenVino
・機械学習分野のフレームワークでの状況を調査する。

segmentation の種類

ekECjwJ.jpg
引用元

semantic segmentation
instance segmentation
panoptic segmentation

paper with code

Paper with code のサイトでは、それぞれのタスクに対してSotAのアルゴリズムを紹介している。

気にするポイント

  • セグメンテーションの分類
    例:MS COCOの80カテゴリ
    例:Cityscapes Datasetのカテゴリ
    例:走行可能範囲のセグメンテーション
    あなたの実現したいセグメンテーションは何ですか。
  • セグメンテーションの実行時間
  • セグメンテーションの解像度
  • セグメンテーションの精度
  • 学習のしやすいさ

通常カメラでのセグメンテーション

Yolov8

https://docs.ultralytics.com/ja/
https://github.com/ultralytics/ultralytics

Yolov8では、物体検出の他にインスタンスセグメンテーションが追加になっている。
MS-COCO の80カテゴリの検出とインスタンスセグメンテーションとができる。

Youtube YOLOv8 COMPLETE Tutorial | Object Detection | Segmentation | Classification

Screenshot from 2023-12-22 12-13-08-1.png

引用元

StereoLabs ZED

How to Use YOLO v8 with ZED in Python

ZED のカメラを使ってYolov8を動作させるためのインスール手続きとかが書かれている。

StereoLabs ZED SDK Image segmentation using yolov8 with zed 2i python

セグメンテーション後のマスクを取得する部分には、さらに調査が必要そうだ。

StereoLabs Mask R-CNN How to Use PyTorch with ZED

image.png
引用元

なお、Mask R-CNN は、画像に存在する物体のクラス名を特定する一般物体検出と、画像内のピクセル単位でクラス分けを行うインスタンスセグメンテーションを同時に行う手法です。

3D Mask R-CNN using the ZED and Pytorch

NVIDIA

image.png
引用元

Youtube NVIDIA Jetson AI Fundamentals - S3E6 - Semantic Segmentation

NVIDIA BI3D を使用したステレオ入力における近接セグメンテーション

「私たちは、DNN の推論に TensorRT を DLA で使用しており、GPU とは異なるハードウェアの多様性を提供し、フォールト トレランスを向上させつつ、他のタスクを GPU からオフロードしています。DLA は Jetson AGX Orin で BI3D に対して約 46fps を提供し、3 つの DNN で構成され、ロボティクス アプリケーションにおいて 30ms 未満の低レイテンシを提供しています。」 と NVIDIA のロボティクス プラットフォーム ソフトウェアの副社長である Gordon Grigor は述べています。

衝突を防止するためには、フレームレートを高くする必要があります。
しかも、ハードウェアの余力を奪わない実装が必要になります。
NVIDIAのJetson AGX OrinのもつDLA(Deep Learning Accelerator) を利用することは、GPUの余力を確保することにつながります。

Github BI3D

Bi3D: Stereo Depth Estimation via Binary Classifications
Abhishek Badki, Alejandro Troccoli, Kihwan Kim, Jan Kautz, Pradeep Sen, and Orazio Gallo
IEEE CVPR 2020

pdf Bi3D: Stereo Depth Estimation via Binary Classifications

Jetson Nano の利用例Jetson nanoでPerson Part Segmentation検証

image.png
引用元
HarDNet のアルゴリズムを元に再学習している。

Youtube Real-Time Instance Segmentation Using Jetson Xavier

Youtube Semantic segmentation with Jetson Nano using RealSense camera

NVIDIA Semantic Segmentation with SegNet

image.png

NVIDIA segnet のリアルタイムのデモRunning the Live Camera Segmentation Demo

image.png
引用元

github SegNet_PyTorch

github segnet

This repo is not supported anymore

pdf SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation

segnetは2015年発表の実装である。
2023年の時点で利用するには、古い実装である。そのため、出力画像の解像度も粗く、領域が染み出したりしている。

NVIDIA Free Space Segmentation

image.png
引用元

NVIDIA PeopleSemSegNet Model Card

image.png
引用元

github YOSO

You Only Segment Once: Towards Real-Time Panoptic Segmentation, In CVPR 2023.

fig-1.jpg

pdf You Only Segment Once: Towards Real-Time Panoptic Segmentation

V100 という"初の Tensor コア GPU"を使うと、20fps前後のフレームレートがでているとのこと。

CVPR 2023 pdf MSeg3D: Multi-modal 3D Semantic Segmentation for Autonomous Driving

github LiDARSeg3D

Screenshot from 2023-12-22 21-48-57.png
引用元
LiDARとカメラ画像とがあるときのmulti-modalな手法ですね。

yolov8 にはセグメンテーションがある。

image.png
引用元

yolov8の解説記事

Yolov8 の使い方

物体検出モデルYOLOv8の紹介: 動作手順や過去のバージョンとの比較

yolov7にもセグメンテーションがある。

Yolov7でインスタンスセグメンテーション

【物体検出2022】YOLOv7まとめ第7回 Instance segmentationを実装する

github https://github.com/WongKinYiu/yolov7

image.png
引用元

関連するgithub https://github.com/laitathei/YOLOv7-Pytorch-Segmentation

関連するgithub https://github.com/leandro-svg/Yolov7_Segmentation_Tensorrt

yolov7からforkした版がある。

github detectron2

Detectron2 is a platform for object detection, segmentation and other visual recognition tasks.

66535560-d3422200-eace-11e9-9123-5535d469db19-1.png

画像セグメンテーションは、物体検出と共通性が高いので、別々のソフトウェアとして実装されるよりは、同一のソフトウェアとして実装される方がうれしい。その方が計算の無駄が少なくなるし、メモリの管理も楽になるはず。
(ただ、そのなっていくほど、学習データの与え方は難しくなってしまう懸念はある。)

detectron2 をTensorRT上で動作させることについての記載がある。
NVIDIAのgithub Detectron 2 Mask R-CNN R50-FPN 3x in TensorRT

qiita Jetson xavierでDetectron2を用いた画像解析

MATLAB の場合 イメージのセグメンテーション

Screenshot from 2023-12-22 11-41-27.png
引用元
これらは、深層学習を必要としないセグメンテーション手法である。

MATLAB の場合 Mask R-CNN を使用したインスタンス セグメンテーションの実行

image.png

引用元

Mask R-CNN を学習させる場合の例が記載されている。

MATLAB の場合深層学習を使用したセマンティック セグメンテーション

image.png
引用元

MATLAB の場合 Yolov8

以下のやり取りを見る限り、現状では未対応(2023年時点)
I need Yolov8 in MATLAB, what is the latest version of YOLO algorithm in MATLAB?

Scikit-image のimage segmentation

  • 深層学習を必要としない画像のセグメンテーションならば、scikit-image も候補になる。
  • 11.1. Image Segmentation

scikit-image Multi-Otsu Thresholding

image.png
引用元

RAG Thresholding

image.png

引用元

深層学習を必要としない分野での画像のセグメンテーションには、scikit-image に多様な例が示されているので、それを参照してみよう。
整体組織の顕微鏡写真のセグメンテーションの事例もある。

古典的なセグメンテーションの操作の場合には、OpenCVに含まれるモルフォロジー操作の関数だけで実装できる場合もあるだろう。

OpenVino

openvinoのmodel zoo にあるインスタンスセグメンテーション

Instance Segmentation Python* Demo
instance_segmentation.gif

OpenVinoでの画像セグメンテーションの解説記事

image segmentation demo

Kaggle Image Segmentation for Self-Driving Cars

Keras を用いた例が書かれている。

image.png
引用元

github panoptic-segmentation

Transfomerベースの画像セグメンテーション

Hugging Face / Transformers
Image Segmentation
segmentation-comparison-1.png
引用元

画像セグメンテーションの分野においても、Transformerベースの開発が進んでいる。
上記のHugging Face の記事を参照のこと。

Segment Anything

qiita 解説記事 Segment Anything

NVIDIA Jetson Generative AI Lab Tutorial - SAM (Segment Anything)

HuggingFace Segment Anything

hugging face のtransformers 上の実装の利点

  • 簡単に動作できるようになっているので、GPUを持っていないPCで動作させるのもとても簡単。
  • HuggingFaceにはimage-segmentationに、アルゴリズム、学習対象のデータセットの組み合わせで、多数のモデルがある。
  • HuggingFaceではうれしいことに、モデルでの推論が共通になっている。
  • そのため、モデルの切り替えがとても楽になっている。

"nvidia/segformer-b1-finetuned-cityscapes-1024-1024"
"facebook/maskformer-swin-tiny-coco"

Cityscapesデータセット
解説記事 Cityscapesデータセット

CVPR2023丨A collection of papers on Semantic Segmentation

10 個の文献が紹介されている。


jetson-inference Semantic Segmentation with SegNet

EgoHOS
Fine-Grained Egocentric Hand-Object Segmentation, ECCV 2022

  • セグメンテーションであるので、ハンドのlandmarkは含まれない。
  • このライブラリだけでは、1次の対象物と2次の対象物のセグメンテーションが分かるだけ。
  • 1次の対象物、2次の対象物がそれぞれ何であるのかという理解は持たない。
  • teaser.gif
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0