Ferns Detector

개발한 것들 2013.08.28 12:12

Random Ferns를 이용한 detector 프로그램입니다 (Ferns에 대한 소개는 Ferns를 이용한 영상 Object Detection 글을 참고하세요).





프로그램 다운로드


FernsDetector.zip


실시간 웹캠이나 동영상 파일 입력을 지원합니다. 웹캠은 관계없지만 동영상을 입력으로 검출할 때에는 통합 영상 코덱 등이 설치되어 있어야 합니다 (ffdshow 통합 영상코덱 다운로드).



프로그램 사용법


입력 영상에서 마우스 드레그(drag)로 검출할 물체 영역을 설정해 주면 detector를 학습한 후에 물체를 찾아줍니다.

detector를 학습하는 데에는 약 5분 ~ 10분 정도가 소요되며 학습된 detector는 model.dat 라는 이름의 파일로 저장됩니다.

저장된 detector가 있을 경우, 프로그램 시작할 때 자동으로 저장된 detector가 로드됩니다. 물론 언제든지 마우스로 영역을 설정해 주면 새로 detector가 학습됩니다.


space 키를 누르면 일시정지, esc 키를 누르면 프로그램이 종료합니다.


☞ Ferns의 대략적인 성능을 확인하는 용도로 테스트해 보시면 좋을 듯 싶습니다.


by 다크 프로그래머


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

'개발한 것들' 카테고리의 다른 글

영상추적 프로그램(DTracker)  (181) 2013.11.29
Ferns Detector  (17) 2013.08.28
가상 3D 영상 생성 프로그램  (16) 2013.08.01
화면캡쳐 녹화 프로그램 (DarkCap)  (29) 2013.06.26
  • 문일현 2013.08.29 09:20 신고 ADDR 수정/삭제 답글

    안녕하세요

    훈련시키는데 생각보다 많은 시간이 소요가 되네요.
    혹시 이 Detector에 쓰인 Fern 라이브러리는 따로 공개가 되어있는 것인가요?
    한번 저도 구현을 해보고 싶어서 질문드립니다.

    • BlogIcon 다크pgmr 2013.08.29 09:47 신고 수정/삭제

      Ferns 코드는 현재 공개되어 있습니다.
      http://darkpgmr.tistory.com/90 글을 참조하시기 바랍니다.

    • 문일현 2013.08.29 09:48 신고 수정/삭제

      아 그 앞에 글은 읽었는데 그 코드를 기반으로 구현하신거군요.

      감사합니다~

  • 감사합니다 2013.09.08 17:17 신고 ADDR 수정/삭제 답글

    안녕하세요.

    FPS에 관해 궁금증이 생겨서 질문드리려고 합니다.

    위 프로그램과 같이 여러 프로그램에서 FPS가 언급되는데, 정확한 개념이 무엇인지 궁금하네요.

    어떤 프로그램에서는 프레임 10개 단위로 끊어서 계산하는것도 있고, 어떤 프로그램은 매 프레임마

    다 계산하는것도 있던데 다크프로그래머 님은 어떤 방법을 사용하셧는지요..?

    • BlogIcon 다크pgmr 2013.09.08 17:39 신고 수정/삭제

      안녕하세요. 저는 평균값을 사용한 것이 아니라 그냥 매 영상 프레임마다 소요시간을 fps 환산하여 출력하는 방식을 사용했습니다. 예를 들어, 현재 입력 영상을 처리하는데 50 milliseconds가 걸렸다면 1초/50msec = 20 fps(frames per second)를 화면에 출력하는 방식입니다.

  • Shim 2014.01.23 10:44 신고 ADDR 수정/삭제 답글

    안녕하세요, 저도 fern 을 좀 구현하려 하는데, 우선 윈도우로 옴긴다음에 분석을 하려 했더니, zlib를 어떻게 처리해야할지 싶내요... 조언좀 해주실 수 있으신가요?

    • BlogIcon 다크pgmr 2014.01.23 11:33 신고 수정/삭제

      문제가 어떤건가요? 만일 zlib 쪽에서 컴파일 에러가 나는 것이라면 구현한지 좀 시간이 지나서 잘 기억이 안납니다만 다음 순서대로 해 보면 어떨까 싶습니다.
      1. 원래의 epfl의 ferns 소스코드에 포함되어 있는 zlib.h, zconf.h, zlib.lib를 이용하여 컴파일한다.
      2. 만일 1이 안되면 그냥 opencv에 기본적으로 포함되어 있는 zlib 파일들을 이용하여 컴파일한다 (header 파일들은 3rdparty\zlib 폴더 밑에, lib 파일은 build\x86\vc?\staticlib 밑에 존재함).
      3. 만일 2도 안되면 opencv를 자신의 pc에서 직접 build 해서 생성되는 zlib 파일들을 이용한다.

  • 몰라 ㅜ 2014.02.04 02:21 신고 ADDR 수정/삭제 답글

    학습방법은 어떤 방법을 쓰는건가요?

    • BlogIcon 다크pgmr 2014.02.04 09:33 신고 수정/삭제

      물체의 주요 특징점들에 대해서 fern이라는 binary feature를 모델로 저장한 후 이후 매칭을 통해서 대상을 찾는 방식입니다. 자세한 학습 방법 및 내부 알고리즘에 대해서는 http://darkpgmr.tistory.com/90 글을 참조하시기 바랍니다.

  • Odette 2014.03.31 12:54 신고 ADDR 수정/삭제 답글

    안녕하세요. 업로드해주신 테스트 프로그램을 잘 사용해보았습니다. 제가 공개된 소스를 내려받아 윈도우 포팅을 마친후 실행을 시켜보았더니 디폴트 값으로는 학습시간이 1시간 정도 소요되고 샘플영상을 사용하였을 때 detect 또한 되지 못했습니다. 테스트 프로그램에 사용하신 학습에 사용한 파라미터들의 값을 여쭤봐도 될까요?

    • BlogIcon 다크pgmr 2014.03.31 14:55 신고 수정/삭제

      물체의 허용 가능한 스케일 범위를 원래 0.5~1.5였던 것을 0.3~1.5로 변경한 것 외에는 특별히 파라미터 값을 바꾼 것은 없는 것 같습니다. 그리고 원래 소스에 있던 템플릿 tracker 부분은 모두 들어내고 순수하게 ferns detector 부분만으로 코드를 작성했습니다.
      시간이야 컴퓨팅 환경에 따라 다를 수 있겠지만(저는 opencv에 tbb를 적용해서 컴파일하기 때문에 좀더 속도가 빠를 수 있습니다) 기본적으로 제공되는 샘플에서 detect에 실패한 것은 무언가 좀 이상한 것 같습니다.

  • 루씨네 2014.07.04 21:05 신고 ADDR 수정/삭제 답글

    안녕하세요 블로그 정말 잘 보면서 공부에 굉장히 많은 도움이 되고 있습니다
    fern classifier를 공부 하던중에 camera로 input받은 영상의 일부를 트레이닝해서 검출 하는 부분을 해보고 싶어서 하고 있는데요
    현재 상태는 위 만드셧던 프로그램과 똑같은 방법으로 생각중인데요
    adaboost로 얼굴을 잡고 그 영역을 fern으로 트레이닝 시켜서 잘 검출이 되나 확인중입니다
    근데 저 manage_buffer에서 오류가 나오네요
    manage_buffer(scores, maximum_number_of_correspondences, float); 에서 알수 없는 오류가 나와서 질문 드립니다
    감사합니다

    • BlogIcon 다크pgmr 2014.07.08 11:00 신고 수정/삭제

      안녕하세요. 위 코드는 http://darkpgmr.tistory.com/90 글에서 설명한 바와 같이 원래의 Linux 코드를 window로 포팅한 것으로 원본 코드 자체가 바뀐 것은 없습니다.. 말씀하신 부분은 어떤 오류인지 저도 알기가 힘듭니다.

  • program 2014.08.19 15:40 신고 ADDR 수정/삭제 답글

    안녕하세요. 저또한 linux 기반의 코드를 윈도우 기반으로 포팅하는 중 zlib.h에서 컴파일 에러가 발생하여 위에서 말씀해주신대로 opencv기반의 zlib.h로 대체하니 컴파일 오류는 잡혔습니다. 그렇지만 header 내부에서 구문오류 등 C++에서 형식지원이 안된다는 error등이 발생하는데 이는 zlib.h를 포함하는데 문제가 잇는 것인지 아니면 이때 발생하는 error를 잡아줘야(window기반으로 변경)되는 것인지 궁금하여 질문드립니다.. 감사합니다..

    • BlogIcon 다크pgmr 2014.08.19 17:06 신고 수정/삭제

      안녕하세요. 제 경우에는 따로 zlib 내부에서는 에러가 나지 않았습니다. 참고하시기 바랍니다. 그리고 http://darkpgmr.tistory.com/90 글에 windows 버전 포팅 코드를 올린 바 있으니 참고하시기 바랍니다.

  • opencver 2016.04.13 20:50 신고 ADDR 수정/삭제 답글

    안녕하세요.
    위 프로그램 실행 후 학습데이터가 Model.dat로 떨궈졌는데
    이런 영상 학습을 PCA나 상관관계를 이용한 얼굴인식에서도 적용하신 적이 있으신가요?(가능은 한지 모르겠습니다 ㅠㅠ;)

    • BlogIcon 다크pgmr 2016.04.14 09:59 신고 수정/삭제

      저는 없습니다. 뭐든지 가장 좋은 방법은 직접 해 보고 확인하는 것이라고 생각합니다.