NeRF 는 3D Representation 결과를 visualize 할 때 동영상 포맷을 자주 활용한다. Novel view 들을 모아서 동영상으로 만들어 보겠다는 심산이다 (참고1). 이 부분이 잘 동작하는지 확인해 보기 위한 테스트 모듈이 필요하다고 생각해 보자. 아래는 테스트 코드의 샘플 코드이다.
class VideoVisualizer(unittest.TestCase):
...
def test_write_video(self):
save_dir='./for_test_temp_dir'
video_name='for_test_temp_vid.mp4'
videovis.write_video(
nerf_model=nerf_model,
save_dir=save_dir,
video_name=video_name,
)
Python
복사
당연히 테스트를 했으면 저 디렉터리(./for_test_temp_dir) 와 저 비디오(for_test_temp_vid.mp4) 를 다시 지워 두어야 한다. 저것을 어떻게 지워둘 수 있을까? unittest.TestCase 를 상속받고 tearDown 메서드를 정의하면 이를 간단하게 구현할 수 있다.
class VideoVisualizer(unittest.TestCase):
...
def test_write_video(self):
self.save_dir='./for_test_temp_dir'
self.video_name='for_test_temp_vid.mp4'
videovis.write_video(
nerf_model=nerf_model,
save_dir=self.save_dir,
video_name=self.video_name,
)
def tearDown(self):
tf.io.gfile.rmtree(self.save_dir)
Python
복사
하지만 이렇게 되는 경우, test_write_video 를 제외한 다른 테스트 케이스들이 종료했을 때에도 tearDown 메서드가 실행되기 때문에 영향을 받을 수 있다. 이럴 때에는 모듈이 끝날 때 한 번만 실행되는 tearDownModule 을 사용하면 된다.
class VideoVisualizer(unittest.TestCase):
...
def test_write_video(self):
global save_dir, video_name
save_dir='./for_test_temp_dir'
video_name='for_test_temp_vid.mp4'
videovis.write_video(
nerf_model=nerf_model,
save_dir=save_dir,
video_name=video_name,
)
...
def tearDownModule():
tf.io.gfile.rmtree(save_dir)
Python
복사
참고
1.


