yolov4 목표 탐지 기교 향상

훈련하기 전에 뭘 해야 돼요?

  • 설치.cfg 파일 중: random=1, Yolo에 대한 해상도 훈련을 통해 정밀도를 향상시킵니다.
  • 증가합니다.cfg 파일의 네트워크 해상도(height=608,width=608 또는 32의 배수)를 사용하면 정밀도를 높일 수 있습니다.
  • 검사할 모든 대상이 데이터 집합에 강제로 표시되었는지 확인하십시오. 데이터 집합의 어떤 대상도 라벨이 없어야 합니다.대부분의 훈련 문제는 데이터가 집중된 오류 라벨 때문이다(변환 스크립트나 제3자 도구를 사용하여 라벨을 얻는다).Yolo를 통해마크가 당신의 데이터 집합을 검사합니다.
  • 나의 Loss는 매우 높지만 mAP는 매우 낮다. 훈련을 잘못한 것입니까?조련 명령 말미에 -show 사용imgs 로고 운행 훈련, 당신은 정확한 경계 대상 상자를 보았습니까?만약 없다면, 너의 훈련 데이터가 잘못되었을 것이다.
  • 검측할 모든 대상에 대해 훈련 데이터 집합은 최소한 비슷한 대상이 있어야 하며 대상의 형상, 측면, 상대 크기, 회전 각도, 경사도와 조명도 등 대체적으로 같은 형상을 가지고 있어야 한다.이상적인 상황에서, 당신의 훈련 데이터 집합은 서로 다른 이미지를 포함해야 한다. 비례, 회전, 밝기, 서로 다른 측면, 서로 다른 배경의 이미지이다.클래스마다 2000장 이상의 다른 그림을 제공하는 것이 좋습니다. 그리고 2000*classes 또는iter를 훈련해야 합니다.
  • 트레이닝 데이터 집합에는 검출하기 싫은 태그 대상의 이미지 - 테두리 없는 마이너스 샘플 (빈 txt 파일) 을 포함하고, 태그 이미지와 같은 마이너스 샘플을 사용합니다.
  • 객체를 표시하는 가장 좋은 방법은 객체의 가시적인 부분만 표시하거나 객체의 가시적이고 중첩된 부분만 표시하거나 전체 객체보다 조금 더 많은 간격으로 표시하는 것입니다.네가 그것을 어떻게 측정하길 원하느냐에 따라 표시해라.
  • 각 이미지의 대량 대상을 훈련하기 위해서는 cfg 파일의 마지막 [yolo] 층이나 [region] 층에 파라미터 max=200 이상의 값을 추가해야 한다. (YoloV3에서 검출할 수 있는 대상의 전역 최대 수량은 0.0615234375*(width*height)이고 그 중에서width와height는 cfg 파일의 [net] 부분의 파라미터이다).
  • 소형과 대형 물체에 대한 훈련, 수정된 모델 사용:Full-model:5 yolo layers:https://raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov3_5l.cfg다운로드 가능:https://download.csdn.net/download/Json111/12561626 Tiny-model: 3 yolo layers: https://raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov3-tiny_3l.cfg다운로드 가능:https://download.csdn.net/download/Json111/12561628 YOLOV4: 3 yolo layers: https://raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov4-custom.cfg다운로드 가능:https://download.csdn.net/download/Json111/12561631
  • 만약에 당신이 훈련한 모델이 좌우를 단독 클래스(좌우손, 좌우회전 도로 표지 등)로 구분한다면 회전 데이터 강화를 금지하고 [net]에flip=0을 추가하여 회전 데이터 강화를 금지한다.
  • 통용 규칙: 훈련집은 검측할 사이즈가 비슷한 목표를 포함해야 한다:
  • train_network_width * train_obj_width / train_image_width ~= detection_network_width * detection_obj_width / detection_image_width
    
    train_network_height * train_obj_height / train_image_height ~= detection_network_height * detection_obj_height / detection_image_height
    

    즉, 테스트 데이터 집합의 모든 대상에 대해train 데이터 집합은 최소한 하나의 대상이 같은classid와 같은 상대적인 크기를 가져야 한다.
    object width in percent from Training dataset ~= object width in percent from Test dataset
    

    훈련 집중에 영상 80~90%의 대상만 존재한다면 훈련받은 네트워크에서 영상 1-10%의 대상을 검출할 수 없다는 것이다.
  • 훈련 속도를 높이고(검측 정밀도를 낮출 수 있음) cfg 파일 136줄의 매개 변수를stopbackward=1
  • 로 설정할 수 있다.
  • 각 대상 모형, 측면, 조명도, 비례, 회전과 경사의 각 30도, 신경망의 내부 각도에서 보면 모두 다른 대상이다.따라서 검출할 대상이 많을수록 복잡한 네트워크 모델을 사용해야 한다.
  • 검출된 경계 상자를 더욱 정확하게 하기 위해 [yolo] 층마다 3개의 매개 변수를 추가할 수 있습니다:ignorethresh=.9, iou_normalizer=0.5, iou_loss=giou 및 훈련, 증가[email protected]줄이다[email protected].

  • 훈련하고 나서 뭘 쓸지 테스트를 해볼게요.


    cfg 파일에 (height=608과width=608) 또는 (height=832와width=832) 또는 (32의 배수)를 설정하여 네트워크 해상도를 높이면 정밀도를 높일 수 있고 작은 물건을 검출할 수 있습니다.
  • 네트워크를 다시 훈련할 필요가 없고 416*416 해상도를 겨냥한 weight 파일만 사용하면 된다.
  • 그러나 더 높은 정밀도를 얻으려면 더 높은 해상도인 608608 또는 832832를 사용하여 훈련을 해야 한다. Out of memory 오류가 발생하면 cfg 파일에subdivisions=16, 32 또는 64를 추가해야 한다.
  • 좋은 웹페이지 즐겨찾기