b스카이비전 및 필자 소개

공지|2020. 6. 18. 17:48

안녕하세요. 수많은 소음 속에서 진짜 신호를 찾아가는 b스카이비전입니다. 

 

우선 b스카이비전의 필자인 제 소개를 간단히 하겠습니다.

 

필자: 심교훈 (1988. 2. 11)

 

아내와 나.

 

저는 한 아내의 남편이자, 두 딸의 아빠입니다. 또한 한 가정의 장남이자, 하나님의 자녀입니다. 

 

동국대학교에서 전자공학을 전공했고, 중국 톈진대학교(Tianjin University)에서 신호처리를 전공으로 석사 학위를 받은 후에, 현재는 계속해서 박사 과정을 밟고 있습니다. 컴퓨터비전의 한 분야인 이미지품질평가(image quality assessment)를 주로 연구하고 있습니다.  

 

제가 현재까지 참여한 SCI 논문들은 다음과 같습니다. 대단한 수준의 논문들은 아니지만, 20대 후반과 30대 초반의 제 삶을 갈아넣은 결과물들이죠. 그렇다고 하기엔 많이 초라합니다. 

 

[1] J. Yang, K. Sim, B. Jiang and W. Lu, "Blind image quality assessment utilising local mean eigenvalues," in Electronics Letters, vol. 54, no. 12, pp. 754-756, 14 6 2018

[2] Jiachen Yang, Kyohoon Sim, Bin Jiang, and Wen Lu, "No-reference stereoscopic image quality assessment based on hue summation–difference mapping image and binocular joint mutual filtering," Appl. Opt.57, 3915-3926 (2018)

[3] Jiachen Yang, Zhihui Huang, Kyohoon Sim, Wen Lu, Kai Liu, Hehan Liu, "No-reference image quality assessment focusing on human facial region", Signal Processing: Image Communication 78 (2019) 51-61 

[4] J. Yang, K. Sim, X. Gao, W. Lu, Q. Meng and B. Li, "A Blind Stereoscopic Image Quality Evaluator With Segmented Stacked Autoencoders Considering the Whole Visual Perception Route," in IEEE Transactions on Image Processing, vol. 28, no. 3, pp. 1314-1328, March 2019

[5] J. Yang, K. Sim, W. Lu and B. Jiang, "Predicting Stereoscopic Image Quality via Stacked Auto-encoders based on Stereopsis Formation," inIEEE Transactions on Multimedia, vol. 21, no. 7. pp. 1750-1761, July 2019

[6] J. Yang, V. Nguyen, K. Sim, Y. Zhao, W. Lu, "3-D Visual Discomfort Assessment Considering Optical and Neural Attention Models", in IEEE Transactions on Broadcasting, 2019

 

 

b스카이비전은 제가 연구하고 공부하면서, 그리고 삶을 살아가면서 누군가와 공유하고 싶은 내용들을 정리해서 전시하는 공간입니다. 신호처리 및 컴퓨터비전을 연구하고 있기 때문에, 그와 연관된 글들이 주로 b스카이비전에 담기고 있습니다. 

 

저는 블로그도 나름대로의 철학을 가지고 운영해야 한다고 생각합니다. 웹기술이 발전하면서 누구나 인터넷을 통해 수많은 사람들에게 정보를 전달할 수 있는 세상이 도래되었습니다. 예전에는 먼 나라의 도서관에 가야지만 접할 수 있었던 고급 정보들도 요즘은 클릭 몇 번이면 접근할 수 있게 되었죠. 인터넷으로 인해 우리가 접할 수 있는 정보의 양은 기하급수적으로 늘어났지만, 동시에 가짜 신호, 즉 소음(noise)도 많아졌습니다. 수많은 소음 속에서 진짜 신호를 찾아가는 것이 매일 저희가 해야하는 중요한 일이 되어버렸습니다. 

 

저는 b스카이비전을 통해 진짜 신호, 노이즈가 최대한 제거된 디노이징(de-nosing)된 신호를 여러분께 전달해드리고 싶습니다. 저도 한낱 연약한 인간인지라 무엇이 신호인지, 무엇이 소음인지 제대로 분간을 못할 때도 많습니다. 그래서 매일 조사하고 공부하고 생각합니다.

 

'이것이 진짜 신호일까? 이것은 신뢰할 만한가? 혹시 잘못된 정보는 아닐까? 내가 잘못 알고 있는 것은 아닐까? 내가 제대로 보지 못하고 있는 세상은 없나?'

 

언제까지 b스카이비전을 운영할 수 있을지는 잘 모르겠습니다. 하지만, 제게 허락된 시간 동안에는 신호에 가까운 글을 쓰도록 애쓰겠습니다. 소개 글이 조금 진지해졌네요.^^; 

  1. BlogIcon 박승식 2020.06.18 22:12 댓글주소  수정/삭제  댓글쓰기

    오늘도 자료 참고 많이 했네요. 감사합니다!

  2. 김용민 2020.07.30 13:40 댓글주소  수정/삭제  댓글쓰기

    학생으로써 정말 좋은글들이 많은것 같습니다. 앞으로도 잘 부탁드립니다!

  3. 송이랑 2020.08.03 17:34 댓글주소  수정/삭제  댓글쓰기

    안녕하세요. 도저히 제 힘으로는 풀리지가 안아서 도움을 구하고자 글 남깁니다. ㅠ.ㅠ

    OpenCV : 4.3.0

    윈도우10

    내 컴퓨터에 다운받은 jpg 파일들을 opencv로 열어서, shape를 보고싶은데

    계속 에러만 나타나서...

    에러 : AttributeError: 'NoneType' object has no attribute 'shape'

    1. 에러 안나고, 이미지(jpg) 파일들만 불러와서 --> shape를 보려면 어떻게 해야하나여????
    ' ' 안의 경로 틀렸다면, 맞는 경로 좀 알려주세요....

    2. CNN으로 모델링을 해서 돌릴 예정인데.... 불러와지질 않습니다. ㅠ.ㅠ


    import cv2
    import numpy as np

    img = cv2.imread('T_project/Middle_Resolution/19062421/S001/L4/E01.jpg',cv2.IMREAD_COLOR)


    print("img.shape : ", img.shape)

    cv2.imshow('image', img)


    지식인에도 글과 함께 사진을 올렸는데... 아무도 답변을 안해줘서...ㅠ.ㅠ

    https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=104&docId=364276315

    이번주 수요일까지 최소 1번은 CNN을 돌려야하는데...ㅠ.ㅠ
    (제가 비전공자라... 진짜 많이 힘드내요. 현재 배운지 2달하고 3일정도 됐습니다...)

    • BlogIcon b스카이비전 2020.08.03 18:09 신고 댓글주소  수정/삭제

      댓글 남겨주셔서 감사합니다^^ 경로가 잘 못된거 같은데, T_project가 .py 파일이 존재하는 디렉토리의 하위 디렉토리인가요?? 그렇지 않다면 full 경로를 다 써주셔야 할 것 같습니다.

  4. 송이랑 2020.08.04 08:50 댓글주소  수정/삭제  댓글쓰기

    Full 경로는 : D:\Study-bit\T_project\Middle_Resolution\19062421\S001\L4

    입니다.

    L4, L5, L6... 이런식으로 나가고 / L4 안에 jpg 이미지 파일들이 들어있습니다.ㅠ.ㅠ

    전체 경로를 다 써도 같은 에러가 생깁니다. ㅠ.ㅠ

  5. BlogIcon b스카이비전 2020.08.04 09:31 신고 댓글주소  수정/삭제  댓글쓰기

    \를 모두 /로 바꿔주셔야 합니다. ㅎㅎ

  6. BlogIcon b스카이비전 2020.08.04 09:59 신고 댓글주소  수정/삭제  댓글쓰기

    급하시면 일단 이미지가 있는 폴더를 .py 폴더 안에 넣고 L4/E01.jpg 로 테스트해보시는건 어떨까요??

  7. 송이랑 2020.08.04 17:12 댓글주소  수정/삭제  댓글쓰기

    ㅠ.ㅠ


    import cv2
    import numpy as np
    import sys
    import matplotlib.pyplot as plt
    import matplotlib.image as image



    # img = cv2.imread('T_project/Middle_Resolution/19062421/S001/L4/E01.jpg', cv2.IMREAD_COLOR)
    img = cv2.imread('D:/Study-bit/T_project/Middle_Resolution/19062421/S001/L4/E01/jpg', cv2.IMREAD_COLOR)
    # img = cv2.imread('./T_project/Middle_Resolution/file.jpg', cv2.IMREAD_COLOR)
    # img = cv2.imread('D:/Study-bit/T_project/Middle_Resolution', cv2.IMREAD_COLOR)
    # img = cv2.imread('T_project/Middle_Resolution', cv2.IMREAD_COLOR)

    # img.shape
    print(img.shape)

    cv2.imshow('img.shape', img.shape)

    cv2.imshow('image', img)

    ############################

    에러 :

    Traceback (most recent call last):
    File "d:\Study-bit\T_project\연습.py", line 40,
    in <module>
    print(img.shape)
    AttributeError: 'NoneType' object has no attribute 'shape'

    어떻게 해야 불러올수 있는지 모르겠습니다. ㅠㅠ

    • BlogIcon b스카이비전 2020.08.04 17:29 신고 댓글주소  수정/삭제

      img = cv2.imread('D:/Study-bit/T_project/Middle_Resolution/19062421/S001/L4/E01/jpg', cv2.IMREAD_COLOR) 에서 E01/jpg
      => E01.jpg와 같은 문제는 아니겠지요??

      쉽게 해결되어야할 문제인데 안되서.. 답답하시겠습니다ㅜ 혹시 가상환경을 만들어서 하고 계시다면, 다시 환경을 세팅한 후 해보시는 건 어떨까요?

  8. 송이랑 2020.08.05 08:31 댓글주소  수정/삭제  댓글쓰기

    ㅠ.ㅠ jpg 전체 이미지를 가져오고싶었는데....
    그건 아무리 해도... 왜 안되는건지 ㅠ.ㅠ
    하나는 가져와졌는데... 하나씩 가져온거라도 합치려면 어떻게 해야할까요 ㅠㅠ???
    한번에 다 가져오면 가장 최고인데 ㅠ.ㅠ

    하나만 가져오니.... CNN 돌리기엔.... ㅠ.ㅠ

    진짜 죽을거같습니다... ㅠ.ㅠ
    진짜 1장만 겨우 가져와서...

    • BlogIcon b스카이비전 2020.08.05 09:38 신고 댓글주소  수정/삭제

      아 폴더내 이미지를 모두 가져와서 CNN을 훈련시키고 싶으셨던 거군요. 그러면 코드를 수정해야합니다. 제가 예전에 작성한 bskyvision.com/749 참고하시면 충분히 해결하실 수 있을 것입니다^^ 한번 읽어보시고 알려주세요 ㅎㅎ

  9. 송이랑 2020.08.06 09:24 댓글주소  수정/삭제  댓글쓰기

    ㅠ.ㅠ

    예를 들어서 1파일에 20개의 jpg 파일이 들어있을때
    총 10개의 파일... 10x20 = 200개의 jpg 파일이라고 했을때
    이 이미지들을 한번에 불러오려면 어떻게 해야하나요 ㅠ.ㅠ???
    불라와져야 전처리에 도전을 해볼텐데...ㅠ.ㅠ

    저는 이미지 낱개로 1장씩만 불러와집니다. ㅠㅠㅠㅠ

  10. 송이랑 2020.08.06 14:14 댓글주소  수정/삭제  댓글쓰기

    shutil.copyfile(src, dst) 가 안되고 [] [] 로만 나와서, 그냥 제가 복붙을 해서 만들어진 폴더에 이미지들을 넣었습니다.

    -----------------------------------
    전체 코드
    --------------------

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from shutil import copyfile
    import os
    import shutil

    from tensorflow.keras.models import Sequential
    from tensorflow.keras.layers import Dense, Conv2D, Conv2DTranspose, UpSampling2D


    # base_dir = 'D:/Study-bit/T_project'
    base_dir = 'D:/Study-bit/T_project/img'

    img_dir = 'D:/Study-bit/T_project/img'

    print(len(os.listdir(img_dir))) # 들어있는 이미지 총 60개

    print(os.listdir(img_dir)[:10])
    # ['C1.jpg', 'C10.jpg', 'C11.jpg', 'C12.jpg', 'C13.jpg',
    # 'C14.jpg', 'C15.jpg', 'C16.jpg', 'C17.jpg', 'C18.jpg'] 10개만 랜덤으로 가져오기

    # 30개의 이미지만 샘플로 선별해서 다른 폴더로 복사해보기
    imgs30_dir = os.path.join(base_dir, 'imgs30_dir')
    # imgs30_dir = os.path.join(base_dir, 'C30')

    # os.mkdir(imgs30_dir)


    fnames = ['img.{}.jpg'.format(i) for i in range(30)]

    for fname in fnames:

    src = os.path.join(img_dir, fname)

    dst = os.path.join(imgs30_dir, fname)

    # shutil.copyfile(src, dst)

    print(os.listdir(imgs30_dir))

    #######################################################

    # 이미지 파일을 로딩, float array로 변환 후 전처리

    # from keras.preprocessing import image
    from tensorflow.keras.preprocessing import image

    img_name = 'img.10.jpg'

    # scriptpath = os.path.dirname(img_name)

    # img_path = os.path.join(scriptpath, img_name)
    img_path = os.path.join(imgs30_dir, img_name)

    img = image.load_img(img_path, target_size=(250, 250))

    img_tensor = image.img_to_array(img)

    img_tensor = np.expand_dims(img_tensor, axis=0)

    print(img_tensor.shape)

    img_tensor /= 255.


    print(img_tensor[0])

    # 한개의 이미지 파일의 array 를 시각화하기

    plt.reParams['figure.figsize'] = (10, 10)

    plt.show(img_tensor[0])

    plt.show()

    # 30개의 이미지 데이터를 6*5 격자에 나누어서 시각화하기


    def preprocess_img(img_path, target_size=100):

    from keras.preprocessing import image



    img = image.load_img(img_path, target_size=(target_size, target_size))

    img_tensor = image.img_to_array(img)


    img_tensor = np.expand_dims(img_tensor, axis=0)


    img_tensor /= 255.


    return img_tensor


    n_pic = 30

    n_col = 5

    n_row = int(np.ceil(n_pic / n_col))

    target_size = 100

    margin = 3

    total = np.zeros((n_row * target_size + (n_row - 1) * margin, n_col * target_size + (n_col - 1) * margin, 3))


    img_seq = 0


    for i in range(n_row):

    for j in range(n_col):


    fname = 'cat.{}.jpg'.format(img_seq)

    img_path = os.path.join(cats30_dir, fname)


    img_tensor = preprocess_img(img_path, target_size)


    horizontal_start = i * target_size + i * margin

    horizontal_end = horizontal_start + target_size

    vertical_start = j * target_size + j * margin

    vertical_end = vertical_start + target_size


    total[horizontal_start : horizontal_end, vertical_start : vertical_end, :] = img_tensor[0]


    img_seq += 1


    plt.figure(figsize=(200, 200))

    plt.imshow(total)

    plt.show()

    인데... ###################### 아래부분부터 안되는데...
    어디를 어떻게 고쳐야 할지를 모르겠습니다... ㅠ.ㅠ

    CNN을 1번이라도 돌려봐야하는데...ㅠ.ㅠ







    • BlogIcon b스카이비전 2020.08.06 14:26 신고 댓글주소  수정/삭제

      송이랑님 bskyvision.com/749 글 읽어보셨나요??ㅎㅎ 거기에서 두번째 코드가 세개의 폴더에 있는 이미지들을 모두 가지고 와서 CNN 모델을 훈련하기 위해 준비하는 과정을 담고 있습니다^^ 그 코드 잘 응용하시면 될 것 같은데..

  11. 정하연 2020.08.15 03:37 댓글주소  수정/삭제  댓글쓰기

    👍👍👍진짜 신호 찾기 멋있어요!

  12. 장진행 2020.09.29 08:22 댓글주소  수정/삭제  댓글쓰기

    선형 대수학에 대한 정의는 같지만,
    해석과 설명이 제 각각인데,
    핵심을 놓치지 않고 설명을 정확히 잘 해주신 것 같습니다.
    계속 좋은 내용 기대합니다.

  13. 심탕자 2020.10.14 09:23 댓글주소  수정/삭제  댓글쓰기

    심탕자님...많은 성장을 이루셨군요. 학창시절 숱한분들의 마음을 흔들던 당신의 모습이 아직도 눈에 선한데 이렇게 훌륭하게 자라주셔서 참 감개가 무량합니다. 이것이 바로 하나님의 은혜일까요? 참으로 감사합니다. 앞으로도 한 여자의 자상한 남편, 두 딸의 훌륭한 아버지로 견실하게 살아가시길 축복하겠습니다.