[Android] JNI 사용 방법 정리(Java 에서 C++ 언어를 사용하는 방법)
·
Study/Computer Vision
- 앞선 포스팅(안드로이드 TFLite 사용법)에 이어 정리하겠습니다. - Android 에서 성능 향상을 위해 고려할 수 있는 방법 중 하나인 JNI 는 JVM 기반 언어의 한계를 극복하게 해줄 수 있습니다.Java 계열 언어는 응용 프로그램인 JVM 위에서 동작하기 때문에 어떻게 하더라도 성능상의 악영향을 받을 수 밖에 없는데, JVM 을 벗어나 C 와 같은 네이티브 언어를 실행할 수 있는 기법이 있습니다.그것이 바로 JNI 입니다. JNI 의 주요 용도는, C 언어 계열의 라이브러리(컴퓨터 비전 영역에서는 주로 OpenCV 가 대표적)에서 제공하는 기능을 사용하거나, 혹은 실시간 처리 로직의 성능을 극대화 하기 위해 사용됩니다. 이번에는 Android 에서 JNI 를 사용하는 방법을 알아보겠습니다...
[Android] 모바일 딥러닝, TFLite 사용법 정리(모바일 이미지 분류기 구현)
·
Study/Computer Vision
- 이번 포스팅에서는 Tensorflow 등으로 학습시킨 딥러닝 모델을 Android 에서 안정적으로 구동시키는 방식에 대해 알아보고,간단한 이미지 분류기 및 YOLO 를 사용한 객체 탐지기를 구현해보겠습니다. 이전에는 Flutter 를 사용한 객체 탐지 서비스를 구현해 보았지만 성능상의 문제가 무시할 수 없을 정도로 심각했기에,그냥 이전에 만들어 본 경험이 있는 Android 개발 방식을 이렇게 다시 정리하고, 추후 필요하다면 iOS 개발 방식을 따로 배워서 기술 포팅을 하는 방식으로 크로스 플랫폼을 전부 지원하려고 합니다. - 특이점을 미리 말씀드리자면, 제가 사용하는 안드로이드 기술 스택은,Android Compose UI,Kotlin 언어,Coroutine 비동기 처리,ViewModel 객체를 사..
[딥러닝] BLIP 논문 리뷰(이미지 캡셔닝, 비디오 내용 분석, 이미지 검색)
·
Study/Computer Vision
- 이번 포스팅에서는 CLIP 을 기반으로 발전한 이미지 내용 분석 및 자연어 생성 멀티 모달 모델인 BLIP 의 논문을 정리하겠습니다. 앞서 리뷰한 CoCa 모델에서 CLIP 을 기반으로 하여 이미지 캡셔닝, 비디오 내용 분석에 대한 새로운 접근 방식과 성능 향상 방법론을 배웠는데, BLIP 에서 발전한 BLIP-2 는 그보다 성능이 좋은 모델로 평가되므로 이전에 정리한 내용을 기반으로 어떤 방식으로 성능을 향상시켰는지를 파악할 수 있을 것입니다. [BLIP]- 논문 : BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation (2022, salesforce) (서론)- V..
[딥러닝] CoCa(Constrastive Captioners) 모델 논문 리뷰(CLIP 기반 자연어-이미지 임베딩 모델, 이미지 캡셔닝, 비디오 내용 분석)
·
Study/Computer Vision
- 이번 게시글에서는 앞서 정리한 CLIP 모델을 응용하여 이미지 캡셔닝 모델을 개선한 CoCa(Constrastive Captioners)에 대해 논문 리뷰를 진행하겠습니다. [CoCa(Constrastive Captioners)]- 논문 : CoCa: Contrastive Captioners are Image-Text Foundation Models (2022, Google) (서론)- 본 논문은 CoCa 라는 이미지-텍스트 기반 대규모 사전 학습 모델을 제안합니다.기존의 CLIP 처럼 이미지와 텍스트를 연결하는 능력과 더불어 SimVLM 과 같은 문장 생성 능력을 한번에 학습하는 모델이라고 하네요. SimVLM 에 대해서는 알아보지 않았는데, 아마 이미지-텍스트 의미 추출 + 이미지를 통한 문장 생..
[딥러닝] CLIP(Contrastive Language-Image Pre-training) 논문 리뷰 (멀티모달 임베딩 기술)
·
Study/Computer Vision
- 이번 포스팅에선 이미지와 텍스트를 기계가 동일 방식, 동일 공간으로 이해할 수 있도록 인코딩 하는 기술인 CLIP 에 대해 알아보고 정리하겠습니다. 제목에는 멀티 모달 임베딩 기술이라고 적었지만,일반적으로 생각하는 멀티 모달에 국한되는 개념이라기보다는 컴퓨터 비전 영역에 자연어를 융합하여 Zero-shot Learning 으로 다양한 작업을 처리할 수 있도록 하는, 단순 임베딩보다 넓은 개념의 방법론이라는 것을 아래 설명으로 이해하실 수 있을 것입니다. 이전에 멀티 모달 LLM 을 정리할 때(LLaVA 모델에서 사용한 인코더가 CLIP-ViT 였죠)에 간단히 설명 했었지만 논문을 기반으로 더욱 자세히 정리할 필요성을 느꼈기에, 본 게시글에서는 CLIP 에 대해 논문 내용을 정리하겠습니다. [CLIP(..
[딥러닝] BiSeNet V2 (Semantic Segmentation, 파인 튜닝 및 개발 방법, 논문 해석)
·
Study/Computer Vision
- 이번 포스팅에서는 실시간 추론에 응용할 수 있는 Semantic Segmentation 모델들 중 현 시점 가장 효율이 좋은 BiSeNet V2 에 대한 실제 개발 방법 및 논문 해석을 통한 내부 원리 이해를 진행하겠습니다. - Image Segmentation 모델을 선택하는 기준을 먼저 말씀드리겠습니다. BiSeNet V2 보다 정확도가 높은 모델들이나 가벼운 모델들은 여럿 존재하지만,정확도가 일정 수준 이상 보장(mIoU 72.6)되는 동시에 경량 추론(FPS 124, Param 3.5M)을 지원하는 가장 균형적인 모델은 BiSeNet 이 가장 적합하며, 이보다 무겁고 더 정확한 모델의 경우는 Transformer 계열의 어텐션 모델(mIoU 78.6, FPS 60.3, Param 7.6M 이상..
[Flutter] 모바일 YOLOv11 객체 탐지 기능 구현(YOLOv11 빌드, TFLite 객체 탐지 추론, 이미지 전처리, 좌표 매핑)
·
Study/Computer Vision
- 이번 포스팅에서는 Flutter 를 사용하여 모바일 환경에서 YOLO v11 모델을 사용하여 객체 탐지를 적용하는 방식을 정리하겠습니다. - 현 시점 에지 디바이스에서 동작 시킬 수 있는 가장 경량에 가장 정확도가 높은 YOLO v11 모델은,경량 디바이스, 실시간을 고려한다면 가장 먼저 도입해볼 기술이죠. Python 을 이용한 YOLO v11 빌드 방식에서부터,인터페이스 구성에 대한 설명과, 이미지 전처리 방식, 출력 좌표 후처리 방식까지를 정리 후 Flutter 를 사용하여 안드로이드에서 실제로 동작이 가능한 데모 페이지를 만들어보겠습니다. - 추가로 공유드리자면,카메라 라이브러리와 연동하여 실시간으로 객체 탐지를 하는 앱도 구현해 보았는데, 갤럭시 S25 를 사용하여 추론을 돌렸을 때, FPS..
[딥러닝] YOLO v11 정리 (v5 ~ v10 내용 정리, C3K2, SPPF(Spatial Pyramid Pooling - Fast), FPN(Feature Pyramid Network), C2PSA, PAN)
·
Study/Computer Vision
- 이번 포스팅에서는 실시간 객체 탐지 모델 중 가장 실용성, 정확성, 속도가 우수한 v11 을 정리하겠습니다.직전에 정리한 v12 가 정확도와 속도는 v11 보다 올라갔지만, 아직 실험적인 단계의 모델인 것으로 보였으며,특히나 v11 보다 우수한 성능을 내기 위해선 전용의 고성능 GPU 가 준비되어 있어야 한다는 것을 보고 제 기술 스택에는 v11 을 추가하기로 결정하였습니다.(경량 + 실시간성 + 디바이스 범용성이 충족되지 못해도 된다면 차라리 무거운 트랜스포머 계열의 모델을 사용하는 것이 나을 테니까요...) (YOLO v11 설명)- 논문 : YOLOv11: An Overview of the Key Architectural Enhancements 2024v11 역시 작년에 출시된 최신 모델입니다...
[딥러닝] YOLO v12 정리 (Area Attention, FlashAttention, R-ELAN)
·
Study/Computer Vision
- 이번 포스팅에서는 실시간 객체 탐지 계열 모델중 최고 성능을 유지하고 있는 YOLO 의 최신 모델인 YOLO v12 를 정리하겠습니다. 원래는 YOLO 시리즈를 전부 리뷰하려고 했지만, 이전에 정리한 v4 모델 이후로 후속 모델이 너무 많으므로 그 모든 변경 사항을 전부 정리하는 것은 비효율적이라고 느꼈기에 최신 모델을 정리하려 합니다. 이전까지의 YOLO 시리즈 정리글로 인하여 YOLO 객체 탐지 모델이 무엇인지에 대해 배웠고,이외의 CNN 기법이라던지 Transformer 에 대해서도 정리하였으므로 크게 어렵지 않게 내용을 이해할 수 있을 것입니다. - YOLO v12 는 최신 버전 모델답게 v11 대비 정확도 1.2% 가 향상되었으며, 속도 역시 0.1ms 정도 더 빨라졌습니다.(FlashAtt..
[딥러닝] Swin Transformer 정리 (Transformer 기반 컴퓨터 비전 백본, Window-based Self-Attention, Shifted Window)
·
Study/Computer Vision
- 이번 포스팅에서는 트랜스포머 기반의 최신 비전 분석 모델들에 영향을 준 Swin Transformer 에 대해 알아보고 정리하겠습니다. 학습 로드맵을 파악하기 위하여 앞서 정리한 Efficient-Net V2 와 성능 비교부터 하자면,효율성, 경량성, 학습 속도의 전체 균형은 EfficientNetV2 가 압도적으로 좋습니다.실용성으로는 Efficient-Net 을 사용하는 것이 최선이죠. 또한 추후에 리뷰할 LeVit 는 이미지 분류 정확도 측면에서는 Efficient-Net 보다 0.5% 정도 낮지만,경량화와 실행 속도 측면에서는 Efficient-Net 을 뛰어넘으므로 모바일이나 엣지 디바이스 환경에 유리한 모델이며, 이번 게시글에서 리뷰할 Swin Transformer 의 차기 버전인 Swin..