코드가 10줄보다 적은 얼굴 검출 프로그램 만들기
9586 단어 openvinofacedetectionpythonai
![](https://s1.md5.ltd/image/cd890ac096dd5f73ca13db0ba5b77ef6.png)
이야기
지난 몇 달 동안 나는 Intel® distribution of OpenVINO™ Toolkit로 내 손을 더럽히고 이 공구 가방이 얼마나 강한지 설명하기 위해 몇 가지 프로젝트를 해 왔다.
이 글에서, 나는 내가 지난 몇 주 동안 줄곧 일하고 있는 라이브러리 (프로젝트가 진행 중) 를 소개할 것이다.이 라이브러리는 Open VINO 모델이Python에서 실현되는 것을 간소화하고 당신을 위해 더 많은 힘든 일을 하며 당신에게 더 많은 시간을 주고 즐거움을 누릴 수 있습니다. 즉, 적으면 많습니다!!!
10줄 아래에 간단한 얼굴 검사 프로그램을 만들 것입니다. 더 많은 정보는 the How 로 넘어가십시오.
TL;박사
링크 PyVINO-Utils
라이브러리: https://github.com/mmphego/pyvino_utils
스타
방법
이 라이브러리는 하나abstract base class를 실현하여 복잡한 작업을 완성한다. 이 모듈 처리 모델은 불러오기, 입력 처리와 추리(예측)를 처리한다.
Detection, 식별과 위치 추정 모델은 기류 실현을 계승하고 추리 출력을 후처리하고 관심 구역(ROI) 주위 경계 프레임을 그리는 기능을 실현했다.
이것은 응용 프로그램 개발 시간을 일부 줄여 개발자가 사용자 규범을 실현하는 데 더욱 전념하도록 확보한다.
나는 지금 듣기에 수리공이 아니라 판매원 같다...
다니다
코드 연습
다음 코드는 Intel i7 CPU를 사용하여 간단한 얼굴 검사를 실현하고 USB 기반의 NCS2(Intel® Neural Compute Stick 2)를 통해 라즈베리 파이에 쉽게 이식할 수 있습니다.응용 프로그램이 무궁무진하다.
import argparse
from pyvino_utils import InputFeeder
from pyvino_utils.models.detection import face_detection
1-4행에서 필요한 패키지를 가져오기 시작합니다.명령행 매개 변수를 처리하려면 argparse
및 InputFeeder
라이브러리 face_detection
에서 입력 (이미지, 영상 또는cam 흐름) 과 face detection 모듈을 처리해야 합니다.
def arg_parser():
parser = argparse.ArgumentParser(
description="A simple OpenVINO based Face Detection running on CPU."
)
parser.add_argument("-i", "--input", help="Video or image input.", required=True)
parser.add_argument(
"-m", "--model", help="Face detection model name (no extension).", required=True
)
parser.add_argument(
"-b", "--show-bbox", action="store_true", help="Show bounding box."
)
return parser.parse_args()
함수pyvino_utils
는 두 개의 명령행 매개 변수와 선택할 수 있는 arg_parser
매개 변수의 해석을 처리합니다. 이 매개 변수는 출력을 화면에 표시할 수 있도록 합니다.show-bbox
파라미터는 이미지나 영상 경로를 수신하고 네트워크 카메라의 요점을 제시한다.두 번째 필수 매개 변수는 OpenVINOinput
가 있는 위치의 이름과 경로입니다. 확장자는 포함되지 않습니다.패키지를 가져오고 명령행 파라미터를 해석했기 때문에, 우리는 우리의 주요 기능을 계속 실현할 수 있다.
def main(args):
input_feed = InputFeeder(input_feed=args.input)
face_detector = face_detection.FaceDetection(
model_name=args.model, input_feed=input_feed
)
for frame in input_feed.next_frame(progress=False):
inference_results = face_detector.predict(frame, show_bbox=args.show_bbox)
if args.show_bbox:
input_feed.show(frame)
input_feed.close()
if __name__ == "__main__":
args = arg_parser()
main(args)
두 번째 줄: 처리model
, 이것은 class, 주로 입력을 처리하고 나중에 사용할 대상InputFeeder
을 만듭니다.
3-5 줄: 입력과 추리를 처리하는 input_feed
대상을 만듭니다.우리는 classface_detector
라고 하는데, 이것은 face_detection.FaceDetection
및 model_name
대상(이미지/영상/카메라가 입력한 너비와 높이를 결정하는 데 주로 쓰인다)을 필요로 한다.
7-8행: input_feed
프레임을 순환하여 현재 프레임을 가져와 우리의 프레임input_feed
으로 전달합니다.이 함수는 운행 추리를 책임지고 결과는 face_detector.predict
사전에 저장된다.이 사전은 처리된 출력(키/값 쌍)을 면 사각형 경계 상자 좌표 목록으로 포함합니다.inference_results
은args.show_bbox
이면 감지된 면 주위의 사각형이 그려집니다.
9-10 행: True
이 사실인지 확인한 다음 화면에 현재 args.show_bbox
를 표시하고 표면 주위에 녹색 사각형이 있는 경우
열한 줄: 열린 모든 창을 우아하게 정리하고 닫습니다.
14-16줄: 최고급 코드는 frame
블록입니다.if
는 현재 모듈의 이름으로 계산된 내장 변수입니다.그러나 __name__
모듈을 직접 실행한 다음 if
문자열로 설정합니다.1
따라서 이러한 상황에서 운행 블록 아래의 논리는 python main.py
호출되고 결과는 __name__
에 저장된 다음에 위에서 정의한 "__main__"
함수를 호출하여 동시에 전달arg_parser
한다.
클론 저장소 또는 샘플 보기face detection application
튜토리얼
완전한 강좌와 코드 연습을 구경하다.
결론
위의 예는 10줄도 안 되는 코드에서 얼굴 검출 프로그램을 만드는 것이 얼마나 간단한지 설명한다.이것은 args
라이브러리가 우리를 위해 모든 복잡한 작업을 완성했기 때문이다. 왜냐하면 우리는 모듈/클래스를 만들어서 입력과 추리를 처리하고 처리할 필요가 없기 때문이다.
미래의 작업은 Open Model Zoo 에서 모델을 자동으로 다운로드하고 라이브러리를 확장하여 실례 분할과 텍스트 식별 등 다른 기능을 처리하는 것을 포함한다.
참고
이 라이브러리는 하나abstract base class를 실현하여 복잡한 작업을 완성한다. 이 모듈 처리 모델은 불러오기, 입력 처리와 추리(예측)를 처리한다.
Detection, 식별과 위치 추정 모델은 기류 실현을 계승하고 추리 출력을 후처리하고 관심 구역(ROI) 주위 경계 프레임을 그리는 기능을 실현했다.
이것은 응용 프로그램 개발 시간을 일부 줄여 개발자가 사용자 규범을 실현하는 데 더욱 전념하도록 확보한다.
나는 지금 듣기에 수리공이 아니라 판매원 같다...
다니다
코드 연습
다음 코드는 Intel i7 CPU를 사용하여 간단한 얼굴 검사를 실현하고 USB 기반의 NCS2(Intel® Neural Compute Stick 2)를 통해 라즈베리 파이에 쉽게 이식할 수 있습니다.응용 프로그램이 무궁무진하다.
import argparse
from pyvino_utils import InputFeeder
from pyvino_utils.models.detection import face_detection
1-4행에서 필요한 패키지를 가져오기 시작합니다.명령행 매개 변수를 처리하려면 argparse
및 InputFeeder
라이브러리 face_detection
에서 입력 (이미지, 영상 또는cam 흐름) 과 face detection 모듈을 처리해야 합니다.
def arg_parser():
parser = argparse.ArgumentParser(
description="A simple OpenVINO based Face Detection running on CPU."
)
parser.add_argument("-i", "--input", help="Video or image input.", required=True)
parser.add_argument(
"-m", "--model", help="Face detection model name (no extension).", required=True
)
parser.add_argument(
"-b", "--show-bbox", action="store_true", help="Show bounding box."
)
return parser.parse_args()
함수pyvino_utils
는 두 개의 명령행 매개 변수와 선택할 수 있는 arg_parser
매개 변수의 해석을 처리합니다. 이 매개 변수는 출력을 화면에 표시할 수 있도록 합니다.show-bbox
파라미터는 이미지나 영상 경로를 수신하고 네트워크 카메라의 요점을 제시한다.두 번째 필수 매개 변수는 OpenVINOinput
가 있는 위치의 이름과 경로입니다. 확장자는 포함되지 않습니다.패키지를 가져오고 명령행 파라미터를 해석했기 때문에, 우리는 우리의 주요 기능을 계속 실현할 수 있다.
def main(args):
input_feed = InputFeeder(input_feed=args.input)
face_detector = face_detection.FaceDetection(
model_name=args.model, input_feed=input_feed
)
for frame in input_feed.next_frame(progress=False):
inference_results = face_detector.predict(frame, show_bbox=args.show_bbox)
if args.show_bbox:
input_feed.show(frame)
input_feed.close()
if __name__ == "__main__":
args = arg_parser()
main(args)
두 번째 줄: 처리model
, 이것은 class, 주로 입력을 처리하고 나중에 사용할 대상InputFeeder
을 만듭니다.
3-5 줄: 입력과 추리를 처리하는 input_feed
대상을 만듭니다.우리는 classface_detector
라고 하는데, 이것은 face_detection.FaceDetection
및 model_name
대상(이미지/영상/카메라가 입력한 너비와 높이를 결정하는 데 주로 쓰인다)을 필요로 한다.
7-8행: input_feed
프레임을 순환하여 현재 프레임을 가져와 우리의 프레임input_feed
으로 전달합니다.이 함수는 운행 추리를 책임지고 결과는 face_detector.predict
사전에 저장된다.이 사전은 처리된 출력(키/값 쌍)을 면 사각형 경계 상자 좌표 목록으로 포함합니다.inference_results
은args.show_bbox
이면 감지된 면 주위의 사각형이 그려집니다.
9-10 행: True
이 사실인지 확인한 다음 화면에 현재 args.show_bbox
를 표시하고 표면 주위에 녹색 사각형이 있는 경우
열한 줄: 열린 모든 창을 우아하게 정리하고 닫습니다.
14-16줄: 최고급 코드는 frame
블록입니다.if
는 현재 모듈의 이름으로 계산된 내장 변수입니다.그러나 __name__
모듈을 직접 실행한 다음 if
문자열로 설정합니다.1
따라서 이러한 상황에서 운행 블록 아래의 논리는 python main.py
호출되고 결과는 __name__
에 저장된 다음에 위에서 정의한 "__main__"
함수를 호출하여 동시에 전달arg_parser
한다.
클론 저장소 또는 샘플 보기face detection application
튜토리얼
완전한 강좌와 코드 연습을 구경하다.
결론
위의 예는 10줄도 안 되는 코드에서 얼굴 검출 프로그램을 만드는 것이 얼마나 간단한지 설명한다.이것은 args
라이브러리가 우리를 위해 모든 복잡한 작업을 완성했기 때문이다. 왜냐하면 우리는 모듈/클래스를 만들어서 입력과 추리를 처리하고 처리할 필요가 없기 때문이다.
미래의 작업은 Open Model Zoo 에서 모델을 자동으로 다운로드하고 라이브러리를 확장하여 실례 분할과 텍스트 식별 등 다른 기능을 처리하는 것을 포함한다.
참고
import argparse
from pyvino_utils import InputFeeder
from pyvino_utils.models.detection import face_detection
def arg_parser():
parser = argparse.ArgumentParser(
description="A simple OpenVINO based Face Detection running on CPU."
)
parser.add_argument("-i", "--input", help="Video or image input.", required=True)
parser.add_argument(
"-m", "--model", help="Face detection model name (no extension).", required=True
)
parser.add_argument(
"-b", "--show-bbox", action="store_true", help="Show bounding box."
)
return parser.parse_args()
def main(args):
input_feed = InputFeeder(input_feed=args.input)
face_detector = face_detection.FaceDetection(
model_name=args.model, input_feed=input_feed
)
for frame in input_feed.next_frame(progress=False):
inference_results = face_detector.predict(frame, show_bbox=args.show_bbox)
if args.show_bbox:
input_feed.show(frame)
input_feed.close()
if __name__ == "__main__":
args = arg_parser()
main(args)
위의 예는 10줄도 안 되는 코드에서 얼굴 검출 프로그램을 만드는 것이 얼마나 간단한지 설명한다.이것은
args
라이브러리가 우리를 위해 모든 복잡한 작업을 완성했기 때문이다. 왜냐하면 우리는 모듈/클래스를 만들어서 입력과 추리를 처리하고 처리할 필요가 없기 때문이다.미래의 작업은 Open Model Zoo 에서 모델을 자동으로 다운로드하고 라이브러리를 확장하여 실례 분할과 텍스트 식별 등 다른 기능을 처리하는 것을 포함한다.
참고
Reference
이 문제에 관하여(코드가 10줄보다 적은 얼굴 검출 프로그램 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mmphego/create-a-face-detection-application-with-less-than-10-lines-of-code-bjn텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)