๊ธ€/๋ชจ์Œ

๐Ÿงญ 3D ์ ๊ตฐ์œผ๋กœ ๊ณต๊ฐ„ AI์šฉ ์”ฌ ๊ทธ๋ž˜ํ”„ ๊ตฌ์ถ•ํ•˜๊ธฐ

octo54 2025. 6. 30. 16:29
๋ฐ˜์‘ํ˜•

 

๐Ÿงญ 3D ์ ๊ตฐ์œผ๋กœ ๊ณต๊ฐ„ AI์šฉ ์”ฌ ๊ทธ๋ž˜ํ”„ ๊ตฌ์ถ•ํ•˜๊ธฐ

Python์œผ๋กœ Spatial AI ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•˜๋Š” ์‹ค์ „ ํŠœํ† ๋ฆฌ์–ผ


โœจ ๊ฐœ์š”

์ด ๊ธ€์—์„œ๋Š” 3D ์ ๊ตฐ(Point Cloud)์„ ๊ธฐ๋ฐ˜์œผ๋กœ **LLM์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„ ๊ทธ๋ž˜ํ”„(Scene Graph)**๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํ•œ ์‹œ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜์–ด, "์ด ๋ฌผ์ฒด๋Š” ์–ด๋””์— ์žˆ๋Š”๊ฐ€", "๋ฌด์—‡๊ณผ ๊ด€๋ จ๋˜์–ด ์žˆ๋Š”๊ฐ€"๋ฅผ ๊ตฌ์กฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ›  ์ฃผ์š” ๊ตฌํ˜„ ํ๋ฆ„

  1. Open3D๋ฅผ ํ†ตํ•œ ์ ๊ตฐ ๋กœ๋”ฉ ๋ฐ ์‹œ๊ฐํ™”
  2. DBSCAN ๊ตฐ์ง‘ํ™”๋กœ ๊ฐ์ฒด ๋‹จ์œ„ ๋ถ„๋ฆฌ
  3. ๊ฐ ๊ฐ์ฒด์˜ ์ค‘์‹ฌ์  ๊ณ„์‚ฐ
  4. NetworkX๋กœ ๊ฐ์ฒด ๊ฐ„ ๊ทธ๋ž˜ํ”„ ์ƒ์„ฑ
  5. ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ˜ ๊ณต๊ฐ„ ๊ด€๊ณ„ ๋ถ„์„ (‘๊ฐ€๊นŒ์›€’, ‘์œ„์— ์žˆ์Œ’ ๋“ฑ)
  6. LLM์ด ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ JSON ๊ตฌ์กฐ๋กœ ๋ณ€ํ™˜
  7. ์งˆ๋ฌธ-์‘๋‹ตํ˜• Spatial AI ์‹œ์Šคํ…œ์œผ๋กœ ํ™•์žฅ

๐Ÿ“Œ ์˜ˆ์ œ ์ฝ”๋“œ ์š”์•ฝ

import open3d as o3d
import numpy as np
import networkx as nx
from itertools import combinations

# ์ ๊ตฐ ๋กœ๋”ฉ
pcd = o3d.io.read_point_cloud("scene.pcd")
labels = np.array(pcd.cluster_dbscan(eps=0.05, min_points=10))

# ๊ทธ๋ž˜ํ”„ ์ดˆ๊ธฐํ™”
G = nx.Graph()

# ๋…ธ๋“œ ์ถ”๊ฐ€
for label in np.unique(labels):
    points = np.asarray(pcd.points)[labels == label]
    centroid = points.mean(axis=0)
    G.add_node(label, label="object", centroid=centroid)

# ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ˜ ์—ฃ์ง€ ์ถ”๊ฐ€
for i, j in combinations(G.nodes, 2):
    c1, c2 = G.nodes[i]["centroid"], G.nodes[j]["centroid"]
    distance = np.linalg.norm(c1 - c2)
    if distance < 1.0:
        G.add_edge(i, j, relation="near")

๐Ÿ’ฌ ๋‚˜์˜ ์ƒ๊ฐ

๋ฐ˜์‘ํ˜•
  • ์™œ ์ค‘์š”ํ•œ๊ฐ€?
    ๊ณต๊ฐ„์„ ํ•ด์„ํ•˜๋Š” AI๋Š” ๋‹จ์ˆœํžˆ ์ด๋ฏธ์ง€๋‚˜ ์ขŒํ‘œ๋ฅผ ๋„˜์–ด์„œ, ๊ตฌ์กฐํ™”๋œ ์˜๋ฏธ ๊ด€๊ณ„๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    ์ด ํŠœํ† ๋ฆฌ์–ผ์€ ๊ทธ ๊ธฐ์ดˆ ๋‹จ๊ณ„๋ฅผ ๋งค์šฐ ์‹ค์šฉ์ ์œผ๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  • ์–ด๋””์— ์“ธ ์ˆ˜ ์žˆ๋‚˜?
    • ์‹ค๋‚ด ๋กœ๋ด‡ ๋‚ด๋น„๊ฒŒ์ด์…˜
    • AR/VR ๊ฐ์ฒด ํƒ์ง€
    • ์ž์œจ์ฃผํ–‰์ฐจ ๋‚ด ๊ณต๊ฐ„ ๊ตฌ์„ฑ ๋ถ„์„
    • LLM ๊ธฐ๋ฐ˜ ์”ฌ ํ•ด์„ ๋ฐ ๋ช…๋ น ์ˆ˜ํ–‰
  • ๋” ๋‚˜์•„๊ฐ€๋ฉด?
    ๊ด€๊ณ„๋ฅผ ๋‹จ์ˆœ ๊ฑฐ๋ฆฌ๋กœ ๊ณ„์‚ฐํ•˜๋Š” ๋Œ€์‹ , GNN ๊ธฐ๋ฐ˜ ๊ด€๊ณ„ ์˜ˆ์ธก ๋ชจ๋ธ์„ ๋ถ™์—ฌ๋„ ์ข‹์Šต๋‹ˆ๋‹ค.
    ์˜ˆ: SGAligner, Open3DSG, Hydra, SceneFormer ๋“ฑ.

 

3D ์”ฌ ๊ทธ๋ž˜ํ”„,Spatial AI ํŠœํ† ๋ฆฌ์–ผ,Python ์ ๊ตฐ ๋ถ„์„,Open3D ์‹ค์Šต,NetworkX ๊ทธ๋ž˜ํ”„ ๊ตฌ์ถ•,๊ณต๊ฐ„ ๊ด€๊ณ„ ์ถ”๋ก ,LLM ๊ทธ๋ž˜ํ”„ ํ†ตํ•ฉ,AR VR 3D ํ•ด์„,DBSCAN ๊ฐ์ฒด ๋ถ„๋ฅ˜,AI ๋กœ๋ด‡ ์‹œ๊ฐ์ง€๋Šฅ