프로젝트_랜드마크 - 23일차
Intro
- 어제 떠올린 “유튜브 영상을 통해 편하게 이미지 데이터를 수집해보자!”라는 아이디어는 실패했다.
유튜브 데이터 활용 - 단점
-
건물 외관만 깔끔하게 찍어둔 영상은 대단히 드물게 존재했다.
-
vlog는 대부분 건물 내부로 들어가 활동하는것에 초점이 맞추어져 있고, 따라서 외부 모습이 찍혀있는 영상이 아예 없는 경우가 많았다.(양재 AT센터 등)
-
특정 지역에 몰려있는 랜드마크의 경우(KBS, SBS, MBC등의 상암DMC에 위치한 랜드마크 등) 이들을 통째로 묶어 영상을 촬영했기 때문에, 개별 데이터들에 대한 영상을 확보하기 어려웠다.
-
확보된 영상만 사용해서 학습을 진행하자니 데이터 불균형 문제가 발생할수 있어 고민끝에 전량 폐기했다.
모델 재구성 및 고찰
-
유튜브 데이터를 못쓴다고 손놓고 하루 버리기는 애매해서, 일단 어제 추가했던 보라매공원, 양재 시민의숲 데이터를 제외한 모델을 다시 훈련시키기로 했다.
-
훈련을 세번쨰 진행하면서 생각하는것인데, 모델 한개를 생성할때마다 4시간 가까이 시간을 사용하게 되는데, 훈련 시간을 줄일 방법을 찾을 필요를 느꼈다.
-
텐서플로 파이프라인 튜토리얼에서는 성능 향상을 위해 다음과 같은 최적화 기법을 제시하고 있다.
- prefetch
- 전처리와 훈련스텝의 모델 실행을 오버랩하여 훈련이 실행되는 동시에 데이터를 읽어들여 시간을 단축
- interleave + num_parallel_calls
- 데이터셋을 병렬화시켜 읽어들임으로서 파일을 여는데에 기다리는 시간을 단축
- map + num_parallel_calls
- 동일한 전처리 함수를 병렬로 적용하여 전처리 시간을 단축
- cache
- 데이터셋을 캐싱하여 1epoch 이후부터 캐시된 데이터를 재사용
- batch + map
- 매핑된 함수를 한번만 호출함으로서 전체 시간 성능을 향상
- 시간을 소모하는 매핑 -> 캐싱 -> 메모리를 소모하는 매핑 으로 변환을 연결하는것이 유리함.
- prefetch
-
interleave는 데이터셋 디렉터리 하나에서 take를 통해 test, train을 나누는 방식이라 그런지 적용해도 유의미한 시간 감소가 나타나지 않았다.
-
map함수를 통한 프로세스 병렬화 역시 제대로 작동하지 않았다.
-
무언가 참고할만한 예제가 있다면 그걸 기반으로 쌓아올릴텐데, 그저 막막하다.