역수와 역행렬

수학 이야기 2017.08.12 15:48

3의 역수는? 1/3


그럼 '역수'란? ...


역수를 구하는 방법은 알아도 역수가 무엇인지는 모르는 경우가 많다.


마찬가지로 역행렬이 무엇인지 물어보면,


학생 1) 1/(ad-bc) * [d -b; -c a]


학생 2) 곱해서 항등행렬(I)이 나오는 행렬


물론 두번째 대답이 정확한 대답이다. 만일, 이와 같이 바로 답할 수 있다면 이 학생의 수학실력이나 앞으로의 공부에 대해서는 걱정할 필요가 없을 듯 하다.


그런데, 학생 2와 같이 대답한 경우에도 사실은 한번 더 확인할 필요가 있다. 그걸 그냥 지식처럼 알고 있는 것인지, 아니면 정말 이해한 것인지


만일 대학생에게 두 행렬의 곱 AB의 역행렬이 무엇이냐고 물어보면 아마도 대부분 B-1A-1라고 자신있게 대답할 것이다 (물론, A-1B-1인가? 하는 학생도 분명 있다). 하지만, B-1A-1가 역행렬인 이유를 증명해봐라 하면 대부분 당황해 한다.


'증명'이라는 말만 들어도 사고기능이 정지하는 경우도 있고 역행렬의 의미를 제대로 이해하고 못한 경우도 있을 것이다. 하지만 그 증명은 정말 간단하다.


증명: AB에 B-1A-1를 곱하면 AB * B-1A-1 = I이다. 따라서, AB의 역행렬은 B-1A-1이다. 끝.


역행렬의 정의를 정확히 이해하고 있다면 당연히 풀수 있는 문제이다. 또한 역행렬의 정의를 안다면 AB의 역행렬이 A-1B-1인지 B-1A-1인지 혼동할 이유도 암기할 이유도 없다. 그리고, 정의로부터 kA의 역행렬은 1/kA-1, ABC의 역행렬은 C-1B-1A-1, PAP-1의 역행렬은 PA-1P-1, 대각행렬 diag{c1, c2, ..., cn}의 역행렬은 diag{1/c1, ..., 1/cn}임도 손쉽게 알 수 있다.


☞ 어떤 수의 역수는 자신과 곱해서 (곱셈에 대한 항등원인) 1이 나오는 수이다


by 다크 프로그래머


저작자 표시 비영리 변경 금지
신고

'수학 이야기' 카테고리의 다른 글

역수와 역행렬  (4) 2017.08.12
Gram–Schmidt(그람-슈미트) 직교화  (0) 2017.05.17
곱셈과 덧셈  (2) 2017.04.26
초등학교 수학의 덧셈식과 뺄셈식  (5) 2016.07.20
  • 질문 2017.08.15 09:35 신고 ADDR 수정/삭제 답글

    안녕하세요. 오랜만에 수학 보면서 블로그 방문 자주 하고 있습니다. 먼저 감사드립니다.
    mahalanobis distance를 보다 역행렬 올려주셔서 두개 묶어서 질문 드리려고 합니다.
    1차원의 MD는 이해가 되었는데, 2차원의 MD에서의 식이 잘 이해가 되지 않아 혹시 아실까 해서 여쭤봅니다. transpose와 공분산의 역행렬은 왜 들어가는지..모르겠습니다..ㅠㅠ

    • BlogIcon 다크pgmr 2017.08.15 21:26 신고 수정/삭제

      안녕하세요. 질문하신 내용에 대한 정확한 설명은 다소 긴 수학적 설명과 배경설명을 필요로 합니다. 간단히 댓글로 설명하기에는 어려움이 있습니다. 일단 직관적으로만 설명해보면 열벡터 x가 있을 때 x^T*x는 x의 길이(norm)의 제곱이 됩니다. 따라서, 평균이 벡터 m이라고 하면 (x-m)^T*(x-m)은 데이터 x와 평균까지의 거리^2(Euclidean distance)입니다. 그런데, MD는 데이터와 평균까지의 거리를 그 방향으로의 표준편차로 나눈 값입니다. 공분산행렬의 역행렬을 곱하는 것은 나누기의 의미를 갖습니다. 즉, 공분산 행렬 Σ에 대해, (x-m)^T * Σ^-1 * (x-m)은 x와 평균관의 거리의 제곱을 분산으로 나누는 의미가 됩니다. 따라서 여기에 sqrt(제곱근)를 씌우면 MD가 됩니다.

  • 질문2 2017.08.15 15:47 신고 ADDR 수정/삭제 답글

    안녕하세요, 저도 요즘 아주 블로그 잘 보고 있습니다. 데이터 분석을 하던중 MLE(최대가능도)에 대한 이론이 많이 나오더라구요..... MLE,,,이해할 듯 말듯 합니다... 이론적으로 이해를 하려니 와닿지가 않고,, 예를 들어 어떻게 이해해야할까요?

    • BlogIcon 다크pgmr 2017.08.15 21:27 신고 수정/삭제

      MLE에 대해서는 http://darkpgmr.tistory.com/119 글을 보시면 좋을 것 같습니다.

DarkLabel - 이미지/비디오 객체 레이블링 툴 (Image Labeling and Annotation Tool)

개발한 것들 2017.07.18 11:21

동영상(avi, mpg) 또는 이미지에서 물체의 사각형 경계(bounding box)를 따서 labeling 및 다양한 포맷으로 저장할 수 있는 유틸러티 프로그램입니다.


이 프로그램은 물체인식(object detection)이나 영상추적(visual object tracking) 목적의 영상 DB 라벨링 및 ground truth 편집에 활용될 수 있습니다. 최대한 사용 편의성에 초점을 맞추어 프로그램을 개발했으며 영상 추적기를 내장하여 일일히 박스를 그리지 않고도 편리하게 박스편집 및 라벨링 작업을 수행할 수 있습니다.


비상업적 목적이라면 누구나 사용할 수 있으며 사용상 문제점, 건의사항 등이 있으면 댓글로 알려주시기 바랍니다.




프로그램 다운로드 (Download)


DarkLabel1.0_part1.zip

DarkLabel1.0_part2.zip

  • 무설치 / windows에서 동작 (xp 이상)
  • part1과 part2를 모두 다운로드 (첨부파일 용량제한으로 나누어 올림)
  • 첨부된 opencv_ffmpeg320.dll을 동일 실행 폴더에 놓고 프로그램 실행


주요 기능 및 특징

  • 다양한 포맷의 비디오(avi, mpg, ...) 및 이미지(jpg, bmp, png, ...) 지원
  • 복수 개의 박스(box) 설정 및 label 설정 지원
  • 물체인식 및 영상추적 등 다양한 응용의 데이터 포맷 지원
  • 고성능 영상추적기를 내장하여 자동 labeling 지원
  • 사용자 중심의 직관적인 UI 및 다양한 편의기능(단축키 등)


버전 히스토리


* DarkLabel 1.0 (2017.07.18)

- labeling 기능 추가, tracker의 성능 및 UI 반응성 개선, 최신 비디오코덱 지원

- 프로그램 이름을 GT_Extractor에서 DarkLabel로 변경


* GT_Extractor 2.3 (2016.09.29)

- 버그 수정 (이미지 리스트에서 GT 파일 저장/불러올 때 오류 현상)


* GT_Extractor 2.2 (2016.08.26)

- 지원 비디오 포맷 추가 (avi, mpg, mp4, wmv, ...)


* GT_Extractor 2.1 (2013.08.12)

- 비디오 뿐만 아니라 이미지 목록에 대해서도 편집 가능


* GT_Extractor 2.0 (2013.01.15)

- 복수개의 대상 설정 및 추적 기능


* GT_Extractor 1.0 (2013.01.08)

- 이미지 당 하나의 대상만 설정할 수 있음



프로그램 사용법




비디오/영상 불러오기 및 프레임간 이동

  • Open Video File: 비디오 파일을 불러온다 (avi, mpg, mp4, wmv, mov, ...)
  • Open Image Directory: 폴더 안의 모든 이미지를 불러온다 (jpg, bmp, png, ...)
  • 영상 프레임간 이동: 키보드 →, ←, PgUp, PgDn, Home, End, 슬라이더 컨트롤


박스(box) 생성 및 편집, Labeling

  • 마우스 드레그(drag)로 새로운 박스 생성
  • 마우스 우클릭: 가장 최근에 생성한 박스 제거(삭제)
  • Shift/Ctrl + 마우스 드레그: 선택된 박스 수정 (이동, 크기 수정, 경계 수정)
  • Shift/Ctrl + 마우스 더블클릭: 선택된 박스의 label 수정
  • Shift/Ctrl + 마우스 우클릭(특정 박스): 선택된 박스 삭제
  • Shift/Ctrl + 마우스 우클릭(빈곳 클릭): 현재 프레임의 모든 박스 일괄 삭제
  • 박스를 생성하면 label 입력창이 자동으로 팝업(popup)
  • label 입력창에서 미리 정의된 label을 선택하거나 새로운 label을 직접 입력
  • 프로그램 실행 폴더에 있는 'labels.txt' 파일을 편집하여 label 목록을 미리 등록
  • label 편집창에 팝업된 상태에서 숫자키(1~9)를 누르면 해당 번째에 해당되는 미리 등록된 label이 자동으로 입력됨
  • label 입력창 비활성화: 'Popup label' 체크 해제 (label이 없는 빈 박스를 생성)


☞ 'Shift/Ctrl'은 Shift 또는 Ctrl의 의미임 (/는 선택사항, 옵션의 의미)



영상추적 기능을 이용한 박스 설정 및 labeling 자동화

  • Enter 키를 누르거나 'Next & Predict' 버튼으로 추적 기능 사용
  • 내장된 영상 추적기를 이용하여 다음 프레임에서의 박스 위치 및 label을 자동으로 설정 (최대 100개까지 복수개의 대상 동시 추적)
  • Enter 키를 계속 누르면서 자동으로 작업하다가 예측된 위치가 틀릴 경우에만 수정하는 방식으로 작업할 수 있음
  • 사용할 tracker는 'Tracker1' 또는 'Tracker2' 중에서 선택 가능 (일반적으로 Tracker1이 성능이 좋지만 자동차 등 형태가 고정된 물체는 Tracker2가 성능이 좋을 수 있음)


☞ 주의: Enter 키를 이용해서 프레임을 넘기면 현재 프레임에서의 박스 및 label을 추적하여 다음 프레임의 박스 및 label을 자동으로 설정하므로 해당 프레임에 원래 있던 데이터는 없어집니다. 프레임간의 단순 이동은 키보드 화살표 키를 이용해야 합니다.



작업 데이터 저장 및 불러오기

  • Load GT: ground truth 파일을 선택한 포맷으로 불러온다.
  • Save GT: 선택한 데이터 포맷으로 현재까지 작업한 결과를 저장한다.
  • 데이터를 불러올 때에는 실제 데이터 파일과 일치하는 포맷을 선택해야 하나 데이터를 저장할 때에는 자신이 원하는 임의의 포맷으로 저장할 수 있음
  • 이미지 목록에서 작업할 경우 프레임 번호(frame#) 포맷을 사용하면 파일명 순으로 정렬했을 때의 이미지 순서가 프레임 번호가 됨 (00001.jpg, 00002.jpg, ... 와 같은 목록에 유용)
  • Save Settings: 현재 선택한 데이터 포맷 및 옵션을 저장 (프로그램 실행시 자동 복원)


데이터 포맷 (Syntax)

  • |: 줄바꿈
  • []: 반복되는 구문
  • frame#: 프레임 번호 (동영상의 프레임 번호, 이미지 목록에서는 이미지 순서)
  • iname: 이미지 파일 이름 (이미지 목록에서 작업할 경우에만 유효)
  • label: 레이블
  • n: 이미지에 설정된 경계사각형 개수
  • x,y: 경계사각형의 left, top 위치
  • w,h: 경계사각형의 폭, 높이
  • cx,cy: 경계사각형의 중심(center) 좌표
  • x1,y1,x2,y2: 경계사각형의 left, top, right, bottom 위치



by 다크 프로그래머


저작자 표시 비영리 변경 금지
신고
  • 이전 댓글 더보기
  • ThinkPad 2013.12.10 10:39 신고 ADDR 수정/삭제 답글

    안녕하세요~

    덕분에 첫 번째 문제는 잘 해결을 하였습니다.

    또 하나 질문이 있어 이렇게 글을 남깁니다.

    위에 보니깐 Trackbar로 폴더 내 파일을 앞뒤로 탐색을 할 수 있는데 관련 함수를 찾아보는데
    현재 파일에서 다음 파일을 검색할 수 있는 함수만 있는데 혹시 처음에 폴더 내 파일 리스트를
    읽어와서 저장을 하고 그 리스트를 앞뒤로 인덱스로 찾아가게 하면 되는것인지 아니면
    좀 더 좋은 방법이 있는지 조언 부탁드립니다.

    항상 질문만 드려서 죄송합니다.

    처음 부터 해보려니 하나 넘어가는게 쉽지가 않네요...

    • BlogIcon 다크pgmr 2013.12.10 13:27 신고 수정/삭제

      말씀하신데로 파일 리스트를 읽어와서 저장하는 방식으로 구현했습니다.

  • neverabandon 2013.12.12 17:37 신고 ADDR 수정/삭제 답글

    좋은 프로그램 감사합니다. 혹시 H264 파일도 지원하는지요? 열리지 않는다고 나와서..ㅠ

    • BlogIcon 다크pgmr 2013.12.13 09:26 신고 수정/삭제

      비디오 입력은 opencv의 기본적인 highgui를 이용한 것입니다. 즉, opencv highgui로 읽을 수 있는 파일은 모두 읽을 수 있습니다 (*.avi, *.mpg). opencv에서는 시스템 코덱을 이용하기 때문에 특별히 지원하거나 지원하지 않는 코덱은 따로 없으며 시스템에 해당 코덱이 설치되어 있으면 읽을 수 있는 것으로 알고 있습니다.

  • haoma 2014.03.21 21:12 신고 ADDR 수정/삭제 답글

    ROI 박스 그리는 것까지는 Opencv 책을 이용하여 구현을 해보았는데요
    혹시 박스 전체를 움직이는 것이나 아니면 일부분만 수정하는 것은 어떻게 하는지 알려주실 수 있나요?

    • BlogIcon 다크pgmr 2014.03.22 07:29 신고 수정/삭제

      어딘가에 박스의 위치정보를 저장해 두고 입력된 마우스 좌표와 비교하면 처리가 가능하리라 생각합니다. 이러한 부분은 프로그래밍 로직(logic)에 관련된 부분이라 설명은 힘들고 스스로 방법을 연구해 보는게 가장 좋을 것 같습니다..

  • BlogIcon doodler217 2015.01.06 09:36 신고 ADDR 수정/삭제 답글

    안녕하세요. 늘 블로그에서 좋은글 보고 있습니다.
    Tracking에 관련하여 질문을 조금 드리고 싶은데요.
    optical flow기반으로 하셨다고 하셨는데, 그에대한 포스팅 내용이나 다른 설명이 조금 있을까요?
    좋은 정보 감사합니다.

    • BlogIcon 다크pgmr 2015.01.06 13:46 신고 수정/삭제

      안녕하세요. 아직 optical flow에 대한 포스팅은 없습니다만 기회가 되면 글을 올리려고 생각은 하고 있습니다. 하지만 그건 optical flow 자체에 대한 것으로 tracker와는 무관할 것입니다.

  • chochotrain 2015.03.23 22:37 신고 ADDR 수정/삭제 답글

    안녕하십니까 다크프로그래머님 항상 도움을 많이 받고있습니다.
    다크프로그래머님께서 만드신 gt_extractor2.1에 대해 몇 가지 질문이 있습니다.
    현재 진행하고있는 연구과제중에서 GT 에디터를 제작하여 사용하라는 오더가 내려왔습니다.
    공교롭게도 지금 저희랩에서 작업을 맡았습니다.
    그렇다고 해서 코드공개를 바라는것은 절대절대절대 아닙니다!!!!
    무리한 부탁이지만 간략하게 플로우정도는 알려주실수 있지않을까 생각이 들어 부탁을 드립니다....

    • BlogIcon 다크pgmr 2015.03.24 06:52 신고 수정/삭제

      무리한 부탁이시네요 ^^
      프로그램에 무슨 특별한 플로우라는게 있을리 없습니다. 사용자에게 어떤 기능과 UI를 제공할까에 대한 고민만 충분히 된다면 그 이후의 과정은 단순한 프로그래밍 과정이라 볼 수 있습니다.

    • 곰돌이만세^^ 2015.03.24 16:12 신고 수정/삭제

      알고리즘의 문제가 아니라 단순히 프로그래밍 스킬의 문제로 보입니다.
      조금만 노력하시면 할 수 있으실 겁니다.

    • BlogIcon 다크pgmr 2015.03.24 16:30 신고 수정/삭제

      /곰돌이만세^^
      제가 가끔 황당한 답변을 할 때 옆에서 잘 무마를 해주시네요.. 감사합니다 ^^
      chochotrain님, 곰돌님 말씀처럼 프로그래밍 스킬의 문제이니 조금 노력하시면 되리라 생각합니다.

  • ba 2015.04.03 14:23 신고 ADDR 수정/삭제 답글

    안녕하세요 항상 많은 것을 배워갑니다 고맙습니다.
    Ground Truth 프로그램에 대해 질문이 있습니다.

    제가 avi 파일을 Open Avi 했을 때 창은 뜨는데 화면이 계속 검정색으로 나오는데 이건 왜그런지 모르겠습니다..

    • BlogIcon 다크pgmr 2015.04.04 05:33 신고 수정/삭제

      아마도 코덱문제일 것 같습니다. 제공되는 압축파일에 같이 포함되어 있는 ffdshow를 한번 설치해 보시기 바랍니다.

  • 아도나일 2015.07.21 09:41 신고 ADDR 수정/삭제 답글

    안녕하세요^^ 다크님의 프로그램은 정말 유용하고 쉬운 인터페이스를 가지고 계셔서 너무 마음에 듭니다.ㅋ
    또 공부하다보니 궁금한점이 생기더군요.ㅋ
    ground truth프로그램에서 하나의 박스를 치면 다음 frame에서 자동으로 tracking 이 되는 것 같던데.. 사용한 알고리즘과 구현 방법을 알고 싶습니다. opencv 를 사용하신 것 같은데..
    어떤 알고리즘을 쓰셨는지요?^^
    항상 감사드리며 앞으로도 멋진 프로그램을 선물해 주시기 바랍니다^^
    저도 언젠가 보답할 날이 있기를 바라며..
    감사합니다.

    • BlogIcon 다크pgmr 2015.07.21 10:10 신고 수정/삭제

      안녕하세요. 프로그램이 마음에 드신다니 다행입니다 ^^
      내장된 추적기는 제가 개발한 것인데 공개된 기술이 아니라서 알고리즘 등은 공개가 어렵습니다.

  • 2016.01.07 16:47 ADDR 수정/삭제 답글

    비밀댓글입니다

  • 영상쟁이 2016.01.25 23:05 신고 ADDR 수정/삭제 답글

    안녕하세요, 올려주신 프로그램 유용하게 쓰고 있습니다. 그런데 사용중에 일종에 버그? 로 보이는 현상을 발견했는데요. 뭔가 하면, 비디오에서 복수에 오브젝트에 대해 그라운드 설정을 다 하고, txt로 저장한 후에 이를 나중에 다시 load하여 확인해 보면 bounding box개수가 맞지 않거나 약간 이상한 위치에 있더라구요. 맨 마지막 프레임에서 예를들어 오브젝트수가 4개로 끝났고, txt를 열어봐도 마지막에 4로 찍히는데 프로그램을통해열어보면 4개가 아니라 2로 찍히고 실제로도 이상한 곳으로 찍히는 현상이 있었습니다.

    • BlogIcon 다크pgmr 2016.01.29 15:03 신고 수정/삭제

      제가 해 봤을 때에는 그런 현상이 나타나지 않아서 문제의 원인은 잘 모르겠습니다. 프로그램에서 콤보박스를 통해 여러 가지 포맷의 gt 파일을 선택할 수 있도록 지원하고 있는데 혹시 저장한 포맷과 읽어들인 포맷이 다른 것은 아닌지 확인해 보시면 좋을 것 같습니다. 만일 그런 문제가 아니라면 어떤 gt 포맷을 사용했을 때 그런 현상이 나타나는지요? 그리고 그런 문제가 여러 동영상에서 항상 나타나는지요? 아니면 어쩌다 한번씩 나타나는 현상인지요?

  • 영상처리초짜 2016.05.03 21:42 신고 ADDR 수정/삭제 답글

    안녕하세요. 다크프로그래머님 영상처리대학원에 다니고 있는 학생입니다. 항상 관련기술을 검색하다보면 나와서 많은 도움을 받고 있어서 감사하게 생각하고 있습니다.
    지금 다크프로그래머님이 올려주신 프로그램을 해보았는데, 동영상이 아닌 이미지프레임으로 불러들이고, fname,x,y,w,h, 로 저장된 ground-truth 텍스트파일을 불러들이는데 자꾸 오류가 뜨는 현상이 나타나는데 혹시 알고 계신지요?

    • BlogIcon 다크pgmr 2016.05.04 07:30 신고 수정/삭제

      기본 테스트는 하고 올린 것인데.. 좀더 구체적으로 상황과 에러를 설명해 주시면 원인 파악에 도움이 될 것 같습니다. 혹시 fname,x,y,w,h 포맷으로 저장된 파일을 다른 포맷으로 읽어들인 것은 아닌지요?

    • BlogIcon 다크pgmr 2016.09.29 12:02 신고 수정/삭제

      늦게나마 말씀하신 버그를 발견하여 수정하였습니다. 그때 제대로 반영하지 못하여 불편을 드린 것 같아 죄송합니다.

  • 김공자 2016.09.28 17:59 신고 ADDR 수정/삭제 답글

    안녕하세요. 저도 영상처리초짜님과 같은현상을 겪고있습니다.
    이미지GT를 save하고 다시 Load GT를하면 runtime error이 발생합니다.

    • BlogIcon 다크pgmr 2016.09.29 11:59 신고 수정/삭제

      제보 감사합니다. 찾아보니 실행경로 설정과 관련된 버그가 있었습니다. 수정하여 다시 올렸습니다.

  • 나비 2016.10.11 22:22 신고 ADDR 수정/삭제 답글

    안녕하세요 다름이 아니라 http://darkpgmr.tistory.com/70 에서 positive image를 추출하려고 이프로그램을 실행시켰습니다. 메모장에
    1857,1
    618,578,264,176 다음과 같이 출력이 됩니다. 그런데 createSamples을 하려면 동영상파일이 아닌 이미지파일이 필요하지 않나요? 그러면 어떤식으로 해야하나요 ㅠㅠ
    아니면 제가 프로그램 만들어서 메모장에 있는 것을 파일 입력으로 받아서 영상에서 이미지를 추출해야 하나요?

    • BlogIcon 다크pgmr 2016.10.13 04:06 신고 수정/삭제

      네, 구현된 Cascade Training 프로그램은 동영상에서는 샘플을 생성할 수 없기 때문에 이미지를 사용해야 합니다. 동영상을 이미지로 바꾸어 주는 프로그램을 이용하시면 좋을 것 같습니다 (VirtualDub 등)

  • cv초심자 2017.07.27 20:21 신고 ADDR 수정/삭제 답글

    테스트를 해보니, 지원하는 영상 해상도 크기의 한계가 있는 것 같습니다만,
    혹시 지원하는 비디오 영상 해상도 크기 좀 늘려주실 수 있나요? HD급정도(1280 x 720)로만 해주셔도 감사하겠습니다만^^
    그리고 동영상에서 그린 바운딩 박스는 이미지로 저장을 하지 못하나요? 어떻게 저장을 하는지 궁금합니다.

    • BlogIcon 다크pgmr 2017.07.27 23:10 신고 수정/삭제

      딱히 영상 해상도에 제한은 없습니다. 만일 어떤 비디오 영상이 열리지 않는다면 그것은 비디오 코덱 문제일 것입니다 (영상 해상도와는 무관합니다). 그리고 바운딩 박스는 텍스트 파일로만 저장되며 Save GT로 저장하고 Load GT로 불러올 수 있습니다.

    • cv초심자 2017.07.28 09:39 신고 수정/삭제

      비디오 파일 확장자는 avi인데, 720x480의 SD급에서는 열리고, 1280x720의 HD급에서는 비디오 파일이 오픈된 후에 프로그램이 죽어버리는 버그(같은 현상)을 발견해서 문의 드렸습니다. 해당 비디오 파일은 코덱 문제가 아닐 수도 있다는 판단이 드는 건,제가 이미 OpenCV 비디오 플레이어를 만들어서 제 환경에서는 잘 사용을 하고 있기 때문입니다. 신경 써주셔서 감사합니다.^^

    • BlogIcon 다크pgmr 2017.07.28 11:22 신고 수정/삭제

      같이 포함되어 있는 opencv_ffmpeg320.dll이 실행파일과 같은 경로에 없으면 일부 동영상이 정상적으로 동작하지 않거나 프로그램이 죽을 수 있습니다. 만일 ffmpeg 파일이 같이 있는데도 그러한 에러가 났다면 원인은 저도 잘 모르겠습니다. 혹시 해상도 외에 추측되는 원인이 있다면 알려주시면 감사하겠습니다. 비디오 해상도는 아시겠지만 opencv에서 비디오 해상도가 크다고 해서 영상을 읽지 못하지는 않습니다.. HD, full HD, 2560 x 2048 비디오까지 테스트는 했는데 큰 문제는 없는것 같습니다.

    • cv초심자 2017.07.28 17:33 신고 수정/삭제

      원인을 발견하였습니다. 제 실수인데, 비디오 파일의 인코딩이 제대로 완료되지 않은 파일을 재생했네요. 다음 플레이어로 보니까 신기하게도 정상적으로 동작을 하길래, 정상 파일인지 알았습니다. 그런데 동일한 주기로 녹화된 다른 파일들과 용량을 비교해보니까, 해당파일의 용량이 훨씬 적더군요. 정상적으로 동작을 합니다. 착오를 드려서 죄송합니다.^^

    • BlogIcon 다크pgmr 2017.07.31 09:24 신고 수정/삭제

      문제가 해결되었다니 다행입니다 ^^

  • 주냄 2017.08.02 16:59 신고 ADDR 수정/삭제 답글

    안녕하세요. computer vision을 연구하고 있는 대학원생입니다.
    예전부터 다크pgmr님께서 CV에 쓰이는 많은 알고리즘이나 방법론들을 알기쉽게 설명하고 구현해 놓으셔서 공부하는데 많은 도움이 되었습니다.
    최근에 딥러닝으로 detection 및 tracking 연구함에 있어 위와 같은 DB 제작 프로그램이 필요하여 개인적으로 만들어 사용하고 있었는데, 이 프로그램은 정말 최고네요!! 만들어 주신 프로그램으로 열심히 연구하여 보도록 하겠습니다. 감사합니다!!

    • BlogIcon 다크pgmr 2017.08.03 15:08 신고 수정/삭제

      도움이 된다니 보람이 느껴집니다. 감사합니다.

  • 카킴 2017.08.07 16:08 신고 ADDR 수정/삭제 답글

    요즘 이 툴로 labeling 중입니다 너무 좋네요 다른 tool 사용하다가요!
    이 tool은 전체화면 안되나요?

    • BlogIcon 다크pgmr 2017.08.07 16:43 신고 수정/삭제

      창 크기조절도 되고 전체화면도 가능합니다. 하지만 전체화면으로 하면 좌측의 컨트롤 창에 영상 창이 일부 가려지게 됩니다. 사용해 보시고 불편한 사항이 이나 개선 의견이 있으면 댓글 남겨주세요.

  • lynx80 2017.08.07 17:31 신고 ADDR 수정/삭제 답글

    안녕하세요?
    avi 동영상을 해당 프로그램으로 불러와서 박스 설정을 완료하고 Save GT로 저장해서
    텍스트 파일을 저장하는 것 까지 완료했는데 박스 설정을 동영상에 덧씌우기 해서
    한번에 같이 보려면 어떻게 해야하나요? ^^;

    • BlogIcon 다크pgmr 2017.08.07 21:57 신고 수정/삭제

      그러려면 먼저 비디오 파일을 불어온 후 저장된 텍스트 파일을 Load GT로 불어오면 됩니다

  • 카킴 2017.08.08 09:02 신고 ADDR 수정/삭제 답글

    아 저는 이미지 때문에 그런데요! 전체화면으로 하면요 다음 사진으로 넘길때 이미지 사이즈가 원본으로 돌아가요 ㅜㅜ 비율 유지안된 상태로 커저선지 labeling 할때 눈이 아프네요 ㅋㅋ

    • BlogIcon 다크pgmr 2017.08.08 10:23 신고 수정/삭제

      네, 어떤 문제인지 이해했습니다. 원래 구현하기를, 이미지 사이를 이동할 때 이미지 원본의 크기에 변화가 없으면 과거의 창의 크기를 유지하고, 이미지 크기에 변화가 발생하면 새로 불러오는 이미지의 크기에 맞게 (1x) 창의 크기를 조절하도록 구현되어 있습니다. 이미지 크기가 제각각이면서 전체화면으로 작업하는 경우는 고려를 못했었는데요, 원하시는 기능은 이미지의 가로, 세로 비율이 유지되면서 화면 최대 크기로 자동 표출되는 것으로 이해했습니다. 좋은 의견 감사드리며 다음 버전업에 반영토록 노력해 보겠습니다.

    • 카킴 2017.08.08 12:53 신고 수정/삭제

      ㅎㅎ 메카니즘이 그렇게 되는거였네요! 간혹가다 사이즈가 같으면 그대로 출력될때도 있어서 여러시도해보고있었는데 미구현된 기능이었네요 :) 툴 잘쓰고있습니다 감사합니다

  • 초보자 2017.08.08 13:42 신고 ADDR 수정/삭제 답글

    안녕하세요, 처음 연구를 시작했던 때부터 본 블로그에서 많은 정보를 접했던 사람입니다. 먼저 감사의 말씀 드립니다.

    현재 딥러닝 detection을 위한 dataset을 준비 중에 있는데, 마침 DB 구축 프로그램을 개발해주셔서 사용해보려고 합니다.
    혹시 이 프로그램을 통해 구축한 labeling 결과를 바로 VOC 형태로 저장하고 VOC 형태 기반 소스코드(예시: tensorflow 기반 faster-rcnn)에 input이 가능할까요?

    항상 감사드립니다.

    • BlogIcon 다크pgmr 2017.08.08 16:41 신고 수정/삭제

      네, 그런 기능이 있으면 유용하겠네요. 다음 버전에 고려해 보겠습니다. 그런데, VOC나 ImageNet 포맷으로 저장하려면 이미지 하나마다 xml 파일을 하나씩 만들어야 하네요.. 냠냠..

    • 초보자 2017.08.14 09:49 신고 수정/삭제

      그렇군요! 답변 감사 드립니다.
      좋은 하루 되세요~

  • whiteforest 2017.08.09 09:41 신고 ADDR 수정/삭제 답글

    안녕하세요. labeling을 완료하고 Save GT까지 했습니다.
    녹화프로그램을 사용하지 않고 동영상에 씌워서, 동영상을 재생했을때 label 프레임이 같이 나오게 하는 방법은 없을까요?

    좋은 프로그램 감사합니다.

    • BlogIcon 다크pgmr 2017.08.09 13:40 신고 수정/삭제

      구현은 가능합니다만 실제 그러한 기능을 추가할지는 조금 고민해 봐야 할 것 같습니다. 기능이 많다고 좋은건 아니라서요.. 혹시 어떤 경우에 그런 기능이 필요할까요?

  • ㅁㄴㅇ 2017.08.09 15:08 신고 ADDR 수정/삭제 답글

    http://carlvondrick.com/vatic/
    이게 생각나는 프로그램이네요.

    • BlogIcon 다크pgmr 2017.08.09 16:29 신고 수정/삭제

      네, 잘 만들어진 프로그램이네요. 특히 interpolation 기능이 인상적입니다. 저는 tracking 기능을 사용했는데 아무래도 tracking은 성능적 한계가 있을 수 있으니 상황에 따라서는 interpolation 기능이 좀더 유용할 것 같다는 생각이 듭니다. 그리고, object별로 자동으로 id를 부여하고 색상도 다르게 표현한 것도 좋은 것 같습니다. 다음에 버전업을 할 때에 이런 좋은 특징들도 고려해 봐야겠습니다. 그런데, 원래 개인적으로 사용할 목적으로 만든 프로그램을 공개한 것이라서 또 언제 마음이 동할지는 모르겠습니다.. ^^

인터뷰

잡기장 2017.07.13 17:11

얼마 전 한 친구와 인텨뷰를 가졌다. 이력서와 자기소개서는 훌륭했다. 하지만 이력서와 자기소개서는 참고일 뿐 그것만으로는 판단이 힘들다. 그래서 자신이 그동안 한 것에 대해서 발표를 부탁했다.


발표는 나쁘지 않았고 딥러닝을 이용해서 실제 문제에 적용한 결과도 나쁘지 않았다. 그리고 사용한 알고리즘이나 발표하면서 사용한 기술적인 용어들로 봤을 때 이 정도면 컴퓨터 비전에 필요한 기본적인 소양은 갖추었다고 판단됐다.


하지만 그것은 성급한 판단이었다. 발표만으로는 확실한 판단이 어렵기 때문에 발표 후 간단한 구술 테스트를 진행했다. 이른바 인터뷰이다. 그런데 인터뷰에서는 전혀 다른 결과가 나왔다.


테스트는 수학, 기계학습, 프로그래밍, 영상처리에 대한 질의응답 형식으로 진행했다. 예를 들어, 그 친구가 발표 도중에 SVM을 사용했다는 내용이 나왔으면 SVM이 무엇인지 간략하게 설명할 수 있느냐? 학습에서 Stochastic gradient 방법을 썼다고 했는데 그게 무슨 방법이냐? gradient가 무엇이냐? 등등 본인이 발표한 내용 중에서 관련된 개념 등을 물어보는 것이다. 그리고 프로그래밍 관련해서는 C에서 포인터가 무엇이냐? C++을 사용할 수 있다고 했는데 virtual 함수가 무엇이냐? 등 기초적이지만 수준을 체크할 수 있는 질문들이다.


그런데, 이 친구가 거의 답변을 못한다.. 막연한 지식 또는 주변적인 답변만 할 뿐 정작 질문 자체에 대해서는 답변을 하지 못한다. 그냥 가져다 쎴다. 잘 모르겠다... 어느 것 하나도 깔끔한 답변이 없다. 딱 자신이 발표한 내용, 말한 내용까지만 알고 있는 것이다.


물론 그럴 수 있다. 바쁜 세상에 모든 것을 다 알 수는 없다. 그게 뭔지는 잘 몰라도 결과가 좋다면 가져다 쓰는 것이 현실이다. 요즘 DNN을 사용하는 것이 그렇다. 그냥 가져다 쓰면 잘 된다. 이른 바 black-box implementer가 되는 것이다. 하지만, 아무리 그래도 최소한 자신이 사용하는 것에 대해서는 기본적인 개념 정도는 알고 있어야 한다.


그 친구는 조금 안타깝다.. 태도나 성실성, 경험 측면에서는 모두 통과다. 하지만 자신이 하고 있는 것에 대해서 의문을 갖지 않는 것은 받아들이기 어렵다. 그것은 잠재력과 같은 것이다..


by 다크 프로그래머

저작자 표시 비영리 변경 금지
신고

'잡기장' 카테고리의 다른 글

인터뷰  (2) 2017.07.13
책읽기의 즐거움  (1) 2017.05.24
말말말  (0) 2016.11.29
한국의 영어 교육  (0) 2016.11.23
  • 1992cjm 2017.07.14 14:10 신고 ADDR 수정/삭제 답글

    저랑은 정확히 반대되는 상황이네요.
    요번에 취업을 하면서 '내가 왜 뽑혔지?' 이런 의문이 들었었거든요.
    시험, 발표, 면접을 보면서 경쟁자 분들의 스펙을 대강 들어보면 제 경력, 경험, 학벌, 영어점수은 모두 보잘것없는 고스펙의 지원자들이더군요.
    저는 제가 아는 한도 내에서만 성실히 답변을 드렸는데 아는 한도내에서
    질문사항들에 대해 해당 개념이 갖는 의의, 무엇을 위한 개념인지, 실제 사용예는 어떠한지, 내가 생각하는 장단점은 무엇인지등
    평소에 생각해오던 제 철학(?)을 이야기드렸던 것 같습니다.
    블로거님이 PM 으로서 필요한 연구인력을 판별하시는것처럼 그 친구분도 겉보기 스펙이 아니라 공학자가 추구해야하는 시스템의 이해, 분석등 대상을 단순화하고 이해하고 응용하는, 학문적인 가치에 집중하였다면하는 아쉬움이 있네요.

    • BlogIcon 다크pgmr 2017.07.14 14:38 신고 수정/삭제

      축하합니다. 현재와 가능성을 인정받은 것이네요. 사람을 뽑을 때, 현재는 최소한의 기준으로서 의미가 있지만 이 기준만 넘는다면 태도와 가능성이 훨씬 중요하다고 생각합니다.



티스토리 툴바