M2Det으로 물체 검출해 보았다!

할 일



  • 전회지난번에서 SSD와 YOLO v3에서 각각 물체 검출을 실시해 보았습니다. 이번에는 M2Det에서 물체 검출을 실시해 보겠습니다.
  • 이번에는 Google 공동 작업에서 실행됩니다
  • .

    개요


  • 실행 환경 준비 (Google Colaboratory에서 실행)
  • Google Drive에서 모델 다운로드
  • 이미지 파일 복사
  • 모델 실행
  • 결과보기

  • 실행 환경


  • google colaboratory
  • pytorch
  • opencv
  • tqdm
  • addict

  • 1. 실행 환경 준비 (Google Colaboratory에서 실행)


  • Google Colaboratory를 열고 런타임 탭의 런타임 유형 변경에서 GPU로 변경합니다.

  • 그런 다음 다음을 수행합니다.
  • 다양한 패키지 설치
  • 리포지토리 복제
  • 셸 실행


  • 실행 환경 준비
    !pip install torch torchvision
    !pip install opencv-python tqdm addict
    !git clone https://github.com/qijiezhao/M2Det.git
    %cd M2Det/
    !sh make.sh
    

    2. Google Drive에서 모델 다운로드



  • GitHub의 README에 학습 된 모델 링크가 포함되어 있습니다 (h tps://d ゔぇ. 오, ぇ. 코 m / 후 / d / 1 m M1 ud d Z w w 2 Dhhc P - Wj 24m - 90L / ぃ w).
  • 다운로드는 여기 코드를 참조했습니다
  • download_file_from_google_drive를 실행하면 명령으로 다운로드 할 수 있습니다
  • import requests
    
    def download_file_from_google_drive(id, destination):
        URL = "https://docs.google.com/uc?export=download"
    
        session = requests.Session()
    
        response = session.get(URL, params = { 'id' : id }, stream = True)
        token = get_confirm_token(response)
    
        if token:
            params = { 'id' : id, 'confirm' : token }
            response = session.get(URL, params = params, stream = True)
    
        save_response_content(response, destination)    
    
    def get_confirm_token(response):
        for key, value in response.cookies.items():
            if key.startswith('download_warning'):
                return value
    
        return None
    
    def save_response_content(response, destination):
        CHUNK_SIZE = 32768
    
        with open(destination, "wb") as f:
            for chunk in response.iter_content(CHUNK_SIZE):
                if chunk: # filter out keep-alive new chunks
                    f.write(chunk)
    
    file_id = '1NM1UDdZnwHwiNDxhcP-nndaWj24m-90L'
    destination = './m2det512_vgg.pth'
    download_file_from_google_drive(file_id, destination)
    

    3. 이미지 파일 복사


  • Google 드라이브 마운트 수행
  • 그런 다음 이미지 파일이 들어있는 폴더에있는 jpg 파일을 M2Det을 실행하는 "imgs"에 모두 복사합니다 (내 환경에서는 My Drive> ML> work 아래에 이미지 파일을 저장합니다. )

  • GoogleDrive 마운트
    from google.colab import drive
    drive.mount('/content/drive')
    

    이미지 파일 복사
    !cp /content/drive/My\ Drive/ML/work/*.jpg ./imgs
    

    4. 모델 실행


  • 모델 실행

  • 모델 실행
    !python demo.py -c=configs/m2det512_vgg.py -m=m2det512_vgg.pth
    

    5. 결과 표시


  • 수행한 결과를 표시합니다
  • 실행 된 이미지 파일은 "XXX_m2det.jpg"와 같이 생성됩니다
  • import cv2
    import matplotlib.pyplot as plt
    
    plt.figure(figsize=(5, 5), dpi=200)
    img = cv2.imread('imgs/herd_of_horses_m2det.jpg')
    show_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    plt.imshow(show_img)
    


  • 다른 이미지도 실시했습니다







  • 소스 코드



    참고


  • YOLO와 SSD보다 빠르고 소문의 M2Det을 시도했습니다.
  • M2Det에서 데모·평가·학습까지 해본다
  • 최신 최강의 물체 검출 기술 M2Det를 움직여 보았다
  • 좋은 웹페이지 즐겨찾기