menu
close_24px

고해상도 이미지를 위한 인공지능 플랫폼의 개발과 그 과정에서 발생하는 어려움

초고용량 이미지를 효율적으로 처리할 수 있는 최첨단 머신 비전 플랫폼을 만드는 것은 정말 어려운 일입니다. 이 소프트웨어는 빅데이터, 머신러닝, 고급 컴퓨팅 기술을 모두 통합하여야 하며, 현미경, 디지털 트윈 또는 원격 탐사 이미지로 작업하는 분석가의 요구에 부응해야 합니다. 이러한 플랫폼을 개발하는 과정에서 저희는 지난 6년 동안 수많은 도전과 장애물에 직면했습니다. 이 글을 통하여 그동안 저희가 직면한 어려움과 저희가 고안한 독창적인 해결책을 여러분들과 공유하고자 합니다.

1. 대용량 이미지를 처리하는 방법과 이것이 어려운 이유는 무엇인가요?

대용량 이미지로 잘 알려진 항공, 위성 이미지는 웹 브라우저에서는 지원되지 않는 GeoTIFF 형식으로 캡처되는 경우가 많습니다. 때문에 서버는 사용자가 Deep Block과 같은 웹 앱에서 이러한 이미지를 볼 수 있도록 이미지를 웹 브라우저에 호환 가능한 형식으로 변환해야 합니다.
또한 변환 프로세스는 최대한 신속하게 이루어져야 하며, 효율적이고 빨라야 합니다.
변환이 완료되면, 백그라운드에서 변환되고 처리된 이미지를 사용자들에게 렌더링하고, 이를 알려야 합니다.
저희 Deep Block은 처리 시간을 줄이기 위해, 특허받은 알고리즘을 구현하였고,
플랫폼 아키텍처를 최적화하여, 거대한 이미지도 웹 브라우저에서 렌더링하고 처리할 수 있습니다.

2. 이렇게 큰 이미지에 머신러닝 기술을 어떻게 적용하나요?

위성, 현미경 사진은 경우에 따라 1장에 10GB~100GB 에 이릅니다. 이미지의 해상도는 100,000 x 100,000 픽셀을 초과하며, 이러한 이미지를 분석할 때는 이미지를 더 작은 조각으로 나누는 것이 중요합니다. 컴퓨터 비전이나 기계 학습에 대한 지식이 없는 분들은 이미지를 단순히 오픈 소스 AI 모델에 넣으려고 시도하는 경우가 많습니다. 그러나 이러한 오픈소스 모델은 단순히 이미지 크기를 줄여버리며, 이미지를 분석하기 위해 필요한 픽셀 정보들은 모두 소실되어, 결과적으로 이러한 시도는 실패하게 됩니다.
Sad things that natural scientists do
그러나 이 큰 이미지를 분할하려고 하면 수많은 문제가 발생합니다.
어떤 사람들은 이러한 이미지를 분할하고 처리하는 것이 간단한 작업이라고 주장하지만, 막상 이러한 소프트웨어를 직접 구현할 수 있는 능력이 없거나, 어디서부터 무엇을 해야할 지 알지 못 합니다.
저희가 만든 정교한 소프트웨어를 개발하는 데에는 엄청나게 많은 지식과 경험이 필요합니다.
다음 단락에서는 이미지 분할로 인해 발생하는 문제를 깊이 이해하고 이를 어떻게 극복했는지 설명하겠습니다.

3. 분할 문제 - 사물의 소실
poor penguin

이미지가 분할되면 경계선에는 개체의 일부만 남게 됩니다.
기계 학습 모델이 여전히 이러한 조각난 개체를 인식할 수 있는 가능성이 있지만, 일반적으로 머신 비전 모델이 개체의 일부를 보고, 전체를 이해하는 데 어려움을 겪고, 이해할 수 있다 하더라도 정확도가 떨어지게 됩니다.
사람도, 특정 사물의 특정 부분만으로 사물을 판별하기 힘든 것처럼, 이미지 분할은 많은 문제를 발생 시킵니다.
일부 머신러닝 엔지니어는 "이 문제를 해결하기 위해 알고리즘을 구현하겠습니다."라고 말할 것입니다.
그러나 "정확히 어떤 방식으로 하시겠습니까?"라는 질문이 남아 있습니다.

4.이미지를 분할하는 동안 발생하는 더 많은 문제

이 문제를 해결하기 위해 옴니스랩스 주식회사는 문제를 효과적으로 해결하는 자체 특허 알고리즘을 개발했습니다.
당사의 획기적인 알고리즘에 대한 자세한 내용은 이 알고리즘에 대한 설명을 확인하세요.
그러나 알고리즘을 구현하는 것은 시작에 불과합니다.
초고화질 이미지를 분할하다 보면 엄청난 양의 파일이 생성됩니다.
또한 파일을 읽는 속도는 RAM이나 캐시에 로드된 데이터를 읽는 것에 비해 상당히 느립니다.
이를 처리하기 위해 옴니스랩스 주식회사는 엄청나게 많은 고급 소프트웨어 엔지니어링 기술을 통합했습니다.
Deep Block과 옴니스랩스 주식회사의 전문성을 확인해보세요.

5. 처리가 완료되면 초고해상도 이미지를 어떻게 표시해야 하나요?

경우에 따라 위성 또는 현미경 이미지는 10GB를 초과하고 해상도가 100K를 초과할 수 있습니다.
이는 브라우저에서 이미지를 렌더링할 때 심각한 문제를 야기합니다.
웹 브라우저는 일반적으로 50MB 이상의 이미지를 렌더링 할 수 없으며, 5000x5000 픽셀 이상의 이미지를 렌더링 할 수 없습니다.
실제로 실험을 해보면, 구글 크롬 브라우저는 120MB 이상의 이미지를 렌더링 할 수 없습니다.
이를 처리하기 위해 저희는 HTML의 '캔버스' 구성요소를 사용하여, 클라이언트 측와 백엔드에서 이미지를 더 작은 조각으로 나누고 동적으로 처리하는 특수 알고리즘을 구현했습니다.
또한 이전에 렌더링된 이미지에 대한 빠른 액세스를 보장하기 위해 다양한 캐싱 기술을 활용했으며, 부드럽고 원활한 렌더링을 보장하기 위해 다양한 특수 알고리즘을 구현했습니다.


6. 캔버스의 한계를 극복하는 방법은 무엇입니까?

이전 섹션에서 본 것처럼 HTML의 캔버스 구성 요소는 이미지를 렌더링하고 조작하는 데 사용됩니다.
그러나 단일 캔버스에 렌더링할 수 있는 이미지 해상도의 권장 최대 크기는 5000x5000픽셀입니다. 이러한 제한을 극복하기 위해 우리는 큰 이미지를 더 작은 섹션으로 분할하여 여러 캔버스에서 동시에 렌더링할 수 있는 특수 알고리즘을 구현했습니다.
저희는 또한 사전 렌더링, 캐싱, 데이터베이스를 사용하여 서버 측에서 이미지 모자이크를 생성한 다음 클라이언트 측에서 볼 수 있도록 제공하는 혁신적인 기술을 개발했습니다.

최신 웹 브라우저에는 메모리 사용량 제한이 있으며, 대부분의 웹페이지는 메모리가 50MB 미만으로 제한됩니다. 128MB가 넘는 데이터를 브라우저에 로드하면, 브라우저는 심각한 어려움을 겪기 시작합니다.
이는 초고해상도 이미지를 렌더링할 때 문제를 야기합니다.
따라서 이미지의 필요한 섹션만 메모리에 로드하여, 애플리케이션의 메모리 공간을 줄여야 합니다.

7. 그렇다면 웹 기반 플랫폼 개발을 선택하는 이유는 무엇인가요?

웹 브라우저의 한계에도 불구하고 Deep Block의 컴퓨터 비전 플랫폼은 전 세계 사용자가 서비스에 액세스할 수 있도록 웹 기반으로 제작되었습니다.
그렇지 않으면 최종 사용자 소프트웨어를 만들기 위해, CPP 또는 Python QT를 사용해야 하며,
국내의 대부분의 업체들은 Unity나 QT를 사용하고 있지만, 이러한 기술은 C++과 달리 범용적으로 사용되는 기술이 아니며, 많은 문제를 갖고 있습니다.
반대로 웹 앱은 레이아웃과 디자인에 무한한 유연성을 제공하고, 스케일링과 배포에 유용하며, 플랫폼을 디자인하고 유지 관리할 때 많은 이점을 가집니다.

8. 초고해상도 이미지 분석에 병렬 처리가 필요한 이유는 무엇일까요?

초고해상도 이미지를 분석하려면 이미지는 반드시 여러 조각으로 나누어야 합니다.
이 이미지를 자르면 여러 개의 파일이 생성되고, 이러한 여러 이미지를 처리하는 데에는 이미지 하나를 처리하는 것보다 더 많은 시간이 필요합니다.
즉, 분할때문에 추가적인 오버헤드가 발생합니다.
옴니스랩스 주식회사는 높은 서비스 속도를 유지하기 위해 병렬 처리 기술을 사용합니다.
그러나 이러한 기술을 구현하는 것은 쉽지 않으며, 상당한 전문 지식이 필요합니다.
Deep Block은 동일한 코드의 여러 인스턴스가 여러 프로세서 또는 노드에서 동시에 실행될 수 있도록 병렬 처리 기술을 개발하여 전체 처리 시간을 단축했습니다.
즉, 저희는 분산 컴퓨팅 기술을 사용하여 대용량 이미지 처리를 병렬화합니다.
이 접근 방식은 이미지 처리 작업을 여러 컴퓨팅 노드에 분산시켜 대용량 이미지를 더 빠르게 처리할 수 있게 해줍니다.

게다가 GeoTIFF 이미지에는 공간정보 메타데이터도 포함되어 있으며, 이러한 이미지에 존재하는 객체는 작게 나타나는 경우가 많으므로, 이를 인식하려면 전처리 기술, 후처리 기술, 추가적인 다양한 알고리즘이 필요합니다.
이러한 문제를 해결하기 위해 저희는 공간정보 메타데이터 처리 기술 및, 작은 사물 인식 기술도 지속적으로 고도화하였습니다.

9. 귀하를 지원할 올바른 전문가를 선택하는 방법은 무엇일까요?

고해상도 이미지 분석은 큰 크기와 해상도로 인해, 빅데이터라고 볼 수 있습니다.
머신러닝과 병렬 컴퓨팅 같은 기술을 빅데이터와 결합하면 이러한 과제가 더욱 악화되며, 자연과학자 및 GIS 분석가, 공간정보 업체가 이 문제를 해결하는 것은 거의 불가능합니다.

게다가 작동하는 소프트웨어를 개발하고, 머신러닝 알고리즘을 구현하는 것만으로는 충분하지 않습니다.
업계는 매일 수많은 이미지를 생성하며 세상은 끊임없이 변화하고 있습니다.
따라서 소프트웨어는 사용자 친화적이어야 하며 원활한 사용자 경험을 보장하기 위해 입력 이미지를 빠르게 분석할 수 있어야 합니다.
거대한 데이터 처리, 파일 시스템 기술, 속도와 사용자 경험은 소프트웨어 엔지니어링과 컴퓨터 소프트웨어 기술의 중요성을 인식하지 못하는 연구자와 개인이 간과하는 아주 중요한 요소입니다.

공간정보산업과 제조업은 인공지능 기술 발전이 매우 더디며, 다양한 분석 업무를 수작업에 크게 의존하고 있습니다.
그러나, 컴퓨터 과학에 대한 광범위한 전문 지식을 갖춘 옴니스랩스 주식회사는 이미지를 효율적으로 처리하는 사용자 친화적인 소프트웨어를 만들어 이러한 문제를 해결하는 것을 목표로 합니다.

Deep Block은 고급 컴퓨팅 기술과 인공지능 기술을 활용하여 이미지 처리 속도를 향상시킬 뿐만 아니라, 원활한 사용자 경험을 보장하는 솔루션입니다.