이는 Python 3, Keras 및 TensorFlow에서 CNN을 실제로 구현한 것입니다. 우리는 나중에 CNN 모델을 훈련하고 저장하는 train.py
의 CNN 모델에 공급되는 인공물 없는 숫자 이미지를 생성하는 Preprocess.py
사용하여 2가지 주요 단계로 작업합니다.
이 보안 문자 솔버는 METU의 학생 포털 보안 문자 보호(https://student.metu.edu.tr/)를 우회하기 위해 metu-NTE-scraper에서 사용되도록 개발되었으며 현재 사용되고 있습니다. 하지만 사용 방법에 설명된 간단한 단계를 통해 애플리케이션에서 사용할 수 있습니다. 부분.
저는 숫자 추출 후 보안 문자 이미지를 분류하기 위해 TensorFlow를 사용하여 CNN을 교육했습니다. 모델은 2개의 컨볼루셔널 레이어와 풀링 레이어, 그 뒤에 오는 완전 연결 레이어로 구성됩니다. 저는 나중에 60000자리 이미지로 분할된 10000개의 보안 문자 이미지로 구성된 데이터 세트에서 모델을 훈련했으며 12000자리 img 테스트 세트에서 99.94%의 테스트 정확도를 달성했습니다.
모델의 학습 및 테스트 정확도는 다음과 같습니다.
참고: 활성화 뉴런 반응의 일부 이미지는 4가지 전처리 단계 아래에서 볼 수 있습니다.
predict.py
Python 프로그램으로 가져옵니다. Import predict
predict_captcha
함수를 호출합니다. filepath="pathtocaptchaimage"
prediction=predict.predict_captcha(filepath)
숫자 추출기와 모델의 이해를 돕기 위해 시각화된 단계를 보여줍니다.
Preprocess.py
는 4단계로 작동하여 마지막에 모델 활성화와 함께 아래에 표시된 숫자 이미지를 생성합니다.
첫 번째 단계에서는 SampleCollecter.py
사용하여 수집된 보안 문자 이미지의 아티팩트를 지웁니다.
원본 이미지 | 아티팩트 제거 후 |
---|---|
나중에 인공물이 없는 이미지가 잘려서 보안 문자의 숫자를 묶습니다.
아티팩트 제거 후 | 잘림 |
---|---|
가중 K-평균은 각 숫자의 중심을 찾는 데 사용됩니다.
잘림 | 중심 |
---|---|
마지막으로 k-평균에서 찾은 중심을 사용하여 숫자 이미지를 만듭니다.
중심 | 숫자 |
---|---|
숫자가 추출된 후. CNN 모델은 보안 문자 이미지를 예측하는 데 사용됩니다. 다음은 CNN의 마지막 컨볼루셔널 레이어에 대해 생성된 활성화 뉴런입니다. 이 이미지들은 마지막 컨볼루션 레이어의 출력을 추출하고 이를 이미지로 시각화하여 생성되었습니다. 아래 활성화 이미지는 2자리 이미지의 마지막 컨벌루션 레이어에 있는 일부 필터의 응답을 보여줍니다.
추출된 숫자 | 활성화 10 | 활성화 18 | 활성화 26 | 활성화 29 |
---|---|---|---|---|
참고: 다른 뉴런 반응을 보려면 활성화를 확인할 수 있습니다.