NGMsoftware

NGMsoftware
로그인 회원가입
  • 커뮤니티
  • 자유 게시판
  • 커뮤니티

    자유롭게 글을 작성할 수 있는 게시판입니다.

    자유 게시판

    자유롭게 글을 작성할 수 있는 게시판입니다.


    소프트웨어 [후원] 다크넷 딥러닝으로 데이타셋을 학습시키는 프로그램. (Darknet)

    페이지 정보

    본문

    ※ 후원은 만원(10,000)부터^^a

     

    안녕하세요. 엔지엠소프트웨어입니다. 근래에 갑자기 딥러닝을 요청하시는 분들이 많아졌습니다. 홈페이지에 딥러닝 환경을 구축할 수 있는 메뉴얼이 있지만, 개발을 안해본 일반 사용자분들은 환경을 구성하는게 어려울겁니다. 개발자도 C++을 안해본 상태에서 컴파일하기란 쉽지 않은 일이죠^^; 아무튼, 어떤 이유인지는 모르겠지만~ 딥러닝으로 캐릭터나 몬스터를 학습시켜 달라는 요구가 많은데요. 혼자서 모두 처리해드릴 수 없기도 하고, 한번 컴파일 해두면 두고두고 사용할 수 있기 때문에 가능하면 직접 하시는걸 권해드리고 있습니다. 아래와 같은걸 할 수 있어요!

    • 딥러닝 모델 제작 의뢰: 50,000원
    • 의뢰 문의: https://open.kakao.com/o/s5NJbpke

     

     

    딥러닝을 사용하면 룬 풀기도 가능합니다.

    fchKtnT.png

     

     

    개발자가 아닌 일반인도 쉽게 사용할 수 있도록 메뉴얼이 준비되어 있습니다. 참고로, CUDA와 cuDNN은 11.0 버전으로 설치해야 합니다. 또한, 윈도우의 환경 변수에 사용자 변수를 추가하고, CUDA와 OpenCV도 설정해줘야 합니다.

    [ 학습 이미지 만들기 ] [ 딥러닝 학습 하기 ]

    6EgnjdR.png

     

     

    OpenCV도 같이 설정해주세요.

    cS9M2sY.png

     

     

    대부분 다크넷 컴파일을 어려워 하시더라구요. 쿠다쪽에서 많이 문제가 발생하는데요. 대부분은 버전과 시스템 설정에서 미스가 나는 경우입니다. 일반적인 매크로 프로그램들보다 한단계 더 수준 높은 매크로를 만들려면 딥러닝은 좋은 선택이 될겁니다. 현재 딥러닝을 활용할 수 있는 매크로는 없거든요~ 아래 계좌로 후원 후 [ 후원 게시판 ]에 글을 남겨주시면 파일을 보내드립니다^^

     

    다크넷 딥러닝을 학습하려면 yolo_mark로 만든 데이타셋이 필요합니다. 이 데이타셋으로 학습할 수 있습니다. 관리자로부터 받은 압축 파일을 해제하면 아래와 같이 폴더에 파일들이 존재합니다. 뭔가 복잡하게 파일들이 많아서 어떻게 사용해야 하는지 잘 감이 오지 않을겁니다.

    gPpT8Ri.png

     

     

    yolo-obj.cfg (학습에 필요한 속성 콘피그 파일)

    이 파일은 데이타셋을 학습할 때 필요한 여러가지 속성들을 설정할 수 있습니다. 좋은 품질의 학습 데이타를 얻으려면 몇가지 수정해야 합니다.

    • batch: 기본 값은 64로 특별히 변경하지 않아도 됩니다. 이 값은 한 사이클에 몇장을 처리할지 정하는 값입니다.
    • subdivisions: batch를 이 값만큼 나누어서 처리합니다. 기본값은 8이지만 Out of memory 에러가 날 경우 16 또는 32, 64로 조절하여 시도해야 합니다.
    • height, width: 입력되는 이미지의 크기입니다. 이미지의 크기가 클수록 정확도가 높아지지만 성능은 하락합니다.
    • angle: HARR 또는 Tensorflow Inception과 동일하게 입력되는 데이터로부터 다양한 학습을 위한 설정값입니다. 보통은 0으로 두지만, 기울기에 따라 15~90도까지 가능합니다.
    • saturation: 이미지의 채도를 조절할 때 설정하는 값입니다.
    • exposure: 이미지의 노출을 조절할 때 설정하는 값입니다.
    • hue: 이미지의 색조를 조절할 때 사용하는 값입니다.
    • learning_rate: 기본 값은 0.001입니다. multi-gpu 사용시 0.001 / gpu수만큼 조절해서 사용할 수 있습니다.
    • burn_in: 기본 값은 1000입니다. multi-gpu 사용시 Iteration이 지날 때 마다 학습률을 조정할 것인지 설정합니다. gpu 수 * 1000으로 설정합니다.
    • max_batches: Iteration(반복) 횟수를 설정할 수 있습니다. 일반적으로 Class 수 * 2,000입니다. 더 복잡한 작업이라면 3,000 또는 4,000을 곱합니다. 추가로 200을 더해줍니다. 클래스가 3이라면 3*2,000+200=6,200입니다. 200은 전후로 알맞은 가중치를 얻기 위한 값입니다.
    • steps: 100, 500, 1000과 같이 입력합니다. 500, 1000을 입력해도 됩니다. 입력한 스텝까지 배치 후 학습 속도를 조정합니다.
    • scales: 0.1, 0.2, 0.3과 같이 입력합니다. 이 값은 steps에 입력한 값에 대응합니다. steps 100 후에 LR에 0.1을 곱한 다음 500 후에 다시 0.2를 곱합니다. 1000에서 0.3을 곱합니다.

     

    이외에도 학습과 관련된 옵션들이 많습니다. 다른 옵션들은 특별하게 조정할 필요가 없거나 기본 값을 사용하여 학습하는걸 추천드립니다. 이 옵션들에 대해 더 자세히 알고 싶다면 아래 링크에서 도움을 받을 수 있습니다.

    https://pjreddie.com/darknet/yolo/

     

    공통적으로 수정해야 하는 부분은 2가지입니다.

    classes와 filters입니다. 메모장에서 Ctrl+F를 눌러서 classes와 filters를 모두 수정하세요.

    classes: 감지 또는 검출할 이미지의 수입니다. 이 예제에서는 air, bird, person으로 3개입니다.

    filters: 5*(클래스 수+5) 입니다. 이 예제에서는 40입니다. 

     

    obj.names 파일 설정

    클래스의 이름입니다. 이 예제에서는 air, bird, person 3개이며, 아래 그림과 같이 한줄에 하나씩 입력해야 합니다.

    oS18Vck.png

     

     

    obj.data 파일 설정

    아래 이미지를 보면 크게 어려운 부분은 없습니다. train과 valid가 동일하게 설정되어 있는데요. 이 부분을 분리하여 처리가 가능합니다. valid image(유효한 이미지)를 별도로 목록화하여 valid = data/valid.txt로 만든 후 수정하여 사용하면 됩니다. 그리고, 마지막 backup은 학습을 반복하면서 weight가 저장되는 폴더 위치를 말합니다.

    Dd9brbJ.png

     

     

    트레이닝을 위해 이미지넷에서 프리트레이닝(미리 훈련된)된 컨볼루션 웨이트와 다크넷의 darknet53 모델의 가중치를 사용합니다. 아래 링크에서 컨볼루션 레이어의 가중치를 다운로드 할 수 있습니다.

    https://pjreddie.com/darknet/yolo/

    ※ 컨볼루션(합성곱): 트레이닝 함수를 반전시키고 이동시켜 값을 곱해 구간에 대해 적분하는 공식

    rrMdm5g.png

     

     

    대략 용량이 150메가쯤 합니다. 이 파일을 다운로드 받은 후 다크넷 프로젝트의 build/x64 폴더에 복사합니다.

    CgU81bj.png

     

     

    yolo mark 프로젝트의 data폴더안의 모든 파일을 다크넷의 data폴더에 복사합니다. 그리고, yolo mark의 yolo-obj.cfg파일은 data밖(x64)에 저장하세요.

    lcH2Iv4.png

     

     

    Windows Command를 관리자 권한으로 실행한 후 다크넷의 x64디렉토리로 이동합니다.

    3jSVPFE.png

     

     

    아래 명령으로 트레이닝을 실행시킵니다.

    darknet detector train data/obj.data data/yolo-obj.cfg darknet53.conv.74

    7J4OILT.png

     

     

    학습이 완료되면 아래와 같이 backup 폴더에 가중치 파일이 생성된걸 확인할 수 있습니다.

    vVUXS8D.png

       

       

    Windows Command에서 아래 명령으로 간단하게 테스트 해볼 수 있습니다.

    darknet detector test data/obj.data yolo-obj.cfg backup/yolo-obj_2000.weights air.png

    wvh1nLu.png

     

     

    이미지 몇장으로 테스트한거라서 그런지... 정확도는 높지 않네요. 보통 최소 300에서 30,000장을 학습시켜야 괜찮은 결과를 얻을 수 있다고 합니다. 물론, 전처리도 중요하죠. 생각해보면 수백에서 수만장의 사진을 수작업으로 train과 valid 이미지를 만든다는건~ 많은 노력과 시간이 들어가는 작업인걸 알 수 있습니다. 이 내용을 토대로 원하는 결과를 얻을 수 있었으면 좋겠네요.

     

    딥러닝 학습에 대한 자세한 내용은 아래 글을 참고하세요.

    [ 다크넷 욜로 학습하기 ]

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천1 비추천0

    댓글목록

    profile_image

    엔지엠소프트웨어님의 댓글

    엔지엠소프트웨어 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일 Date

    후원 후 자유 게시판의 후원 카테고리에 글 남겨주시면 파일을 보내드립니다.

    profile_image

    토뮤리얼No2님의 댓글

    no_profile 토뮤리얼No2 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일 Date

    욜로를 실제 무인 폭격기에도 적용 시켰다고 뉴스를 본 적이 있네요 ㅎㅎ 이미지서치,매치로 힘든 매크로같은 경우엔  욜로를 이용해서 학습시키고 하는것도 좋은 방법 같습니다.ㅎㅎ

    profile_image

    엔지엠소프트웨어님의 댓글

    엔지엠소프트웨어 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일 Date

    딥러닝임에도 속도가 넘사벽이긴 하죠^^;
    정말 엄청나게 빠른 속도로 사물을 인식할 수 있어서 활용 분야가 많을거 같아요~