번역가 | Zhu Xianzhong
Reviewer | Sun Shujuan
그림 1: 표지
3D 모델을 생성하는 데는 시간이 많이 걸리거나 많은 수의 참조 이미지가 필요할 수 있습니다. 이 문제를 해결하는 방법 중 하나는 인공지능의 영상 생성 방식인 신경복사장(NeRF)을 활용하는 것이다. NERF의 주요 아이디어는 촬영한 물체나 장면의 작은 2D 이미지 세트를 가져온 다음 이러한 2D 이미지를 사용하여 3D 표현을 효율적으로 구축하는 것입니다. 이는 기존 이미지 간의 변환을 학습함으로써 달성됩니다. 이제 이 점프("보간"이라고도 함) 기술을 사용하면 개체에 대한 새로운 관점의 이미지를 만드는 데 도움이 될 수 있습니다!
좋을 것 같죠? 작은 이미지 세트를 사용하여 3D 모델을 만들 수 있습니다! 이는 일부 사진을 생성하기 위해 거대한 이미지 라이브러리가 필요한 표준 사진 측량보다 더 잘 작동합니다(모든 각도에서 촬영해야 함). 그러나 NVIDIA는 처음에 NeRF가 빠를 것이라고 약속했지만 최근까지는 그렇지 않았습니다. 이전에는 NeRF가 이미지 세트를 3D 모델로 변환하는 방법을 배우는 데 오랜 시간이 걸리는 경향이 있었습니다.
하지만 요즘에는 더 이상 그렇지 않습니다. 최근 NVIDIA는 GPU 하드웨어를 활용하여 필요한 복잡한 계산을 실행하는 즉각적인 NeRF 소프트웨어를 개발했습니다. 이 접근 방식을 사용하면 모델을 생성하는 데 필요한 시간이 며칠에서 몇 초로 단축됩니다! NVIDIA는 instant-ngp 소프트웨어의 유용성과 속도에 대해 많은 흥미로운 주장을 합니다. 또한 그들이 제공한 결과와 예시는 인상적이었습니다.
그림 2: NeRF 이미지 데모 – NVIDIA에는 멋진 로봇 공학 연구소가 있습니다
이 데모에 깊은 인상을 받지 않을 수 없습니다. – 멋져 보입니다! 그래서 저는 이것을 내 이미지로 전송하고 나만의 NeRF 모델을 생성하는 것이 얼마나 쉬운지 알고 싶었습니다. 그래서 저는 이 소프트웨어를 직접 설치하고 사용하기로 결정했습니다. 이 기사에서는 실험에 대한 내 경험을 설명하고 내가 만든 모델을 자세히 설명하겠습니다!
그럼 어떻게 해야 할까요? 대략적으로 진행된 작업은 다음과 같이 나뉩니다.
이 모든 것이 어떻게 작동하는지 자세히 설명하지는 않지만 도움이 된다고 판단한 많은 리소스에 대한 링크를 제공할 것입니다. 그래서 다음에는 제가 만든 비디오와 그 과정에서 우연히 발견한 몇 가지 지식에 집중하겠습니다.
NVIDIA의 인스턴트 NeRF 소프트웨어는 설치가 쉽지 않습니다. 소프트웨어에 대한 지침은 명확하지만, 개인에게 필요한 특정 소프트웨어 버전에 관해서는 지침의 필수 부분이 그다지 흔들릴 여지가 없는 것 같습니다. CUDA 11.7이나 VS2022를 사용하는 것은 불가능해 보였는데 CUDA 11.6 버전과 VS2019로 다시 전환해서 드디어 설치가 성공한 것 같습니다. 그 중 "CUDA_ARCHITECTURES가 대상에 대해 비어 있습니다" 등의 오류가 많이 발생했습니다. CUDA와 Visual Studio의 협력이 우호적이지 않기 때문입니다. 따라서 관심 있는 독자들은 Github의 동영상과 창고 리소스를 참조하여 모든 것을 원활하게 설정할 수 있도록 진심으로 권장합니다!
그 외에는 진행이 원활하게 진행되고 있습니다. 관계자는 또한 캡처된 비디오를 이미지로 변환하고 이후 모델과 비디오로 변환하는 단계를 안내하는 데 도움이 되는 Python 스크립트를 제공합니다.
처음에는 사무실에 있는 작은 LEGO 자동차를 NeRF화하려고 했습니다. 의미 있는 이미지를 전혀 만들 수 없었기 때문에 제 사진 기술이 부족하다고 느꼈습니다. 그냥 이상한 3D 흠집이에요. 잊어버리세요. NVIDIA에서 제공하는 예를 살펴보겠습니다. 사진 속 카메라 위치를 참고하세요:
그림 3: NVIDIA에서 제공하는 굴삭기 기본 NeRF 모델의 "카메라" 위치
훈련에 잘 맞는 준비 설정 중 하나는 위 그림에 설명된 대로 장면에 "카메라"를 배치하는 것입니다. 이 카메라는 비디오를 촬영할 때 소프트웨어가 직면하고 있다고 생각하는 각도입니다. 좋은 원이 되어야 합니다. 물론, 나의 첫 번째 레고 자동차는 전혀 이렇게 보이지 않았고 반원형이 찌그러져 있었습니다.
첫 번째 시험에서 배우기 위해 완전히 걸을 수 있는 테이블을 발견하고 더 큰 레고 자동차를 발견했습니다. 저도 예전보다 좀 더 오래 사진을 찍으려고 노력해요. 마지막으로 모든 각도에서 부드러운 1분짜리 영상을 촬영했습니다. 전체적으로 모델을 훈련하는 데 30초도 채 걸리지 않았습니다. 720p에서 4시간 동안 렌더링한 후 제가 만든 비디오는 다음과 같습니다.
그림 4: 나의 두 번째 NeRF 모델 – LEGO Technic 자동차!
결과는 위의 실험 2가 적어도 기술적으로는 더 낫다는 것을 증명합니다. 그러나 여전히 이상한 안개가 있어 그다지 문제가 되지는 않습니다. 다음 실험에서는 더 뒤쪽에서 촬영도 시도했습니다. (안개는 AI가 거기에 무엇이 있는지 "혼란"했기 때문에 발생했다고 가정합니다). 나는 aabc_scale 매개변수(장면의 크기를 측정하는)에 대해 더 많은 제어권을 갖고 몇 분 동안 훈련시키려고 노력하고 있습니다. 렌더링이 끝나면 아래와 같은 비디오 결과를 얻습니다.
그림 5: 거실 테이블에 있는 식물로 만든 NeRF 모델
훨씬 좋습니다! 뜨개질로 만든 화분, 나무의 홈, 나뭇잎의 복잡함을 그토록 정밀하게 표현한 방식이 인상적입니다. 나뭇잎 위로 급습하는 카메라를 보세요!
이제 테스트 결과가 점점 좋아지고 있습니다! 하지만 야외 영상을 원합니다. 저는 아파트 밖에서 2분 미만의 동영상을 촬영하고 처리를 시작했습니다. 이는 렌더링/훈련의 경우 특히 번거롭습니다. 내 생각에는 aabc_scale 값이 상당히 높기 때문에(8) 렌더링 "광선"이 매우 멀리 이동해야 합니다(즉, 렌더링하려는 항목의 수가 더 높습니다). 그래서 480p로 전환하고 렌더링 FPS를 30에서 10으로 낮춰야 했습니다. 설정 매개변수의 선택이 렌더링 시간에 영향을 미치는 것으로 나타났습니다. 8시간의 렌더링 후 결론은 다음과 같습니다.
그림 6: 아파트 외부에서 사용한 NeRF 모델
하지만 세 번째 시도가 여전히 제가 가장 좋아하는 것 같습니다. 네 번째 재판을 좀 더 잘 할 수 있었을 것 같아요. 그러나 렌더링 시간이 매우 길어지면 버전을 반복하고 다양한 렌더링 및 교육 설정을 실험하기가 어려워집니다. 이제는 렌더링을 위해 카메라 각도를 설정하는 것조차 어려워서 프로그램 속도가 극도로 느려졌습니다.
하지만 비디오 데이터가 1~2분만 사용되었기 때문에 이것은 정말 놀라운 출력입니다. 드디어 디테일하고 사실적인 3D 모델이 완성되었습니다!
제가 가장 인상적이라고 생각하는 점은 사진 측량 교육을 전혀 받지 않은 사람이라도 1~2분의 촬영만으로 실행 가능한 3D 모델을 만들 수 있다는 것입니다. 이 프로세스에는 약간의 기술적 노하우가 필요하지만 일단 모든 설정이 완료되면 사용하기 쉽습니다. Python 스크립트를 사용하여 비디오를 이미지로 변환하는 것은 매우 효과적입니다. 이 작업이 완료되면 AI에 대한 입력이 원활하게 진행됩니다.
그러나 이 측면에 대해 Nvidia를 비난하기는 어렵지만, 이 점을 언급해야 한다고 생각합니다. 이 작업에는 매우 강력한 GPU가 필요합니다. 제 노트북에는 T500이 있는데 이 작업으로 인해 노트북이 절대적인 한계에 도달했습니다. 훈련 시간은 실제로 광고된 5초보다 훨씬 길며 1080p로 렌더링하려고 하면 프로그램이 충돌하게 됩니다(저는 135*74 표시기 주위에서 동적으로 렌더링하기로 선택했습니다). 이전 NeRF 모델 실험에는 며칠이 걸렸기 때문에 이는 여전히 큰 개선입니다.
이런 프로젝트를 위해 모든 사람이 3090p 장비를 갖고 있을 것이라고는 생각하지 않으므로 간단히 설명할 가치가 있습니다. 성능이 낮은 컴퓨터로 인해 프로그램을 사용하기가 어려워졌습니다. 특히 비디오 렌더링에 보다 유용한 설정을 갖기 위해 카메라를 "날아다니게" 하려고 할 때 더욱 그렇습니다. 그럼에도 불구하고 그 과정의 결과는 인상적이다.
또한 제가 직면한 또 다른 문제는 렌더 파일인 render.py를 찾을 수 없다는 것이었습니다( 짐작할 수 있듯이 이는 비디오 렌더링에 매우 중요합니다). 매우 이상하게도 대부분의 광고 기사 및 기타 문서에서 많이 언급되었음에도 불구하고 공식적으로 제공되는 오픈 소스 코드 저장소에는 없습니다. 그러므로 링크 https://www.php.cn/link/b943325cc7b7422d2871b345bf9b067f에서 이 보물을 캐내야 합니다.
마지막으로 위의 3D 모델을 .obj 파일로 변환하고 싶습니다. 어쩌면 지금은 이것이 가능합니다.
그림 7: 여우의 GIF 애니메이션 - 이것은 제가 만든 것이 아니라 NVIDIA에서 만든 것입니다. 나쁘지 않죠?
위의 실험 과정을 보면 이미지 생성이 가능한 인공지능 기술이기도 한 OpenAI에서 개발한 DALL-E가 생각나네요. 오늘날 이 기술은 접근성이 매우 높기 때문에 매우 인기가 높습니다. 또한 DALL-E는 인공 지능 모델이 수행할 수 있는 작업과 그 한계에 대한 정말 멋진 예를 보여줍니다. 이제는 대중 문화 현상이 되었습니다(또는 적어도 내 트위터 피드에 많이 등장했습니다). 사람들은 자신만의 이상한 DALL-E 사진을 만들고 이를 서로 공유합니다. 나는 이 기술을 통해 이런 일이 일어날 것이라고 상상할 수 있습니다. 누구나 비디오를 업로드하고 친구들과 공유할 수 있는 3D 모델을 만들 수 있는 웹사이트의 입소문 잠재력은 엄청납니다. 누군가는 결국 그렇게 하게 마련입니다!
개인적으로는 이 분야에서 더욱 실험적인 결과가 나오길 기대하고 있습니다. 저는 초현실적인 모델을 생성한 다음 이를 AR/VR에 적용하고 싶습니다. 이러한 기술을 바탕으로 웹 회의도 진행할 수 있습니다. 재미있지 않나요? 이 목표를 달성하려면 휴대폰의 카메라만 사용하면 되고, 오늘날 대부분의 사용자는 이미 휴대폰에 이러한 하드웨어 구성을 갖추고 있기 때문입니다.
전반적으로 감동받았습니다. 휴대전화로 1분짜리 동영상을 녹화하고 이를 따라갈 수 있는 모델로 바꿀 수 있다는 것은 정말 멋진 일입니다. 렌더링하는 데 시간이 걸리고 설치가 약간 어렵지만 훌륭하게 작동합니다. 몇 번의 실험 끝에 꽤 멋진 결과물을 얻었습니다! 더 많은 실험을 기대하고 있어요!
Zhu Xianzhong, 51CTO 커뮤니티 편집자, 51 CTO 전문가 블로그 , 강사, 웨이팡 대학의 컴퓨터 교사, 프리랜스 프로그래밍 업계의 베테랑입니다. 초창기에는 다양한 Microsoft 기술에 집중했습니다(ASP.NET AJX 및 Cocos 2d-X 관련 기술 서적 3권 집필). 지난 10년 동안 그는 오픈 소스 세계에 전념했습니다(인기 있는 풀 서비스 기술에 익숙함). 스택 웹 개발 기술)을 배우고 OneNet/AliOS+Arduino. /ESP32/Raspberry Pi 등 IoT 개발 기술과 Scala+Hadoop+Spark+Flink 등 빅데이터 개발 기술에 대해 배웠습니다.
원제: AI를 사용하여 3D 모델을 빠르게 생성!, 저자: Andrew Blance
위 내용은 인공지능 기술을 기반으로 3D 모델을 빠르게 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!