salient object detection(SOD)이란?

visual saliency 모델은 이미지 내에서 시각적으로 중요한 부분들이 어딘지 또한 얼마나 중요한지를 예측해주는 알고리즘이다. visual saliency 모델은 크게 두 부류로 나눌 수 있다. 하나는 이미지 내에서 사람의 시선이 어디에 가장 많이 머물지를 예측해내는 방법이고, 또 다른 하나는 이미지 내에서 사람이 중요하다고 생각할 물체 또는 지역을 검출해내는 방법이다[3]. 전자를 FP(fixation prediction) 방식이라고 부르고, 후자를 SOD(salient object detection) 방식이라고 부른다. 오늘은 SOD 방식에 대해 알아보려고 한다. 

 

salient object detection의 목적

SOD의 목적은 이미지 내에서 중요하다고 생각되는 물체를 검출해내는 것이다. 다른 말로 배경(background)에서 중요한 전경(foreground) 물체만을 분할해낸다. 아래 그림은 몇 개의 이미지에 대해 여러 개의 SOD 알고리즘들이 적용되어 산출된 saliency 맵들을 보여준다. SOD 알고리즘들이 배경과 중요한 전경 물체를 어느 정도 잘 분할해내는 것들을 확인할 수 있다. GT, 즉 ground-truth와 비교해서 F-DDS 모델이 산출한 saliency 맵은 큰 차이가 없다. 

 

그림 출처: [2]

 

SOD 과제는 object detection, semantic segmentation 과제와 연관이 있지만 목적에서 분명한 차이가 있다. object detection 과제는 이미지 내에서 물체를 찾아서 바운딩 박스로 감싸주고 그 물체가 무엇인지 분류해내는 것을 목표로 한다. 반면 semantic segmentation 과제는 이미지 내 물체들을 의미있는 단위로 분할해준다. 아래 그림을 보면 object detection과 semantic segmentation의 목적의 차이를 쉽게 알 수 있을 것이다. 

 

그림 출처: [1]

 

SOD의 발전사

Borji 등이 SOD 알고리즘에 대해 정리한 논문[4]에 의하면 SOD 알고리즘의 발전 역사에서 세 개의 사건을 주목할만하다고 한다. 첫번째 사건은 Itti 등이 visual saliency에 관한 계산 모델(computational model)을 1998년에 최초로 학계에 제안한 것이다. (엄밀히 따지면 Itti 모델은 FP 방식에 속하긴 하지만 Borji[4]는 SOD의 발전사를 정리함에 있어 FP와 SOD를 크게 구분짓지 않았다.)

 

두번째 사건은 2007년에 Liu 등이 visual saliency 과제를 이진 분할 문제(back ground와 foreground)로 정의한 것이다. visual saliency 과제를 object detection의 관점으로 보기 시작한 것이다. 

 

세번째 사건은 2015년부터 딥러닝 기반 SOD 모델들의 출현이다. 특히 컨볼루션 신경망(CNN)의 부흥은 SOD에도 큰 영향을 미쳤다. 사실상 지금 개발되는 SOD 모델들을 거의 모두 CNN 기반이라고 볼 수 있다. 

 

SOD의 발전사 [4]

 

 

<참고자료>

[1] https://towardsdatascience.com/detection-and-segmentation-through-convnets-47aa42de27ea, Ravindra Parmar, "Detection and Segmentation through ConvNets"

[2] Zhao 등, "Optimizing the F-measure for Threshold-free Salient Object Detection", arXiv preprint arXiv:1805.07567 (2018). 

[3] Borji 등, "Salient Object Detection: A Benchmark", IEEE Transactions on Image Processing, Vol. 24, No. 12, December 2015

[4] Borji 등, "Salient Object Dection: A Survey", Computational Visual Media, Vol. 5, No. 2, June 2019, 117-150.

 

 

 

댓글()
  1. BlogIcon 꾸준희 2019.07.08 14:23 신고 댓글주소  수정/삭제  댓글쓰기

    object detection 문제에서 중요한 물체에 집중하여 탐지하는 방식도 있었네요 ㅎㅎ, 좋은 글 읽고 갑니다!

경험 품질에 관한 레이블, MOS(mean opinion score)와 DMOS(differential opinion score)

MOS와 DMOS를 다루기에 앞서 먼저 label(레이블 또는 라벨)이 무엇인지 먼저 살펴보고 가자. 레이블은 "데이터의 속성을 우리가 분석하고자 하는 관점에서 정의하는 것"이다[2]. 보통 레이블이 있는 데이터의 집합을 훈련 데이터 또는 학습 데이터로 부른다. 레이블이 없는 어떤 데이터의 레이블을 정확히 예측하는 것이 보통 대부분 머신러닝 및 딥러닝 과제의 목적이다. 

 

이미지 분류(image classification) 과제에서 레이블은 고양이, 강아지, 사자, 토끼 이런 것들이 된다. 편의상 각 레이블에 숫자를 부여해준다. 고양이는 1, 강아지는 2, 사자는 3 이런 식으로 말이다. 

 

반면, 이미지의 품질의 왜곡 정도를 평가하는 이미지 품질 평가(image quality assessment) 과제에서 레이블은 점수가 된다. 각 이미지에 대한 경험 품질은 사람마다 다를 수 있으므로 여러 명이 주관적으로 점수를 매긴 것을 종합해서(일반적으로는 평균을 냄) 레이블로 삼는다. 

 

MOS, DMOS는 이와 같은 경험 품질에 관한 레이블이다. 먼저 MOS는 어떤 방식으로 생산되는지 알아보자. 

 

MOS(mean opinion score)

MOS를 직역하자면 '평균의견점수'라고 부를 수 있을 것이다. 모집된 여러 명의 피실험자들이 점수를 매긴 것을 평균낸 것이 바로 MOS다. 예를 들어 10명의 피실험자들이 어떤 왜곡된 이미지를 보고 각각 95, 89, 82, 93, 90, 81, 88, 95, 92, 91과 같이 점수를 매겼다면 그 왜곡된 이미지의 MOS는 이 점수들의 평균인 89.6이 된다. 

 

따라서 j번째 왜곡 이미지에 대한 MOS는 다음과 같은 식으로 나타낼 수 있다. N명의 피실험자가 참가했고, i번째 피실험자가 j번째 왜곡 이미지에 대해 매긴 점수를 $s_{ij}$라고 하면, 

 

$MOS_j = \sum_{i=1}^{N}s_{ij}$

 

이다.

 

DMOS(differential mean opinion score)

DMOS는 MOS에 비해 좀 더 정교하다. DMOS는 다음과 같은 방식으로 만들어진다. 먼저 어떤 왜곡된 이미지의 원본을 보고 점수를 매긴 것에서 그 왜곡된 이미지를 보고 점수를 매긴 것을 빼준다. 만약 i번째 피실험자가 j번째 왜곡 이미지에 대해 매긴 점수를 $s_{ij}$라 하고, i번째 피실험자가 j번째 왜곡 이미지의 원본 이미지에 대해 매긴 점수를 $S_{ij}$라고 하면, 

 

$d_{ij} = S_{ij} - s_{ij}$

 

이다. 이것을 DOS(difference opinion score)라고 부른다. 각 피실험자가 여러 장의 이미지에 매긴 점수들(DOS)을 Z-스코어로 표준화해준다. 왜냐하면 사람마다 점수를 매기는 경향이 모두 다르기 때문이다. i번째 피실험자의 DOS들의 평균을 $\bar{d}_i$, 표준편차를 $\sigma_{i}$라고 하면, 

 

$z_{ij} = (d_{ij} - \bar{d}_i)/\sigma_{i}$

 

이다. 표준화를 통해 모든 사람들이 매긴 점수를 동일한 범위에 놓이게 만들어준다. 그 다음에 여러 피실험자들이 각 이미지에 부여한 Z-스코어들을 평균낸다. 그것이 바로 DMOS다. 따라서 j번째 왜곡 이미지에 대한 DMOS 값은 다음과 같이 나타낼 수 있다.

 

$DMOS_j = \sum_{i=1}^{N}z_{ij}$

 

여기서 N은 피실험자의 총 인원수를 나타낸다. 

 

 

이 글에서 소개한 것은 MOS와 DMOS를 만드는데 있어서 가장 기본적이면서도 간단한 방법 중의 하나다. 데이터베이스마다 MOS와 DMOS를 만드는 방법에 있어 종종 꽤 차이가 있다는 것을 염두에 두길 바란다.  

 

 

<참고자료>

[1] https://en.wikipedia.org/wiki/Mean_opinion_score, 위키피디아(영문), "Mean opinion score"

[2] 김의중 지음, "알고리즘으로 배우는 인공지능, 머신러닝, 딥러닝 입문", 위키북스(2016)

[3] https://en.wikipedia.org/wiki/Subjective_video_quality, 위키피디아(영문), "Subjective video quality"

[4] Sheikh 등, "A Statistical Evaluation of Recent Full Reference Image Quality Assessment Algorithms", IEEE Transactions on image processing, Vol. 15, No. 11, November 2006.

태그 : DMOS, Label, mos, 레이블

댓글()

[MATLAB] 다양한 정도로 압축된 jpeg 이미지 만들기, imwrite 함수

일과 공부 사이/MATLAB|2019.07.03 12:13

imwrite는 이미지 데이터를 지정된 파일에 써주는 함수다. 이때 파일의 형식은 bmp, gif, jpeg, png 등 중에서 선택할 수 있다. 나는 이미지 데이터를 손실 압축의 한 종류인 jpeg 형식의 파일에 써줄 것인데, 다양한 품질을 갖도록 할 것이다. 다양한 품질을 갖는다는 의미는 압축률을 다양하게 해주겠다는 뜻이다. 결과적으로 이미지 파일마다 픽셀 당 비트 수(bbp)가 다를 것이다. 

 

한 이미지를 읽은 다음에 품질 점수 75, 50, 25, 10, 1의 jpeg 이미지를 써줬다. 코드는 다음과 같다. 

 

clc, clear, close all

img = imread('DSC09354.jpg');

imwrite(img, 'Q75.jpg', 'Quality', 75);
imwrite(img, 'Q50.jpg', 'Quality', 50);
imwrite(img, 'Q25.jpg', 'Quality', 25);
imwrite(img, 'Q10.jpg', 'Quality', 10);
imwrite(img, 'Q1.jpg', 'Quality', 1);

코드에서 알 수 있듯이 이미지를 읽을 때는 imread 함수를 사용하고, 이미지를 쓸 때는 imwrite 함수를 사용한다. 

 

자, 그럼 원본 이미지와 품질 점수 75, 50, 25, 10, 1인 jpeg 이미지를 확인해보자. 또한 파일의 크기도 함께 명시했다. 

 

 

품질점수를 낮게 설정해줄수록 압축이 더 많이 됨을 확인할 수 있다. 

 

 

댓글()

나는 지금 북위 39.106845도, 동경 117.171907도에 위치하고 있다(위도와 경도)

논문을 읽다가 latitude와 longitude란 단어를 보게 되었다. 저번에도 사전에서 검색했던 것인데 기억이 안나서 다시 한번 찾아보았다. latitude가 위도, longitude가 경도라고 한다. (이젠 그만 사전 찾아보자.ㅜ)

 

그런데 위도는 뭐고, 경도는 뭔지? 많이 들어 익숙하긴 한데 너무 모호하게 알고 있는 것 같아서 정리를 하려고 한다. 이러고 보면 나도 참 상식이란게 없다. 

 

위도와 경도란?

위도는 쉽게 말해 가로선과 관련되어 있다. 지구의 정중앙을 가로지르는 적도를 기준으로 위쪽에 0도부터 북위 90도까지, 아래쪽에 0도부터 남위 90도까지 존재한다. 위도는 -90도부터 90도까지 180도의 범위를 지닌다. 북위 90도 부근은 북극에 해당되고, 남위 90도 부근은 남극에 해당된다. 

 

반면 경도는 세로선과 관련되어 있다. 위도에서 적도와 같이 0도가 되는 기준이 필요한데, 경도에서는 그 기준을 영국 그리니치 천문대를 지나는 본초자오선(prime meridian)으로 삼고 있다. 경도 0도인 본초자오선을 기준으로 우측에 있으면 동경 몇도, 좌측에 있으면 서경 몇도 이런 식으로 표현한다. 경도는 -180도부터 180도까지 360도의 범위를 갖는다. 비슷한 경도에 있는 나라들은 시간대가 비슷하다. 

 

참고로 동일한 위도 또는 경도에 해당하는 지역을 선으로 이은 것은 위선 또는 경선이라고 한다. 

 

위도(latitude)와 경도(longitude), 그림출처: [3]

 

위도와 경도를 안다면 지구의 어떤 곳에 가있어도 내 위치를 정확히 설명할 수 있다. 

"나 지금 북위 39.106845도, 동경 117.171907도에 있어."

적도를 기준으로 북으로 39.106845도, 본초자오선을 기준으로 동쪽으로 117.171907도인 이곳은 바로 내 연구실의 위치다(톈진대학교 26 건물 D구역). 

 

또한 대학시절 자주 갔던 서울 중구 충무로의 대한극장은 북위 37.561092도, 동경 126.995323도에 위치하고 있다. 톈진보다 서울이 좀 더 남쪽, 좀 더 동쪽에 위치함을 알 수 있다. 

 

여행을 가서 이곳저곳을 방문할때, 위도와 경도를 찾아가면서 방문하는 것도 하나의 재미요소가 될 것 같다.

 

 

<참고자료>

[1] https://ko.wikipedia.org/wiki/%EA%B2%BD%EB%8F%84, 위키백과, "경도"

[2] https://ko.wikipedia.org/wiki/%EC%9C%84%EB%8F%84, 위키백과, "위도"

[3] https://60n95w.com/blogs/oh60n95w/17378537-latitude-and-longitude-basics-for-the-modern-explorer, Latitude and longitude basics for the modern explorer!

댓글()

낙태는 분명히 살인입니다

교훈생각|2019.06.29 09:47

낙태가 2021년부터 합법화된다는 소식을 들었습니다.

 

어쩌다 낙태가 합법화되는 이 상황까지 왔을까요. 여성인권을 주장하시는 분들께서는 태아의 인권은 유린해도 된다고 생각하시는 겁니까? 태아가 가장 사회적 약자 중의 약자 아닙니까? 낙태죄 폐지를 찬성하고 요구하시는 분들께서는 낙태죄를 폐지하자 외치기 전에 이 질문들에 대답해보시기 바랍니다. 

 

 

하나, 왜 아기를 가지셨나요? 

 

둘, 왜 아무런 계획도, 준비도 없이 가지셨나요? 왜 피임은 하지 않았나요?

 

셋, 왜 애초에 낙태를 생각하고 싶은 상황을 만드셨습니까? 그 상황을 만든 것에 대해 본인의 책임이 정말 없습니까? 

 

넷, 혼외 정사(불륜)로 인해 생긴 아기를 지우려고 하시는 것은 아닙니까?  

 

다섯, 왜 여기저기 문란하게 성관계를 하고 다니셨나요? 

 

여섯, 왜 원나잇을 요구하는 사람이 가득할 것을 알고도 클럽 등의 장소를 가셨나요? 

 

일곱, 여러분의 삶이 태아의 생명보다 귀합니까? 그 근거가 무엇입니까?

 

여덜, 부모가 되어서 본인의 자식(태아)을 죽이기로 결정하는 것은 옳은 일입니까?

 

아홉, 태아는 사람 아닙니까? (임신 7주차만 되도 심장소리를 들을 수 있고, 13주차만 되고 성별을 알 수 있는데.) 

 

열, 태아가 도대체 무슨 잘못을 했습니까? 왜 죽어야 합니까? 

 

열하나, 낙태 시술을 집행해야하는 산부인과 의사는 무슨 죄입니까? 이것이 청부살인 아닙니까?

 

열둘, 태어나봤자 불행한 인생을 산다고요? 어떻게 남(태아)의 삶을 그렇게 쉽게 단정지을 수 있습니까? 

 

이 질문들에 떳떳하게, 논리적으로 답하실 수 있다면, 낙태죄 폐지 외치십시오. 

 

 

아래는 1200여명의 낙태시술을 집도했던 의사의 증언 영상입니다. 이 영상을 보면 낙태가 분명히 살인이라는 것을 알 수 있으실 것입니다. 낙태죄 폐지 외치시는 분들 제발 정신차리십시오. 낙태는 살인입니다. 그것도 너무나 끔찍한 살인입니다. 

 

https://www.youtube.com/watch?v=l0z6YxRs1wI&t=19s

 

'교훈생각' 카테고리의 다른 글

내 탓 vs 남 탓  (0) 2019.07.15
노력 vs 평등  (0) 2019.07.11
포퓰리즘 정치의 무책임함, 잔혹함  (0) 2019.07.09
낙태는 분명히 살인입니다  (0) 2019.06.29

댓글()