/
Search

240822_0945_docker 없이 staf flask 서버 구동하는 방법 성공_모니터 연결없이 GPU 자원을 활용하여 Human Pose Estimation을 동작시킴(pyrender/offscreen.py)

보고 내용

[김영광] [오전 10:00] [디지털콘텐츠사업_디콘사업_STAF(OBJ변환) 프로젝트 display 없이 동작이 불가능한 이슈 해결 건] 안녕하십니까? 한국전자기술연구원 김영광입니다. 어제 밤에 말씀 드렸던 문제인 모니터 없는 환경(원격 접속 등)에서 STAF 프로젝트가 동작이 안되는 문제 해결 후 연락 올립니다. 조치는 flask 서버 코드 상단에 import 부분쪽에 아래 코드를 작성 하였습니다. os.environ['PYOPENGL_PLATFORM'] = 'egl' [김영광] [오전 10:03] PYOPENGL_PLATFORM 환경 변수를 세팅 하였고요 - `pyrender``OffscreenRenderer` 클래스는 기본적으로 `pyglet`을 사용하여 오프스크린 렌더링을 수행한다는 점을 확인 했고 이에 대해서 문제가 발생한 것으로 확인 했습니다. - GUI가 없는 환경에서는 `pyglet` 대신 `egl` 또는 `osmesa`와 같은 다른 렌더링 플랫폼을 사용하라고 메뉴얼에 있었습니다. https://pyrender.readthedocs.io/en/latest/examples/offscreen.html - egl은 gpu를 osmesa는 cpu를 사용한다는 차이가 있어서 egl를 선택하였습니다. [김영광] [오전 10:04] 금주내로 질풍 PC에 세팅하고 요청하신 필드 이름 말씀 드리겠습니다.
JavaScript
복사

EGL과 OSMESA의 차이

os.environ["PYOPENGL_PLATFORM"] = "egl"

EGL 정의
OpenGL, OpenGL ES, OpenVG와 같은 그래픽 API와 윈도우 시스템 간의 인터페이스를 정의하는 표준 API
하드웨어 가속을 지원하며, 주로 모바일 장치, 임베디드 시스템에서 사용
GUI가 없는 시스템에서도 GPU 가속을 활용한 효율적인 그래픽 렌더링 가능
사용 사례
서버 환경에서의 3D 렌더링: 클라우드나 원격 서버에서 하드웨어 가속을 통한 고성능 그래픽 처리 필요 시 사용
모바일 애플리케이션 개발 및 테스트: 모바일 GPU와 유사한 환경 구축 시 사용
임베디드 시스템: 제한된 자원에서 고성능 렌더링 필요 시 사용

os.environ["PYOPENGL_PLATFORM"] = "osmesa"

OSMesa 정의
Mesa 3D 그래픽 라이브러리의 소프트웨어 렌더링 백엔드
GPU 없이 CPU에서 오프스크린 렌더링 수행
물리적 디스플레이가 필요 없는 환경에서 사용
사용 사례
GPU가 없는 환경: 서버에 GPU가 없거나 GPU 가속이 필요 없는 경우 사용
디버깅 및 테스트: GPU 없는 환경에서 간단한 테스트나 디버깅 목적 사용
소프트웨어 렌더링: CPU 기반 렌더링이 충분한 경우, 작은 규모의 그래픽 작업이나 연구 목적 사용

차이점 요약

EGL: GPU를 통한 하드웨어 가속, 고성능 그래픽 렌더링 가능, 주로 모바일/임베디드/서버 환경에서 사용
OSMesa: CPU 기반 소프트웨어 렌더링, GPU 없는 환경에서 사용, 단순 테스트 및 디버깅에 적합

자주 사용 여부

EGL: GPU가 있는 환경에서 주로 사용, 고성능 작업에 적합
OSMesa: GPU 없는 환경에서 사용, 소규모 작업이나 테스트에 적합

안녕하세요

한국전자기술연구원 김영광입니다.
관련 기술 문의와 R&D 공동 연구 사업 관련 문의는 “glory@keti.re.kr”로 연락 부탁드립니다.

Hello

I'm Yeonggwang Kim from the Korea Electronics Research Institute.
For technical and business inquiries, please contact me at “glory@keti.re.kr”