BOW( Bag of Words)
์ฐ๋ฆฌ ๋ง๋กํ๋ฉด ๋จ์ด์ฃผ๋จธ๋. ์๋ ๋ฌธ์ ๋ถ๋ฅ์ ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ.
๋ฌธ์๋ฅผ ๋ถ๋ฅํ๋ ค๊ณ ํ ๋ ์ปดํจํฐ๋ก ๋ฌธ์์ ๋ฌธ๋งฅ์ ์ดํดํ๊ณ ๋ถ๋ฅํ๋ ๊ฒ์ ๋งค์ฐ ์ด๋ ค์ฐ๋ฏ๋ก ๋ฌธ๋งฅ์ด ์๋ ๋ฌธ์์ ๋ฑ์ฅํ๋ ๋ฑ๋ง์ ๋น๋๋ฅผ ์ธ์ ์์ฃผ ๋ํ๋๋ ๋ฑ๋ง๋ก ๋ฌธ์ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๊ตฌ๋ถํ๋ ์๋ฆฌ.
์์ ๋ถ์ผ์์๋ ๋ฑ๋ง ๋์ ํน์ง ๋์คํฌ๋ฆฝํฐ๋ฅผ ์ฌ์ฉ.
BOW ์๊ณ ๋ฆฌ์ฆ๊ณผ ๊ฐ์ฒด ์ธ์
๋ฑ๋ง ๋์ SIFT, SURF์ ๊ฐ์ ํน์ง ์คํฌ๋ฆฝํฐ๋ฅผ ์ฌ์ฉ
์: ์์์ ์๋ ๋นํ๊ธฐ์ ๋ชจํฐ์ฌ์ดํด์ ๋ถ๋ฅํ ๋,
-
SIFT์ ๊ฐ์ ํน์ง ์คํฌ๋ฆฝํฐ๋ฅผ ๊ณ์ฐํด์ ํ๋์ ์ ์ฅ ๊ณต๊ฐ์ ์ฐจ๊ณก์ฐจ๊ณก ๋ชจ์๋ก๋๋ค.
-
๋ง๊ตฌ์ก์ด๋ก ๋ค์์ฌ ์๋ ์๋ง์ ๋นํ๊ธฐ์ ๋ชจํฐ์ฌ์ดํด์ ํน์ง์ ๋์คํฌ๋ฆฝํฐ๋ฅผ k-means ํด๋ฌ์คํฐ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๊ตฐ์งํ.
-
๊ฐ๊ฐ์ ๋นํ๊ธฐ์ ๋จธํฐ ์ฌ์ดํด ์ฌ์ง์ ๋ํด์ ์๊ฐ ์ฌ์ ์ ๋ง๋ค ๋์ ๊ฐ์ ํน์ง ๋์คํฌ๋ฆฝํฐ๋ฅผ ๊ณ์ฐํด์ ์๊ฐ ์ฌ์ ์ ๋ฑ๋ก๋ ํน์ง ๋์คํฌ๋ฆฝํฐ์ ๋งค์นญ๋๋ ๊ฒ์ด ์ผ๋ง๋ ๋๋์ง ํ์คํ ๋จ์ ์์ฑํ๊ณ ๋ ์ด๋ธ์ ๋ง๋ค์ด ์ง์ง์ด ์ค๋น.
์ถ์ฒ: https://medium.com/@aybukeyalcinerr/bag-of-visual-words-bovw-db9500331b2f
-
๊ฐ ์ด๋ฏธ์ง์ ํ์คํ ๊ทธ๋จ๊ณผ ๋ ์ด๋ธ๋ก SVM๊ณผ ๊ฐ์ ๋ถ๋ฅ ์๊ณ ๋ฆฌ์ฆ์๊ฒ ํ์ต ๋ฐ์ดํฐ์ ์ ๋ ฅ์ผ๋ก ์ฃผ๊ณ ํ๋ จ์ํต๋๋ค.
BOW API
-
trainer = cv2.BOWTrainer : BOW ์๊ณ ๋ฆฌ์ฆ ์ถ์ ํด๋์ค
-
trainer.add(descriptors) : ํน์ง ๋์คํฌ๋ฆฝํฐ ์ถ๊ฐ
descriptors : ํน์ง ๋์คํฌ๋ฆฝํฐ (SIFT, SURF, ORB ๋ฑ)
-
dictionary = trainer.cluster(): ๊ตฐ์งํํด์ ์ฌ์ ์์ฑ
dictionary : ์๊ฐ ์ฌ์
-
trainer = cv2.BOWMeansTrainer(clusterCount) : k-means ํด๋ฌ์คํฐ๋ก ๊ตฌํ๋ ํด๋์ค
clusterCount: ๊ตฐ์งํํ ํด๋ฌ์คํฐ ๊ฐ์
-
extractor = cv2.BOWImgDescriptorExtractor(dextractor, dmatcher) : ๋งค์นญ์ ์ผ๋ก ํ์คํ ๊ทธ๋จ์ ๊ณ์ฐํ๋ ํด๋์ค ์์ฑ์
dextractor : DesctiptorExtractor๋ฅผ ์์ํ ํน์ง ๋งค์นญ๊ธฐ
dmatcher : DesctiptorMatcher๋ฅผ ์์ํ ํน์ง ๋งค์นญ
-
extractor.setVocabulary(dictionary): ์ฌ์ ๊ฐ์ฒด ์ค์
dictionary : BOWTrainer๋ก ์์ฑํ ์ฌ์ ๊ฐ์ฒด
-
histogram = extractor.compute(img, keypoint) : ์ด๋ฏธ์ง์ ์ฌ์ ์ ๋งค์นญ์ ์ผ๋ก ํ์คํ ๊ทธ๋จ ๊ณ์ฐ
img : ๊ณ์ฐํ ์ด๋ฏธ์ง
keypoint : ์ด๋ฏธ์ง์ ์ถ์ถํ ํค ํฌ์ธํธ
histogram : ์ด๋ฏธ์ง์ ์ฌ์ ์ ๋งค์นญ์ ํ์คํ ๊ทธ๋จ