- 컴퓨터 비전
- 실시간 물체 감지기로서의 욜로
- 욜로란?
- 욜로 다른 검출기에 비해
- 욜로
- 욜로 응용 프로그램의 예
- 텐서플로우에서 물체 검출기로서의 욜로&케라스
- 텐서플로우&머신러닝에서 케라스 프레임워크
- 사전 훈련 된 욜로를 즉시 실행하고 결과를 얻는 방법
- 사용자 정의 욜로 객체 감지 모델을 훈련하는 방법
- 작업 문
- 데이터세트&주석
- 욜로의 데이터에 주석을 추가하는 방법
- 다른 형식의 데이터를 욜로로 변환하는 방법
- 데이터를 하위 집합으로 분할
- 데이터 생성기 생성
- 설치&모델 교육에 필요한 설정
- 모델 교육
- 전제 조건
- 모델 객체 초기화
- 콜백 정의
- 모델 맞춤
- 유추 모드에서 학습된 사용자 정의 모델
- 결론
- 안톤 모르구 노프
컴퓨터 비전
의 임무로서 우리는 매일 우리의 삶에서 사물을 만난다. 주위를 둘러 봐,당신은 당신을 둘러싼 여러 개체를 찾을 수 있습니다. 인간으로서 당신은 쉽게 감지하고 당신이 보는 각 개체를 식별 할 수 있습니다. 그것은 자연스럽고 많은 노력을 기울이지 않습니다.
그러나 컴퓨터의 경우 개체를 검색하는 작업은 복잡한 솔루션이 필요한 작업입니다. 컴퓨터가”물체를 감지”하는 것은 입력 이미지(또는 비디오의 단일 프레임)를 처리하고 이미지의 물체 및 위치에 대한 정보로 응답하는 것을 의미합니다. 컴퓨터 비전 용어로,우리는이 두 가지 작업 분류 및 지역화 호출합니다. 우리는 컴퓨터가 주어진 이미지에 어떤 종류의 물체가 제시되고 정확히 어디에 위치하는지 말하기를 원합니다.
컴퓨터가 개체를 감지하는 데 도움이되는 여러 솔루션이 개발되었습니다. 오늘,우리는 실시간 속도로 높은 정확도를 달성 욜로라는 최첨단 알고리즘을 탐구하는 것입니다. 특히 텐서플로우/케라스의 사용자 지정 데이터 집합에서 이 알고리즘을 학습하는 방법을 알아보겠습니다.
먼저,욜로가 정확히 무엇이고 무엇이 유명한지 보자.
실시간 물체 감지기로서의 욜로
욜로란?
욜로”당신은 한 번만 봐”에 대한 약어입니다(당신은 심슨 가족에서 한 번만 살고 그것을 혼동하지 마십시오). 이름에서 알 수 있듯이 하나의”모양”으로 이미지의 모든 개체를 찾아 식별 할 수 있습니다.
기계 학습 용어로 모든 객체가 단일 알고리즘 실행을 통해 감지된다고 말할 수 있습니다. 이미지를 그리드로 나누고 그리드의 각 셀에 대한 경계 상자 및 클래스 확률을 예측하여 수행됩니다. 우리는 자동차 감지 욜로를 고용하고 싶은 경우에,여기에 그리드 및 예측 경계 상자의 모습입니다:
위의 이미지에는 필터링 후 얻은 최종 상자 세트 만 포함되어 있습니다. 욜로의 원시 출력에 동일한 객체에 대한 많은 경계 상자가 포함되어 있다는 점은 주목할 가치가 있습니다. 이 상자는 모양과 크기가 다릅니다. 아래 이미지에서 볼 수 있듯이 일부 상자는 대상 개체를 캡처하는 데 더 나은 반면 알고리즘이 제공하는 다른 상자는 성능이 좋지 않습니다.
지정된 개체에 가장 적합한 경계 상자를 선택하기 위해 비 최대 억제 알고리즘이 적용됩니다.
욜로 예측 모든 상자는 그들과 관련된 신뢰 수준이. 이러한 신뢰도 값을 사용하여 낮은 확신도로 예측된 상자를 제거합니다. 일반적으로 이들은 모두 0.5 미만의 신뢰도로 예측되는 상자입니다.
불확실한 경계 상자를 모두 제거하면 신뢰 수준이 높은 상자만 남습니다. 실적이 가장 높은 후보 중에서 가장 좋은 후보 중 하나를 선택하려면 신뢰 수준이 가장 높은 상자를 선택하고 주변의 다른 상자와 교차하는 방법을 계산합니다. 교차로가 특정 임계값 수준보다 높으면 신뢰도가 낮은 경계 상자가 제거됩니다. 선택한 임계값 아래에 교차점이 있는 두 상자를 비교하는 경우 두 상자 모두 최종 예측에 보관됩니다.
욜로 다른 검출기에 비해
욜로의 후드 아래에서 컨볼루션 신경망이 사용되고 있지만,여전히 실시간 성능으로 물체를 검출할 수 있다. 그것은 단일 단계 접근 방식에서 동시에 예측을 할 수있는 욜로의 능력 덕분에 가능합니다.
물체 탐지를위한 다른 느린 알고리즘은 일반적으로 2 단계 접근 방식을 사용합니다:
- 첫 번째 단계에서는 흥미로운 이미지 영역이 선택됩니다.
- 두 번째 단계에서는 각 영역이 컨볼루션 신경망을 사용하여 분류됩니다.
일반적으로 이미지에는 개체가 있는 영역이 많이 있습니다. 이 모든 지역은 분류로 전송됩니다. 분류는 시간이 많이 걸리는 작업이므로 2 단계 객체 감지 접근 방식이 1 단계 감지에 비해 느리게 수행됩니다.
욜로는 이미지의 흥미로운 부분을 선택하지 않습니다. 대신 단일 순방향 순 패스로 전체 이미지에 대한 경계 상자 및 클래스를 예측합니다.
당신은 욜로 다른 인기있는 검출기에 비해 얼마나 빨리 볼 수 아래.
욜로
욜로의 버전은 2015 년 조셉 레드몬에 의해”한 번만 봐:통합된 실시간 물체 감지”라는 제목의 연구 논문에서 처음 소개되었다.
그 이후로 욜로는 많이 진화했습니다. 2016 년 조셉 레드 몬은”욜로 9000:더 좋고 빠르며 강함”에서 두 번째 욜로 버전을 설명했습니다.
두 번째 욜로 업데이트 약 2 년 후,요셉은 또 다른 그물 업그레이드를 내놓았다. “욜 로프 3:점진적 개선”이라는 그의 논문은 많은 컴퓨터 엔지니어의 관심을 끌었으며 기계 학습 커뮤니티에서 인기를 얻었습니다.
2020 년 조셉 레드먼은 컴퓨터 비전 연구를 중단하기로 결정했으나 욜로가 다른 사람들에 의해 개발되는 것을 막지는 못했다. 같은 해,세 엔지니어 팀(알렉세이 보흐 코브 스키,치엔 야오 왕,홍 위안 마크 리아)는 이전보다 더 빠르고 정확한 욜로의 네 번째 버전을 설계했습니다. 그들의 연구 결과는”욜로프 4″에 설명되어 있습니다: 물체 감지의 최적 속도와 정확성”2020 년 4 월 23 일에 발표 된 논문.
두 달 4 버전의 출시 후,독립 개발자,글렌 조처,욜로의 5 버전을 발표했다. 이번에는 연구 논문이 발표되지 않았습니다. 이 문서는 최신판 번역이 아닙니다. 다섯 번째 버전은 네 번째 버전과 거의 동일한 정확도를 가지고 있지만 더 빨랐습니다.
마지막으로 2020 년 7 월에 또 다른 큰 욜로 업데이트가 있습니다. 시앙 롱과 팀은 욜로의 새로운 버전을 내놓았다. 이 욜로의 반복은 3 번째 모델 버전을 기반으로했으며 욜로 버전 4 의 성능을 초과했습니다.
이 튜토리얼에서,우리는 욜로브 4 와 그 구현에 대해 자세히 살펴해야 할 것입니다. 왜 욜로브 4? 세 가지 이유:
- 기계 학습 커뮤니티에서 광범위한 승인을 받았습니다.
- 이 버전은 광범위한 탐지 작업에서 높은 성능을 입증했습니다;
- 욜로브 4 는 텐서플로우와 케라스를 포함한 여러 인기 프레임워크에서 구현되었습니다.
욜로 응용 프로그램의 예
우리는 우리의 사용자 정의 욜로 기반 객체 탐지기를 구현,이 문서의 실제적인 부분으로 이동하기 전에,나는 당신에게 멋진 욜로브 4 구현의 몇 가지를 보여주고 싶습니다,그리고 우리는 우리의 구현을 만들거야.
예측이 얼마나 빠르고 정확한지주의하십시오!
다음은 욜로프 4 가 할 수 있는 첫 번째 인상적인 예로서,다양한 게임 및 영화 장면에서 여러 물체를 감지합니다.
또는 실제 카메라 뷰에서 이 물체 감지 데모를 확인할 수 있습니다.
텐서플로우에서 물체 검출기로서의 욜로&케라스
텐서플로우&머신러닝에서 케라스 프레임워크
프레임 워크는 모든 정보 기술 영역에서 필수적입니다. 기계 학습도 예외는 아닙니다. 우리는 전체 프로그래밍 경험을 단순화하는 데 도움이 기계 학습 시장에서 몇 가지 설립 선수가있다. 이 응용 프로그램을 사용하면 다음과 같은 작업을 수행 할 수 있습니다.
오늘 우리는 텐서 플로우/케라스와 긴밀히 협력 할 것입니다. 당연히,이 두 기계 학습 우주에서 가장 인기있는 프레임 워크 중입니다. 이는 텐서플로우와 케라스가 모두 개발을 위한 풍부한 기능을 제공한다는 사실에 크게 기인한다. 이 두 프레임 워크는 서로 매우 유사합니다. 세부 사항을 너무 많이 파헤 치지 않고 기억해야 할 중요한 점은 케라스가 텐서 플로우 프레임 워크의 래퍼 일 뿐이라는 것입니다.이 문서를 작성하는 시점에서,텐서 플로우/케라스 백엔드에 욜로 구현 808 저장소가 있었다. 욜로 버전 4 는 우리가 구현하려고하는 것입니다. 단지 욜로 버전 4 로 검색을 제한,나는 55 저장소를 얻었다.
조심스럽게 그들 모두를 검색,나는 계속 흥미로운 후보를 발견했다.
이 구현은 태평 제리와 지미 야스 파이어에 의해 개발되었습니다. 이전에 텐서 플로우 및 케라스와 함께 작업 한 경우 매우 간단하고 매우 직관적입니다.
이 구현 작업을 시작하려면 리포지토리를 로컬 컴퓨터에 복제하십시오. 다음으로,나는 어떻게 상자 밖으로 욜로를 사용하는 방법을 보여줍니다,어떻게 사용자 정의 개체 탐지기를 훈련 할 수 있습니다.
사전 훈련 된 욜로를 즉시 실행하고 결과를 얻는 방법
리포지토리의”빠른 시작”섹션을 보면 모델을 실행하고 실행하려면 욜로를 클래스 객체로 가져 와서 모델 가중치를로드하면됩니다.:
from models import Yolov4model = Yolov4(weight_path='yolov4.weights', class_name_path='class_names/coco_classes.txt')
미리 모델 가중치를 수동으로 다운로드해야 합니다. 욜로와 함께 제공되는 모델 가중치 파일은 코코 데이터 세트에서 비롯되며 기허브의 알렉세이브 공식 다크넷 프로젝트 페이지에서 확인할 수 있습니다. 이 링크를 통해 가중치를 직접 다운로드 할 수 있습니다.
직후 모델은 추론 모드에서 이미지로 작업 할 준비가되었습니다. 그냥 예측 사용()당신의 선택의 이미지에 대한 방법. 이 방법은 텐서 플로우 및 케 라스 프레임 워크에 대한 표준입니다.
pred = model.predict('input.jpg')
이 입력 이미지의 경우:
나는 다음 모델 출력을 얻었다:
모델이 만든 예측은 판다 데이터 프레임의 편리한 형태로 반환됩니다. 감지 된 각 개체에 대한 클래스 이름,상자 크기 및 좌표를 가져옵니다:
예측()메서드에는 예측된 경계 상자,각 개체의 텍스트 이름 등으로 이미지를 플롯할지 여부를 지정할 수 있는 여러 매개 변수가 있습니다. 예측()메서드와 함께 제공되는 문서 문자열을 확인하여 사용할 수 있는 내용을 숙지하세요:
당신은 당신의 모델이 엄격하게 코코 데이터 집합으로 제한 개체 유형을 감지 할 수있을 것으로 기대한다. 이 패키지에는 디버깅 심볼이 들어 있습니다.에서 사용할 수있는 파일…/클래스 이름. 거기에 80 개체 유형이 있습니다.
사용자 정의 욜로 객체 감지 모델을 훈련하는 방법
작업 문
개체 검색 모델을 디자인하려면 검색할 개체 유형을 알아야 합니다. 이것은 당신이 당신의 검출기를 생성 할 객체 유형의 제한된 수 있어야합니다. 실제 모델 개발로 이동할 때 객체 유형 목록을 준비하는 것이 좋습니다.
관심 개체가 있는 주석이 달린 데이터세트도 있으면 좋습니다. 이 데이터 세트는 탐지기를 훈련하고 유효성을 검사하는 데 사용됩니다. 아직 그것에 대한 데이터 세트 또는 주석 중 하나가없는 경우,걱정하지 마세요,어디 당신이 그것을 얻을 수있는 방법을 보여 드리겠습니다.
데이터세트&주석
에서 데이터를 가져올 위치 작업할 주석이 달린 데이터세트가 있는 경우 이 부분을 건너뛰고 다음 장으로 이동합니다. 그러나 프로젝트에 데이터 세트가 필요한 경우 이제 데이터를 얻을 수있는 온라인 리소스를 탐색 할 것입니다.
어떤 분야에서 일하고 있는지는 중요하지 않으며,프로젝트에 사용할 수 있는 오픈 소스 데이터 세트가 이미 있을 가능성이 큽니다.
내가 추천하는 첫 번째 리소스는 패션,소매,스포츠,의학 등과 같은 산업에 대한 훌륭한 주석이 달린 데이터 세트를 수집 한 아비 셱 안남라주의”다양한 산업 영역의 50 개 이상의 객체 탐지 데이터 세트”기사입니다.
데이터를 찾는 다른 두 가지 좋은 장소는 다음과 같습니다 paperswithcode.com 그리고 roboflow.com 객체 탐지를 위해 고품질 데이터 세트에 대한 액세스를 제공합니다.
필요한 데이터를 수집하거나 이미 가지고 있는 데이터 집합을 보강하려면 위의 자산을 확인하십시오.
욜로의 데이터에 주석을 추가하는 방법
이미지의 데이터 집합에 주석이 없으면 주석 작업을 직접 수행해야 합니다. 이 수동 작업은 매우 시간이 많이 소요,그래서 당신이 그것을 할 수있는 충분한 시간을 가지고 있는지 확인하십시오.
주석 도구로 여러 옵션을 고려할 수 있습니다. 개인적으로,나는 라벨 림을 사용하는 것이 좋습니다. 그것은 욜로 모델에 대한 직접 출력 주석을 할 수있는 경량 및 사용하기 쉬운 이미지 주석 도구입니다.
다른 형식의 데이터를 욜로로 변환하는 방법
욜로에 대한 주석은 다음과 같습니다. 각 줄의 형식은 다음과 같아야 합니다:
image1.jpg 10,15,345,284,0image2.jpg 100,94,613,814,0 31,420,220,540,1
우리는 각 줄을 분리 할 수 있습니다.:
- 줄의 첫 번째 부분은 이미지의 기준 이름을 지정합니다.이미지 2.2015 년
- 라인의 두 번째 부분은 경계 상자 좌표와 클래스 레이블을 정의합니다. 예를 들어 10,15,345,284,0 개의 상태가 있습니다.
- 주어진 이미지에 하나 이상의 개체가 있는 경우 이미지 기준 이름 옆에 공백으로 나눈 여러 개의 상자와 클래스 레이블이 있습니다.
경계 상자 좌표는 명확한 개념이지만 클래스 레이블을 지정하는 클래스 번호는 어떻습니까? 각 클래스는 다른 클래스의 특정 클래스와 연결되어 있습니다. 예를 들어,사전 훈련 된 욜로는 코코와 함께 제공됩니다.다음과 같이 보이는:
personbicyclecarmotorbikeaeroplanebus...
클래스 파일의 줄 수는 탐지기가 탐지할 클래스 수와 일치해야 합니다. 즉,클래스 파일의 첫 번째 클래스에 대한 숫자는 0 이 됩니다. 클래스 파일의 두 번째 줄에 배치되는 클래스는 숫자 1 을 갖습니다.
이제 욜로의 주석이 어떻게 생겼는지 알 수 있습니다. 사용자 정의 개체 탐지기를 계속 만들려면 지금 두 가지 작업을 수행 할 것을 촉구합니다:
- 당신이 당신의 탐지기를 감지 할 클래스의 궁전 것이다 클래스 파일을 만듭니다. 클래스 순서 문제를 기억하십시오.
- 주석이 있는 파일을 만듭니다. 경우에 당신은 이미 주석을 가지고 있지만,휘발성 유기 화합물 형식(.이 파일을 사용하여 변환 할 수 있습니다.
데이터를 하위 집합으로 분할
항상 그렇듯이 데이터 집합을 교육 및 유효성 검사를 위해 두 개의 하위 집합으로 분할하려고합니다. 그것은 다음과 같이 간단하게 할 수 있습니다:
from utils import read_annotation_lines train_lines, val_lines = read_annotation_lines('../path2annotations/annot.txt', test_size=0.1)
데이터 생성기 생성
데이터가 분할되면 데이터 생성기 초기화를 진행할 수 있습니다. 우리는 각 데이터 파일에 대한 데이터 생성기를해야합니다. 이 경우 학습 하위 집합과 유효성 검사 하위 집합에 대한 생성기가 있습니다.
데이터 생성기를 만드는 방법은 다음과 같습니다:
from utils import DataGenerator FOLDER_PATH = '../dataset/img'class_name_path = '../class_names/bccd_classes.txt' data_gen_train = DataGenerator(train_lines, class_name_path, FOLDER_PATH)data_gen_val = DataGenerator(val_lines, class_name_path, FOLDER_PATH)
모든 것을 요약하면 데이터 분할 및 생성기 생성을위한 전체 코드가 다음과 같습니다:
from utils import read_annotation_lines, DataGenerator train_lines, val_lines = read_annotation_lines('../path2annotations/annot.txt', test_size=0.1) FOLDER_PATH = '../dataset/img'class_name_path = '../class_names/bccd_classes.txt' data_gen_train = DataGenerator(train_lines, class_name_path, FOLDER_PATH)data_gen_val = DataGenerator(val_lines, class_name_path, FOLDER_PATH)
설치&모델 교육에 필요한 설정
자체 개체 탐지기를 만드는 데 필수적인 전제 조건에 대해 이야기해 보겠습니다:
- 당신은 파이썬이 이미 컴퓨터에 설치되어 있어야합니다. 경우에 당신은 그것을 설치해야,나는 아나콘다에 의해이 공식 가이드를 다음과 같은 것이 좋습니다;
- 이 라이브러리는 특정 실행 프로세스에서 불러오거나 실행될 수 있습니다 엔비디아 웹 사이트의 가이드라인을 확인하십시오. 이 도구는 당신의 시스템의 모든 것을 통제하에 관리하는데 도움을 줍니다.;
- 작업 할 독립적 인 가상 환경을 구성 할 수 있습니다. 이 프로젝트에는 텐서 플로우 2 가 설치되어 있어야합니다. 다른 모든 라이브러리는 나중에 소개 될 것입니다;
- 저는 주피터 노트북 개발 환경에서 욜로브 4 모델을 구축하고 훈련하고 있었습니다. 주피터 노트북은 합리적인 옵션처럼 보이지만 원하는 경우 원하는 방식으로 개발을 고려하십시오.
모델 교육
전제 조건
지금까지 다음과 같이 해야 합니다:
- 데이터 집합에 대한 분할;
- 두 개의 데이터 생성기 초기화;
- 클래스가 있는 파일입니다.
모델 객체 초기화
학습 작업을 준비하려면욜로브 4 모델 객체를 초기화합니다. 이 매개 변수를 사용할 수 없습니다. 또한 이 단계에서 클래스 파일에 대한 경로를 제공해야 합니다. 내 프로젝트에서 사용한 초기화 코드는 다음과 같습니다:
class_name_path = 'path2project_folder/model_data/scans_file.txt' model = Yolov4(weight_path=None, class_name_path=class_name_path)
위의 모델 초기화를 통해 기본 매개 변수 집합이 있는 모델 개체를 만들 수 있습니다. 사전에 구성 모델 매개 변수에 값으로 전달하여 모델 구성을 변경하는 것이 좋습니다.
구성 욜로브 4 모델에 대한 매개 변수 집합을 지정합니다.
기본 모델 구성은 좋은 출발점이지만 더 나은 모델 품질을 위해 다른 구성을 실험 할 수 있습니다. 특히 앵커와 이미지 크기를 실험하는 것이 좋습니다. 앵커는 객체를 캡처하는 데 사용할 앵커의 형상을 지정합니다. 앵커의 모양이 객체 모양에 더 잘 맞을수록 모델 성능이 높아집니다.
이미지 크기를 늘리는 것도 경우에 따라 유용할 수 있습니다. 이미지가 높을수록 모델이 추론을 더 오래 수행한다는 것을 명심하십시오.
해왕성을 추적 도구로 사용하려면 다음과 같이 실험 실행도 초기화해야 합니다:
import neptune.new as neptune run = neptune.init(project='projects/my_project', api_token=my_token)
콜백 정의
텐서플로우&콜백을 사용하여 교육 진행 상황을 모니터링하고 검사점을 만들고 교육 매개 변수(예:학습 속도)를 관리할 수 있습니다.
모델을 맞추기 전에 목적에 유용한 콜백을 정의하십시오. 모델 검사점 및 관련 로그를 저장할 경로를 지정해야 합니다. 내 프로젝트 중 하나에서 어떻게 수행했는지:
# defining pathes and callbacks dir4saving = 'path2checkpoint/checkpoints'os.makedirs(dir4saving, exist_ok = True) logdir = 'path4logdir/logs'os.makedirs(logdir, exist_ok = True) name4saving = 'epoch_{epoch:02d}-val_loss-{val_loss:.4f}.hdf5' filepath = os.path.join(dir4saving, name4saving) rLrCallBack = keras.callbacks.ReduceLROnPlateau(monitor = 'val_loss', factor = 0.1, patience = 5, verbose = 1) tbCallBack = keras.callbacks.TensorBoard(log_dir = logdir, histogram_freq = 0, write_graph = False, write_images = False) mcCallBack_loss = keras.callbacks.ModelCheckpoint(filepath, monitor = 'val_loss', verbose = 1, save_best_only = True, save_weights_only = False, mode = 'auto', period = 1)esCallBack = keras.callbacks.EarlyStopping(monitor = 'val_loss', mode = 'min', verbose = 1, patience = 10)
당신은 위의 콜백 세트 텐서 보드가 추적 도구로 사용되는 것을 알 수 있었다. 실험 추적을위한 훨씬 더 고급 도구로 해왕성을 사용하는 것이 좋습니다. 그렇다면 해왕성과의 통합을 활성화하기 위해 다른 콜백을 초기화하는 것을 잊지 마십시오:
from neptune.new.integrations.tensorflow_keras import NeptuneCallback neptune_cbk = NeptuneCallback(run=run, base_namespace='metrics')
모델 맞춤
훈련 작업을 시작하려면 텐서플로우/케라스의 표준 맞춤()방법을 사용하여 모델 개체를 맞추면 됩니다. 내 모델 교육을 시작한 방법은 다음과 같습니다:
model.fit(data_gen_train, initial_epoch=0, epochs=10000, val_data_gen=data_gen_val, callbacks= )
훈련이 시작되면,당신은 표준 진행률 표시 줄을 볼 수 있습니다.
교육 과정은 모든 시대의 끝에 모델을 평가할 것입니다. 내가 초기화하고 피팅하는 동안 전달한 것과 유사한 콜백 세트를 사용하는 경우 손실 감소 측면에서 모델 개선을 보여주는 체크 포인트는 지정된 디렉토리에 저장됩니다.
오류가 발생하지 않고 교육 프로세스가 순조롭게 진행되면 교육 신기원 수가 끝나거나 조기 중지 콜백이 더 이상의 모델 개선을 감지하지 않고 전체 프로세스를 중지하면 교육 작업이 중지됩니다.
어쨌든 여러 모델 검사점으로 끝나야합니다. 우리는 사용 가능한 모든 것 중에서 가장 좋은 것을 선택하고 추론을 위해 그것을 사용하고 싶습니다.
유추 모드에서 학습된 사용자 정의 모델
유추 모드에서 학습된 모델을 실행하는 것은 사전 학습된 모델을 즉시 실행하는 것과 유사합니다.
모델 개체를 초기화합니다. 내 프로젝트의 모델 초기화는 다음과 같습니다:
from models import Yolov4model = Yolov4(weight_path='path2checkpoint/checkpoints/epoch_48-val_loss-0.061.hdf5', class_name_path='path2classes_file/my_yolo_classes.txt')
모델이 초기화되면 선택한 이미지에 대해 예측()방법을 사용하여 예측을 가져옵니다. 요점을 요약하면,모델이 만든 탐지는 판다 데이터 프레임의 편리한 형태로 반환됩니다. 감지 된 각 개체에 대한 클래스 이름,상자 크기 및 좌표를 가져옵니다.
결론
방금 사용자 지정 욜로브 4 개체 탐지기를 만드는 방법을 배웠습니다. 우리는 데이터 수집,주석 및 변환에서 시작하여 종단 간 프로세스를 살펴 보았습니다. 당신은 네 번째 욜로 버전에 대한 충분한 지식을 가지고 어떻게 다른 검출기 다르다.
텐서 플로와 케라스에서 자신의 모델을 훈련하는 것을 막을 수있는 것은 없습니다. 사전 훈련 된 모델을 어디서 얻을 수 있는지,그리고 훈련 작업을 시작하는 방법을 알고 있습니다.
내 곧 기사에서,나는 당신에게 최종 모델의 품질을 개선하는 데 도움이됩니다 모범 사례 및 생활 해킹의 일부를 표시합니다. 우리와 함께 머물!
안톤 모르구 노프
기초 컴퓨터 비전 엔지니어.센터
기계 학습 매니아. 컴퓨터 비전에 대한 열정. 종이 없음-더 많은 나무! 전체 디지털화로 이동하여 종이 복사 제거를 향해 노력!
2021 년 5 월 28 일 업데이트
이 기사는 텐서플로우 객체 탐지에 대한 종단 간 워크플로를 학습하는 시리즈의 두 번째 부분입니다. 첫 번째 기사에서는 처음부터 사용자 지정 개체 탐지기를 만드는 방법을 배웠지 만 진정으로 능숙 해지기 위해주의를 기울여야하는 많은 것들이 여전히 있습니다.
우리는 우리가 이미 겪은 모델 생성 과정만큼이나 중요한 주제를 탐구 할 것입니다. 여기에 우리가 대답 할 질문 중 일부입니다:
- 내 모델을 평가하고 성능을 추정하는 방법은 무엇입니까?
- 모델 성능을 추적하고 여러 실험에서 결과를 비교하는 데 사용할 수 있는 도구는 무엇입니까?
- 추론 모드에서 사용할 모델을 어떻게 내보낼 수 있습니까?
- 모델 성능을 더욱 높일 수 있는 방법이 있습니까?
계속 읽기->