하루 평균 방문자 1300명인 티스토리 블로그는 얼마나 벌까?(bskyvision 2019년 결산)

삶/티스토리 관련|2020. 1. 16. 00:29

안녕하세요. bskyvision.com의 심교훈입니다. 오늘은 2019년 한해동안 제 블로그에 어떤 일들이 있었는지 결산을 해보려고 합니다. 재밌게 봐주시기 바라며 시작하겠습니다.^^ 

 

1) 월 방문자 수

 

위 그래프에서 보시는 것처럼 전반적으로는 방문자수가 늘어났음을 알 수 있습니다. 10월을 기점으로 월방문자수가 4만명을 돌파했습니다. 하루 평균 1333.33명 이상이 방문했다는 뜻이죠. 하루 방문자수가 2000명이 넘는 경우도 종종 있었구요.

 

 

흥미로운 것은 1, 2월과 7, 8월에 방문자수가 일시적으로 급감한다는 점입니다. bskyvision.com이 다루는 포스팅이 대부분 학술적인 내용이기 때문에 대학생 및 대학원생들이 방학하는 기간에 방문자가 줄어드는 것으로 추정됩니다. 반면 시험기간이 가까워질수록 방문자수가 많아집니다. 재밌죠?ㅋㅋ 

 

2) 애드센스 수익

아마 다들 가장 궁금하신 부분일 것 같은데요, 수익은 미미합니다. 하하. 그래도 점차적으로 늘고 있습니다. 12월에는 역대 최고 수익인 45달러(약 5만원)를 벌었습니다. 역시 7월, 8월에는 일시적으로 수익이 감소했군요. 위에 있는 월 방문자수 그래프와 비교해볼 때 방문자의 증가와 수익은 꽤 상관성이 큰 것으로 보입니다. 스피어만 상관계수(SROCC 또는 SRCC)를 계산해보니 0.8671이 나오네요. 참고로 1에 가까울수록 상관성이 큰 것인데, 0.8671 정도면 상당히 상관성이 큰 것으로 볼 수 있습니다. 기본적으로 방문자가 많아야, 그만큼 광고를 보게 되는 방문자가 많게 되고, 그 중 관심있는 광고를 클릭하게 되시는 경우들도 많아질테니 어쩌면 당연한 결과겠죠.^^ 

 

 

3) 2019년의 인기글들

올해 어떤 글들이 가장 사랑을 많이 받았는지 확인하기 위해 매달 인기글 10위에 포함된 글들을 통계내봤습니다. 총 28개의 포스팅이 한 번이라도 10위 안에 들었습니다. 그 중 2개의 포스팅은 매달 10위 안에 포함되었습니다. 

 

공동 1위 - 12회

SIFT(Scale Invariant Feature Transform)의 원리 https://bskyvision.com/21

서포트 벡터 머신(SVM)의 사용자로서 꼭 알아야할 것들-매개변수 C와 gamma https://bskyvision.com/163  

 

공동 3위 - 8회

[선형대수학] 양의 정부호 행렬(positive definite matrix)이란? https://bskyvision.com/205  

[Learn opencv by examples] 6. Gaussian 필터, Bilateral 필터, Median 필터 https://bskyvision.com/24  

[색공간] HSV 색 공간을 활용해서 특정 색깔의 물체만 검출하기 (matlab 소스코드 포함) https://bskyvision.com/46  

 

공동 6위 - 7회

[CNN 알고리즘들] AlexNet의 구조 https://bskyvision.com/421  

[선형대수학*] 고유값(eigenvalue)과 고유벡터(eigenvector) https://bskyvision.com/59

선형 회귀(linear regression) 그리고 라쏘(Lasso) https://bskyvision.com/193  

 

공동 9위 - 5회

[CNN 알고리즘들] VGGNet의 구조 (VGG16) https://bskyvision.com/504   

모평균의 신뢰구간 추정하기 https://bskyvision.com/489 

물체 검출 알고리즘 성능 평가방법 AP(Average Precision)의 이해 https://bskyvision.com/465  

ILSVRC 대회 (이미지넷 이미지 인식 대회) 역대 우승 알고리즘들 https://bskyvision.com/425  

[선형대수학*] 직사각형 행렬의 대각화: 특이값 분해(Singular value decomposition, SVD) https://bskyvision.com/251  

통계분석방법의 종류와 이해: 빈도분석, 평균분석, 변량분석, 상관분석, 회귀분석 https://bskyvision.com/380

 

공동 15위 - 3회

모평균, 모분산과 표본평균, 표본분산 그리고 표본평균의 평균, 표본평균의 분산 https://bskyvision.com/454

[선형대수학*] 4가지 부분공간 column space, nullspace, row space, left nullspace의 이해 https://bskyvision.com/171  

Laplacian of Gaussian (LoG), 엣지 검출의 한 방법 (matlab 소스코드 포함) https://bskyvision.com/133  

 

공동 18위 - 2회

경사감소법(경사하강법)이란? https://bskyvision.com/411  

opencv에서 픽셀값 접근하기 https://bskyvision.com/65  

 

공동 20위 - 1회

푸리에 변환과 웨이블릿 변환 비교 https://bskyvision.com/404

이미지 분류(image classification)와 물체 검출(object detection)의 차이는? https://bskyvision.com/413  

[선형대수학] 대각화가 불가능한 행렬들을 위한 유사대각화 방법, Jordan form https://bskyvision.com/188  

[선형대수학] 의사역행렬(Pseudo inverse) https://bskyvision.com/256  

램(RAM)이란 무엇인가? https://bskyvision.com/73  

[Grammar in use intermediate] 목적을 나타내는데 사용되는 to, for, so that https://bskyvision.com/255

스파스 사전 학습(sparse dictionary learning)의 깊이 있으면서도 쉬운 이해 https://bskyvision.com/177

[선형대수학*] 선형연립방정식(Ax=b)의 해 구하기 https://bskyvision.com/271

 

10위 안에 포함된 적이 있는 글들은 대체로 힘들게 쓴 글들이네요. ㅎㅎ 역시 힘들게 정성을 다해 쓴 글은 다른 사람들도 알아봐주는 것 같습니다. 여전히 부족한 글들이지만요. ㅎㅎ

 

이렇게 정리하고 보니, 제 블로그에서 가장 인기있는 글들은 컴퓨터비전, 영상처리, 딥러닝, 머신러닝, 선형대수학에 관한 것들임이 명확하게 보이네요.^^ 2020년에 주로 작성하게 될 글의 주제도 이와 같습니다. 

 

총평

2019년은 애드센스를 통해 아주 조금이라도 돈을 벌 수 있구나를 느끼게 된 한해였습니다. 올 2020년은 어떻게 bskyvision.com이 성장해갈지 저도 기대가 됩니다. 개인적으로 월 수익이 100달러를 돌파하면 좋겠습니다. 그러나 광고 수익에 매달리지 않고, 올해도 제 연구분야와 관련된 지식을 차근차근 잘 전달해드리는 채널로의 역할을 다하겠습니다. 긴 글 끝까지 봐 주셔서 감사합니다.^^ 

댓글()
  1. BlogIcon 이코니 2020.01.16 11:26 신고 댓글주소  수정/삭제  댓글쓰기

    대단하십니다~~ 멋지세요!!

  2. BlogIcon 우키키키12 2020.01.16 12:41 신고 댓글주소  수정/삭제  댓글쓰기

    와 축하드립니다

  3. BlogIcon 프리넬로 2020.01.17 09:27 신고 댓글주소  수정/삭제  댓글쓰기

    정말 대단하신 것 같아요!! 부럽습니다 ㅜㅜ

  4. BlogIcon 똥's 2020.01.17 11:56 신고 댓글주소  수정/삭제  댓글쓰기

    와 대단하십니다!!

  5. BlogIcon 홀리데e 2020.01.17 14:16 신고 댓글주소  수정/삭제  댓글쓰기

    달 방문자가 5만명이 가까이 되어도 5만원밖에 못번다니...
    자랑하시는 분들은 도대체 얼마나 오시는건지...

  6. BlogIcon 제리19 2020.01.17 16:11 신고 댓글주소  수정/삭제  댓글쓰기

    우와 저도 얼른 수익화하고싶은 글이네요 ㅜㅜㅎㅎㅎ
    멋지세요 !! ㅎㅎ

  7. BlogIcon 생총 2020.01.17 22:07 신고 댓글주소  수정/삭제  댓글쓰기

    대단하십니다 !!!

  8. BlogIcon 라자라자 2020.01.17 23:20 신고 댓글주소  수정/삭제  댓글쓰기

    축하드려요^^

  9. BlogIcon Positive Disease 2020.01.17 23:56 신고 댓글주소  수정/삭제  댓글쓰기

    전문분야를 뚝심있게 나아가고 계시군요. 너무 멋지십니다. 구독완료~

  10. BlogIcon 베짱이 2020.01.18 02:47 신고 댓글주소  수정/삭제  댓글쓰기

    애드센스는 그냥 꾸준히만 하면 벌리는거 같아요.

[파이썬] 물체 검출

컴퓨터비전/python|2020. 1. 15. 02:36

지난 번엔 얼굴 검출, 성별 검출에 대한 글을 작성했었습니다. 오늘은 물체 검출에 대한 파이썬 코드를 소개해드리도록 하겠습니다. 

 

오늘 예제 코드를 구현하시기 위해서는 opencv-python과 cvlib 라이브러리가 필요합니다. 라이브러리 설치 방법은 운영체제별로 인터넷에 잘 나와있습니다. 추천 검색어는 install opencv-python ubuntu, install opencv-python window10 등입니다. 여러분의 검색능력을 보여주세요.^^

 

라이브러리를 설치하셨다면 이제 다음 코드를 복사붙여넣기 하시고 한번 실행해보신 다음에 코드의 흐름을 살펴보시면 되겠습니다. 항상 처음부터 모든 것을 다 이해하실 필요는 없습니다. 큰 흐름 파악에서 점차 디테일로 나아가시는 것이 좋습니다. 코드가 아주 간결하죠? 

 

# import libraries
import cv2
import cvlib as cv
from cvlib.object_detection import draw_bbox

image_path = 'test1.JPG' # 여기에는 테스트할 이미지의 경로 및 이름을 넣어주시면 됩니다. 
im = cv2.imread(image_path) # 이미지 읽기


# object detection (물체 검출)
bbox, label, conf = cv.detect_common_objects(im)

print(bbox, label, conf)

im = draw_bbox(im, bbox, label, conf) 


cv2.imwrite('result.jpg', im) # 이미지 쓰기

 

cvlib의 detect_common_objects 함수는 COCODATASET에서 훈련된 YOLOv3 모델을 제공합니다. 80 종류의 물체를 검출해낼 수 있습니다. YOLO 시리즈는 물체 검출 분야에 있어서는 아주 유명한 알고리즘입니다. 이 알고리즘에 대해서도 기회가 되는대로 포스팅하도록 하겠습니다. 

 

그러면 이제 몇 개의 이미지를 가지고 테스트 한 결과를 보여드리겠습니다. 

 

주 피사체인 사람과 자전거를 잘 검출했죠? 

 

이미지 내 수많은 사람들을 거의 다 검출해냈습니다.

 

휴대폰과 책을 잘 검출해냈습니다. 펜이 검출되지 않은 것은 아쉽긴 하지만요.ㅎㅎ 

 

다음 시간에는 실시간으로 웹캠을 통해 촬영되는 영상에서 물체를 검출하는 코드에 대해서 다루도록 하겠습니다. 질문 및 지적은 항상 환영입니다. 댓글로 남겨주세요!

댓글()

[파이썬] 얼굴 검출 후 성별 예측

컴퓨터비전/python|2020. 1. 15. 01:07

지난 번에 얼굴 검출에 대한 글을 작성한 것에 이어, 오늘은 얼굴을 검출한 후에 성별까지 예측하는 파이썬 코드를 소개해드리도록 하겠습니다. 

 

역시 opencv-python과 cvlib 라이브러리가 필요합니다. 각자 운영체제에 맞게 설치하시면 됩니다. 

 

cvlib에서 제공하는 성별 검출 함수인 detect_gender는 AlexNet과 유사한 CNN 모델이 Adience dataset에서 훈련된 모델을 제공합니다.

 

파이썬 코드는 다음과 같습니다. 코딩에 익숙하시지 않은 분들은 주석을 참고해서 흐름을 살펴보시길 권해드립니다. 

 

# import libraries
import cv2
import cvlib as cv
import numpy as np

image_path = 'test1.JPG'
im = cv2.imread(image_path) # 이미지 읽기


# detect faces (얼굴 검출)
faces, confidences = cv.detect_face(im)

for face in faces:
    (startX,startY) = face[0],face[1]
    (endX,endY) = face[2],face[3]
    # draw rectangle over face
    cv2.rectangle(im, (startX,startY), (endX,endY), (0,255,0), 2) # 검출된 얼굴 위에 박스 그리기
    face_crop = np.copy(im[startY:endY, startX:endX])
    
    # gender detection (성별 검출)
    (label, confidence) = cv.detect_gender(face_crop)
    
    print(confidence)
    print(label)
    
    idx = np.argmax(confidence)
    label = label[idx]

    label = "{}: {:.2f}%".format(label, confidence[idx] * 100)

    Y = startY - 10 if startY - 10 > 10 else startY + 10

    cv2.putText(im, label, (startX, Y),  cv2.FONT_HERSHEY_SIMPLEX,
                0.7, (0, 255, 0), 2) # 박스 위에 남자인지 여자인지 라벨과 확률 쓰기
    

cv2.imwrite('result.jpg', im) # 이미지 쓰기

 

저와 제 아내가 함께 찍은 사진으로 테스트해봤습니다. 과연 결과는 어떨까요?

 

 

우선 얼굴은 잘 검출해냈습니다만, 성별 예측이 정확하진 않네요.ㅋㅋ (여보 미안. 이 성별 검출기는 98.57%의 확신을 가지고 여보를 남자라고... 예측해버렸네...ㅋㅋ)

 

다른 이미지로 한 번 더 테스트해보겠습니다. 부디... 

 

 

Female!! 다행히도 제대로 검출해냈죠? ㅋㅋ 아무튼 cvlib 라이브러리는 이런 기능을 가진 detect_gender 함수를 제공해줍니다. 

 

언제든 질문과 지적은 환영합니다. 댓글로 남겨주세요.^^ 

 

댓글()

[파이썬] 얼굴 검출

컴퓨터비전/python|2020. 1. 15. 00:01

오늘은 파이썬을 이용해서 얼굴을 검출해보겠습니다. 

 

먼저 설치해야하는 라이브러리들이 있습니다. opencv-python과 cvlib입니다. opencv-python는 이미지를 읽고 쓰기 위해 필요하고, cvlib은 얼굴 검출을 구현하기 위해 필요합니다.

해당 라이브러리들을 각 운영체제에 맞게 설치하는 방법은 검색하시면 인터넷 상에 아주 잘 나와있으니 참고하시기 바랍니다.^^ (사실 개발환경셋팅이 젤 번거롭죠. ㅜㅜ) 

 

 

코드는 다음과 같습니다. 파이썬 코드에 익숙하지 않은 분들은 모든 줄을 이해하시려하기 보다는 주석을 보시면서 대략적인 흐름을 이해하시는 것이 좋습니다. 아래 코드에서 가장 중요한 부분은 cvlib에서 제공하는 detect_face 함수입니다. 얼굴 검출을 위해 미리 잘 훈련된 딥러닝 모델을 제공해줍니다. 

 

# import libraries
import cv2
import matplotlib.pyplot as plt
import cvlib as cv

image_path = 'kh.jpg'
im = cv2.imread(image_path) # 이미지 읽기
plt.imshow(im)
plt.show()

# detect faces (얼굴 검출)
faces, confidences = cv.detect_face(im)

# loop through detected faces and add bounding box (검출된 얼굴을 박스로 감싸기)
for face in faces:
    (startX,startY) = face[0],face[1]
    (endX,endY) = face[2],face[3]
    # draw rectangle over face
    cv2.rectangle(im, (startX,startY), (endX,endY), (0,255,0), 2)

# display output        
plt.imshow(im)
plt.show()
cv2.imwrite('result.jpg', im) # 이미지 쓰기

 

결과 이미지를 확인해보실까요? 약 10년전 접니다. ㅋㅋ 촌스럽네요 참. 

 

 

좀 더 많은 사람이 담겨 있는 이미지를 가지고 테스트해보겠습니다. 

 

 

얼굴들이 꽤 잘 검출되었죠?

 

다음 글에서 또 찾아뵙겠습니다.^^

 

 

 

<참고자료>

[1] https://ukayzm.github.io/python-face-recognition/, 나도 한번 만들어보자, "Python Face Recognition in Real Time"

[2] https://towardsdatascience.com/implement-face-detection-in-less-than-3-minutes-using-python-9f6b43bb3160, Sabina Pokhrel, "Implement Face Detection in Less Than 3 Minutes Using Python"

댓글()

이미지 리타겟팅(image retargeting)이란?

오늘은 이미지 리타겟팅(image retargeting) 기술이 무엇을 의미하는지에 대해 설명드리겠습니다.

 

디지털 이미지는 어떤 카메라로 촬영했는가에 따라, 또 이후에 어떤 처리 과정을 가졌는가에 따라 여러가지의 크기를 갖습니다. 4000 x 3000, 2448 x 1624, 800 x 600, 450 x 800 등등. 

 

또 이러한 디지털 이미지를 보여주는 스마트폰, 태블릿, PC 등의 디스플레이도 각기 다른 사이즈와 해상도를 갖고 있습니다. 다른 사이즈의 디지털 이미지를 다른 사이즈의 디스플레이에서 보여주려면 어떻게 해야할까요? 이때 리타겟팅 기술이 필요합니다. 

 

 

전통적으로는 다음과 같은 방식으로 이미지를 리타겟팅했습니다.

1) 이미지 자르기(cropping)

2) 확대 또는 축소(scaling)

3) 화면의 가로 또는 세로에 맞게 한 다음에 나머지 부분은 검은색으로 채워넣기(letterboxing)

 

 

이러한 전통적 방식은 다음과 같은 한계를 갖습니다. cropping 방식으로 이미지를 리타겟팅하다보면 중요한 내용을 놓치는 경우가 종종 생깁니다. 위 그림을 보면 사람이 너무 끝으로 가있고, 또 성도 많이 잘렸습니다. 두번째로 scaling 방식으로 리타겟된 이미지는 실제 비율과 달라서 부자연스러울 때가 많습니다. 성이 너무 날씬해졌죠? letterboxing 방식으로 리타겟하면 원래 이미지의 전체를 보여줄 수는 있지만, 디스플레이의 많은 부분을 제대로 활용하지 못합니다. 

 

따라서 이러한 한계점들을 극복하기 위해 내용 기반의 이미지 리타겟팅 기술들이 나오기 시작합니다. 이를 content-based image retargeting 또는 content-aware image retargeting이라고 부릅니다. 대표적 content-based image retargeting 알고리즘인 Seam carving이 리타겟팅한 이미지를 살펴보겠습니다. 

 

출처: [1]

 

Seam carving에 의해 리타겟된 이미지는 해당 이미지에서 중요한 피사체들인 사람과 성을 모두 잘 포함하고 있다는 것을 확인할 수 있습니다. 이와 같은 기술을 바로 content-based image retargeting이라고 부릅니다.  

 

 

<참고자료>

[1] https://en.wikipedia.org/wiki/Seam_carving, 위키피디아, "seam carving"

 

댓글()