NGMsoftware

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

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

    자유 게시판

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


    소프트웨어 [후원] 다크넷 딥러닝으로 이미지 데이타셋을 만드는 프로그램. (Yolo Mark)

    페이지 정보

    본문

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

     

    안녕하세요. 엔지엠소프트웨어입니다. 근래에 갑자기 딥러닝을 요청하시는 분들이 많아졌습니다. 아래 학습 시키는 프로그램만 올려놨었는데요. 학습에 필요한 데이타셋을 만드는 프로그램도 필요할거 같아서 추가합니다. 관리자로부터 받은 파일의 압축을 해제하시면 아래와 같은 내용들이 들어 있습니다.

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

    RNyGTbM.png

     

     

    yolo_mark.cmd 파일을 실행하세요. 아래와 같은 화면을 볼 수 있습니다.

    hmuwEkq.png

     

     

    실제로 내가 원하는 이미지로 학습을 해야겠죠? 욜로 마크의 옵션을 설정하세요. yolo_mark.cmd와 같은 위치에 yolo-obj.cfg 파일이 있습니다.

    GIcUs8N.png

     

     

    편집기에서 Control+F로 찾기를 실행하세요. region을 찾으세요.

    [net]
    batch=64
    subdivisions=8
    height=416
    width=416
    channels=3
    momentum=0.9
    decay=0.0005
    angle=0
    saturation = 1.5
    exposure = 1.5
    hue=.1
    
    learning_rate=0.0001
    max_batches = 45000
    policy=steps
    steps=100,25000,35000
    scales=10,.1,.1
    
    [convolutional]
    batch_normalize=1
    filters=32
    size=3
    stride=1
    pad=1
    activation=leaky
    
    [maxpool]
    size=2
    stride=2
    
    [convolutional]
    batch_normalize=1
    filters=64
    size=3
    stride=1
    pad=1
    activation=leaky
    
    [maxpool]
    size=2
    stride=2
    
    [convolutional]
    batch_normalize=1
    filters=128
    size=3
    stride=1
    pad=1
    activation=leaky
    
    [convolutional]
    batch_normalize=1
    filters=64
    size=1
    stride=1
    pad=1
    activation=leaky
    
    [convolutional]
    batch_normalize=1
    filters=128
    size=3
    stride=1
    pad=1
    activation=leaky
    
    [maxpool]
    size=2
    stride=2
    
    [convolutional]
    batch_normalize=1
    filters=256
    size=3
    stride=1
    pad=1
    activation=leaky
    
    [convolutional]
    batch_normalize=1
    filters=128
    size=1
    stride=1
    pad=1
    activation=leaky
    
    [convolutional]
    batch_normalize=1
    filters=256
    size=3
    stride=1
    pad=1
    activation=leaky
    
    [maxpool]
    size=2
    stride=2
    
    [convolutional]
    batch_normalize=1
    filters=512
    size=3
    stride=1
    pad=1
    activation=leaky
    
    [convolutional]
    batch_normalize=1
    filters=256
    size=1
    stride=1
    pad=1
    activation=leaky
    
    [convolutional]
    batch_normalize=1
    filters=512
    size=3
    stride=1
    pad=1
    activation=leaky
    
    [convolutional]
    batch_normalize=1
    filters=256
    size=1
    stride=1
    pad=1
    activation=leaky
    
    [convolutional]
    batch_normalize=1
    filters=512
    size=3
    stride=1
    pad=1
    activation=leaky
    
    [maxpool]
    size=2
    stride=2
    
    [convolutional]
    batch_normalize=1
    filters=1024
    size=3
    stride=1
    pad=1
    activation=leaky
    
    [convolutional]
    batch_normalize=1
    filters=512
    size=1
    stride=1
    pad=1
    activation=leaky
    
    [convolutional]
    batch_normalize=1
    filters=1024
    size=3
    stride=1
    pad=1
    activation=leaky
    
    [convolutional]
    batch_normalize=1
    filters=512
    size=1
    stride=1
    pad=1
    activation=leaky
    
    [convolutional]
    batch_normalize=1
    filters=1024
    size=3
    stride=1
    pad=1
    activation=leaky
    
    
    #######
    
    [convolutional]
    batch_normalize=1
    size=3
    stride=1
    pad=1
    filters=1024
    activation=leaky
    
    [convolutional]
    batch_normalize=1
    size=3
    stride=1
    pad=1
    filters=1024
    activation=leaky
    
    [route]
    layers=-9
    
    [reorg]
    stride=2
    
    [route]
    layers=-1,-3
    
    [convolutional]
    batch_normalize=1
    size=3
    stride=1
    pad=1
    filters=1024
    activation=leaky
    
    [convolutional]
    size=1
    stride=1
    pad=1
    # filters의 수는 5*(classes+5) 공식을 따릅니다.
    filters=40
    activation=linear
    
    [region]
    anchors = 1.08,1.19,  3.42,4.41,  6.63,11.38,  9.42,5.11,  16.62,10.52
    bias_match=1
    # 기본 클래스 2개(Air, Bird)와 추가한 1개(Person)입니다.
    classes=3
    coords=4
    num=5
    softmax=1
    jitter=.2
    rescore=1
    
    object_scale=5
    noobject_scale=1
    class_scale=1
    coord_scale=1
    
    absolute=1
    thresh = .6
    random=0
    

     

    classes는 감지 또는 검출하고자 하는 오브젝트의 수입니다. 기본으로 air, bird가 들어 있습니다. 추가로, person을 넣을 예정이기에 이 값을 3으로 변경해줍니다. 그리고, 위에 filters는 40으로 변경합니다. filters는 5*(classes+5)의 공식으로 처리합니다. 클래스 3에 5를 더한 후 5를 곱해서 필터수를 계산합니다.

    [convolutional]
    size=1
    stride=1
    pad=1
    filters=40
    activation=linear

     

    [region]
    anchors = 1.08,1.19,  3.42,4.41,  6.63,11.38,  9.42,5.11,  16.62,10.52
    bias_match=1
    classes=3
    coords=4
    num=5
    softmax=1
    jitter=.2
    rescore=1

     

    이 파일은 트레이닝을 하기 위한 옵션들이 모두 정의되어 있습니다. 자세한 사용법은 아래 링크에서 확인할 수 있습니다.

    https://github.com/AlexeyAB/Yolo_mark

     

    yolo_mark.cmd파일이 있는 위치에서 data/img 폴더에 학습할 이미지들을 저장시킵니다. 좀 더 편하게 이미지들을 가공하려면 [ 이미지 에디터 커스텀 모듈 ]을 이용할 수 있습니다. 커스텀 모듈은 모든 이미지의 사이즈 및 필터를 균일하게 조정할 수 있습니다. 이 예제에서는 기본 포함되어 있는 이미지외에 person.jpg를 하나 넣어 두었습니다.

    drADnhO.png

     

     

    yolo_mark.cmd가 있는 위치에서 data 폴더로 이동하세요. obj.names파일을 메모장으로 열어줍니다. 라벨링 이름을 하나 추가해줍니다.

    FjFylIW.png

     

     

    같은 위치에 obj.data파일을 메모장으로 열어줍니다. 클래스를 아래와 같이 수정하세요.

    classes= 3
    train  = data/train.txt
    valid  = data/train.txt
    names = data/obj.names
    backup = backup/

     

    yolo_mark.cmd를 더블클릭하여 실행하세요.

    1. 이미지의 목록입니다. 키보드 좌우로 이미지를 이동할 수 있습니다.
    2. 오브젝트입니다. data/obj.names에 등록한 목록이 표시됩니다.
      샘플은 라벨링 작업이 완료되어 있으므로, 새롭게 추가한 이미지와 person 라벨을 선택하세요.

    bBOUzi6.png

     

     

    마우스로 드래그하여 영역을 설정합니다.

    pfVUkMT.png

     

     

    h를 누르면 도움말을 볼 수 있습니다. 마우스 왼쪽으로 영역을 지정하고, 마우스 오른쪽 클릭으로 영역을 이동할 수 있어요. c를 누르면 영역을 모두 삭제합니다. 만약, 잘못된 영역을 삭제하고 싶으면 마우스를 올려놓고 r을 누르세요. 마우스를 올리면 노란색으로 박스가 하이라이트됩니다. 오브젝트를 전부 등록했으면 esc를 눌러서 작업을 완료하세요. data/train.txt를 보면 작업이 완료된 이미지들이 등록되어 있는걸 알 수 있습니다.

    data/img/air1.jpg
    data/img/air2.jpg
    data/img/air3.jpg
    data/img/air4.jpg
    data/img/air5.jpg
    data/img/air6.jpg
    data/img/bird1.jpg
    data/img/bird2.jpg
    data/img/bird3.jpg
    data/img/bird4.jpg
    data/img/person.jpg

     

    data/img/person.txt 파일이 새롭게 생성되었습니다. 내용은 이미지에서 감지 또는 검출할 오브젝트의 위치와 영역입니다.

    2 0.120703 0.509028 0.175781 0.951389
    2 0.391797 0.506944 0.192969 0.963889
    2 0.646484 0.513889 0.164844 0.950000
    2 0.894531 0.500000 0.148438 0.969444

     

    이 방식은 엔지엠의 HARR와 비슷합니다. HARR 머신러닝이 궁금하신 분은 [ 여기 ]를 한번 읽어보시기 바랍니다. 이 글을 작성하면서 YOLO를 진작 알았더라면... 이라는 생각을 자주하게 됩니다. 개발자들이 어떤 플로우를 머리속에 그리고, 만드는건 비슷합니다. 누구나 생각의 흐름은 유사하거든요. HARR의 막강한 알고리즘으로 많이 사용되었지만, 환경 구성이 너무나 복잡했습니다. 이런저런 문제로 더이상 업그레이드가 없다보니... 이제는 적용조차 쉽지 않네요^^;

    rZghTnM.jpg

     

     

    여기까지 욜로 학습용 데이타셋을 만드는 방법에 대해 알아봤습니다.

    감사합니다.

     

    이 파일에는 욜로 데이타셋을 만들 수 있는 파일이 포함되어 있습니다. 개발 환경을 갖추고 C 프로젝트를 컴파일 할 필요는 없습니다. 관리자에게 받은 파일의 압축을 해제한 후 해당 폴더에 있는 yolo_mark.cmd를 관리자 권한으로 실행하시면 됩니다. 자세한 내용은 아래 링크를 참고해주세요.

    [ 다크넷 딥러닝 환경 구성하기 ]

     

    개발자에게 후원하기

    MGtdv7r.png

     

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

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

    감사합니다~

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

    댓글목록

    등록된 댓글이 없습니다.