Skip to content

R-zipp/AI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

93 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏠 R-집 : 도면 인식을 이용한 인테리어 플랫폼 (AI part)

메타버스 아카데미 2기 최종 프로젝트

🎥 시연 영상 보러가기(Click)

📙 발표자료 보러가기(Click)


👪 팀원 소개 및 역할

개발기간: 2023.10.07 ~ 2023.11.30

AI AI server Unreal Unreal Data science
정민교 김종민 김나영 김채린 반재형 강지석

AI 세부 역할 분담

정민교 Blueprint to 3D를 이용한 도면 3D 파일로 변환, FastAPI를 활용하여 모델 서빙
김종민 Stable Diffusion을 사용하여 데이터 셋 제작, Hand drawting to Blueprint 모델 학습

🤝 융합 구조도


💡 프로젝트 소개

도면을 업로드 하여 3D 그래픽으로 구현해 원하는 물품들을 원하는 위치에 가상으로 배치할 수 있는 인테리어 서비스

AI기술을 활용하여 사용자가 도면을 입력하면 3D 파일(fbx, glb 등)로 결과를 반환

모든 사람이 집 도면을 구할 수 없고 실제 있는 집이 아니라 가상의 집을 만들 수 있도록 손으로 그린 도면 그림을 이용하여 도면을 생성하는 기능을 추가하였음


📜 주요 내용

Blueprint to 3D

도면을 분석하여 벽과 방을 탐지하고 Blender script를 사용하여 3D파일로 변환

image_0010 제목 없음4
원본 도면 3D file
  • Detect walls and rooms

    인식률 개선을 위하여 원본 도면을 이진화하고 벽, 방 탐지

    image_0018 image_0016 image_0017
    Make binary Walls Rooms
  • OCR

    글자를 벽으로 인식하는 경우가 있어서 EasyOCR을 이용하여 제거

    다만 텍스트가 세로로 되어있는 경우 인식율이 나쁘고 기울어져 있으면 인식이 불가능

    image image image
    원본 도면 OCR Text remove
  • bpy

    python을 사용한 Blender script 라이브러리. python에서 직접 사용도 가능하지만 불안정한 부분이 많아 추천하지 않는다. subprocess로 Blender를 실행시키고 거기서 script파일을 실행시키는 방법을 추천.

      blender_script = 'Lib/fbx_converter.py'
    
      os.environ['BLEND_PATH'] = blend_path
      os.environ['SIZE_MULTIPLIER'] = str(size_multiplier)
      
      blender_command = [
                          'C:/Program Files/Blender Foundation/Blender 3.6/blender.exe',
                          '-b',
                          '--python', blender_script
                          ]
      
      process = subprocess.run(blender_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    

Hand drawing to Blueprint

  • Data set

    1. 도면 이미지 수집

      AI Hub의 건축 도면 데이터 약 48000장 중에 명확하게 벽과 문과 창문을 구분 할 수 있는 이미지 1000장을 골라냄

      테스트 용으로 사용하던 네이버 부동산에서 크롤링한 도면 데이터 200장을 합쳐 약 1200장의 도면 데이터 확보

    그림1 (1) APT_CS_OCR_026313215 (1) APT_FP_OBJ_009064152 (1)
    구분하기 어려운 도면 측면 도면 사용 가능한 도면
    1. Stable Diffusion을 이용한 데이터 셋 제작

      모든 도면에 대한 손 그림을 직접 그릴 수 없어 Stable Diffusion Cany 모델을 활용하여 도면의 모양을 유지하며 손으로 그린 듯한 이미지를 생성

      하나의 도면을 이용하여 여러 장의 이미지를 생성하여 데이터를 증강함

      최종 데이터 셋은 하나의 도면 당 10장의 이미지를 생성하여 약 12000장을 이용하여 학습

    그림2 그림3 그림4 그림5
    원본 이미지 Generated img1 Generated img2 Generated img3
  • Model train

    pix2pix 모델을 이용하여 손 도면을 도면과 같은 형태로 이미지 생성

    0 1000 2000 3000 4000 47000
    Epoch1 Epoch10 Epoch30 Epoch50 Epoch100 Epoch300

결과

그림1 (2) 그림2 (1) ppt_1
그림4 (1) 그림5 (1) ppt_2
Hand drawing image Generated blueprint 3D file

🛠 기술 스택

- 언어

- 주요 라이브러리

- 개발 툴

- 협업 툴

🔍 참고자료

Papers

  1. Isola, P., Zhu, J., Zhou, T., & Efros, A. A. (2017, November 22). Image-to-Image Translation with Conditional Adversarial Networks. Arxiv. https://arxiv.org/abs/1611.07004

GitHub

  1. pytorch-CycleGAN-and-pix2pix
  2. pytorch-hed
  3. FloorplanToBlender3d

Blog

  1. [논문실습] Pix2Pix
  2. 딥러닝 기반 건축도면 생성 모델 개발



special thanks to 정민

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors