안녕하세요, HELLO
딥러닝 모델을 만들면서 argparse 라이브러리에서 ArgumentPaser 함수로 parser에 add_argument를 통해 인수를 정의할 경우, parse_args()로 저장할 때 에러가 발생할 수 있습니다.
오늘은 parse_args error 해결 방안과 이에 대한 원인에 대해서 확인해 보려고 합니다.
STEP 1. 'parse_args error' 해결 방법
STEP 2. 에러가 발생한 이유 및 해결 방안
STEP 1. 'parse_args error' 해결 방법
'''
SET PARAMETERS
'''
parser = argparse.ArgumentParser(description='CRAFT Text Detection')
parser.add_argument('--trained_model', default='weights/craft_mlt_25k.pth', type=str, help='pretrained model')
parser.add_argument('--text_threshold', default=0.7, type=float, help='text confidence threshold')
parser.add_argument('--low_text', default=0.4, type=float, help='text low-bound score')
parser.add_argument('--link_threshold', default=0.4, type=float, help='link confidence threshold')
parser.add_argument('--cuda', default=True, type=str2bool, help='Use cuda for inference')
parser.add_argument('--canvas_size', default=1280, type=int, help='image size for inference')
parser.add_argument('--mag_ratio', default=1.5, type=float, help='image magnification ratio')
parser.add_argument('--poly', default=False, action='store_true', help='enable polygon type')
parser.add_argument('--show_time', default=False, action='store_true', help='show processing time')
parser.add_argument('--test_folder', default='/data/', type=str, help='folder path to input images')
'''
When use parse_args() error evocked...
'''
args = parser.parse_args()
parser에 add_argument를 통해 인수를 정의할 경우, parse_args()로 저장할 때 아래처럼 아래가 발생할 수 있습니다.
이때, parser.parse_unknown_args로 변경하고, args, unknown으로 반환받을 항목을 추가하면 오류가 해결됩니다.
'''
When use parse_args() error evocked...
'''
args, unknown = parser.parse_known_args()
STEP 2. 에러가 발생한 이유 및 해결 방안
parser.parse_args()를 호출할 때, argparse는 모든 명령줄 인자가 ArgumentParser 객체에 정의되어 있을 것으로 예상합니다. 인식할 수 없는 인수가 있는 경우(즉, ArgumentParser에 정의되지 않은 인수가 있는 경우) argparse는 오류를 발생시킵니다.
예를 들어 다음 코드가 있다고 가정해 보겠습니다:
import argparse
parser = argparse.ArgumentParser(description='An example program.')
parser.add_argument('filename', help='The name of the file to process.')
args = parser.parse_args()
파이썬 argparse ArgumentParser에 --verbose가 정의되지 않았기 때문에 오류가 발생합니다.
이 오류를 방지하려면 parser.parse_args() 대신 parser.parse_known_args()를 사용할 수 있습니다. parse_known_args()는 parse_args()와 동일한 방식으로 작동하지만 인식할 수 없는 인자에 대해 오류를 발생시키는 대신 구문 분석된 인자와 인식할 수 없는 인자의 목록을 포함하는 튜플을 반환합니다.
import argparse
parser = argparse.ArgumentParser(description='An example program.')
parser.add_argument('filename', help='The name of the file to process.')
args, unknown = parser.parse_known_args()
if unknown:
print(f'Warning: Unrecognized arguments: {unknown}')
print(f'Processing file: {args.filename}')
이 예제에서는 parse_known_args()를 사용하여 명령줄 인수를 구문 분석합니다. 인식할 수 없는 인수가 있는 경우에는 경고 메시지를 출력합니다. 그렇지 않으면 처리할 파일 이름을 인쇄합니다.
이를 통해 parse_args()로 발생하는 에러를 해결할 수 있습니다.
■ 마무리
'parse_args error 에러 원인 및 해결 방법'에 대해서 알아봤습니다.
좋아요와 댓글 부탁드리며,
오늘 하루도 즐거운 날 되시길 기도하겠습니다 :)
감사합니다.
'PROGRAMMING > Python' 카테고리의 다른 글
[PYTHON] 클래스(class), init 개념, 정리, 설명 (0) | 2023.03.05 |
---|---|
[PYTORCH] nn.sequential을 활용한 신경망 구현하기 (0) | 2023.03.05 |
[PYTHON] eval 함수, exec 함수 개념, 정리, 설명 (0) | 2023.02.21 |
[PYTHON] string 공백 제거, 없애기 (replace, split, strip, re sub) (0) | 2023.02.15 |
[PYTHON] 데이터프레임을 엑셀(excel)에 서로 다른 시트(sheet)로 저장하기 (0) | 2023.01.31 |
댓글