안녕하십니까
pytorch object detection 예제를 참조하여 개발 중입니다.
Android에서 pytorch 모델을 사용하여 객체를 감지하려고합니다.
최초로 한번 모델을 불러오고 그 모델을 기반으로 객체 감지를 하고 있습니다.
실시간으로 이미지를 수신하고 이 이미지를 비트맵으로 수신하여 결과로 특정 객체를 표시합니다.
그러나 TensorImageUtils.bitmapToFloat32Tensor 함수와 mModule!!.forward(IValue.from(inputTensor)).toTuple() 에서 시간이 많이 소요되어 실제 들어오는 영상보다 3~4초 뒤에 객체 감지가 되어 싱크가 맞지않습니다.
gpu를 사용하고 있지않는 것으로 보입니다. 프로그램이 구동되는 모델은 갤럭시 탭 s7입니다.
위에 적어주신 코드는 비트맵을 생성하고 그걸 텐서로 변경한 뒤 모델 inference하고 결과까지 받아오는 내용으로 되어 있습니다.
만약에 YOLO-V5 모델을 사용중이신데 저렇게 느리다고 한다면 모델 초기화(initialize) 하는 부분이 매번(매 프레임) 호출되고 있지는 않은지 확인이 필요할 것 같네요.
가속화와 관련된 것은 모델을 기존에 학습하신 것을 변환하는 작업이 필요합니다. 파이썬에서 해주셔야 되고 학습한 모델 파일을 갖고 계시면 변환을 할 수 있습니다. (변환 후에 android에서 inference코드를 변경해야 될 수도 있습니다.) 어떤 가속을 하실 건지에 따라 다르기 때문에 자세한 내용은 document를 참고 하시면서 작업해 보셔야 할 것 같습니다.