텐서플로우 튜터리얼 첫페이지에 나오는 소스를 이용해서 숫자 이미지를 불러와 맞추는 테스트를 해보았습니다.



1. MNIST 소스 코드

 

먼저 tensorflow tutorial 페이지를 방문해 봅니다.


https://www.tensorflow.org/tutorials


tensorflow_mnist_keras


이런식으로 우측에 소스가 보입니다.

 

소스를 긁어다가 실행을 해 봅니다.


tensorflow_mnist_keras


tensorflow_mnist_keras


98%의 정확도를 가지고 있습니다.


tensorflow_mnist_keras


작업관리자를 확인해 보니 CPU가 매일 탱자탱자 노는 모습에 울화가 치밀었는데 드디어 오늘 일하는 모습을 보게 되어 기쁩니다.



2. 숫자 이미지

 

이제 숫자 이미지를 준비해야 하는데 따로 준비하기가 귀찮아 MNIST 데이터에 있는 숫자 이미지를 하나 복사해서 사용하기로 했습니다.


tensorflow_mnist_keras



3. 테스트 결과

 

우선 결과 화면을 보면 다음과 같습니다.


tensorflow_mnist_keras


잘 맞추었습니다.



4. 소스 설명

 

4.1 작업 관련 library import


import tensorflow as tf

import matplotlib.pyplot as plt

from PIL import Image


4.2 MNIST 데이터


MNIST 데이터를 불러와서 traintest용으로 분류 합니다.


mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()

x_train, x_test = x_train / 255.0, x_test / 255.0


4.3 tk.keras model


모델을 정의하고 어떤식으로 학습을 진행 할지 컴파일 환경을 설정 합니다.


model = tf.keras.models.Sequential([

  tf.keras.layers.Flatten(),

  tf.keras.layers.Dense(512, activation=tf.nn.relu),

  tf.keras.layers.Dropout(0.2),

  tf.keras.layers.Dense(10, activation=tf.nn.softmax)

])

model.compile(optimizer='adam',

              loss='sparse_categorical_crossentropy',

              metrics=['accuracy']) 


4.4 훈련과 평가


model.fit(x_train, y_train, epochs=5)

score = model.evaluate(x_test, y_test) 


4.5 이미지 로딩


테스트를 진행할 이미지 한개를 불러와 규격에 맞춥니다.

여기서는 이미 규격화된 이미지라 사이즈 조정이 필요 없습니다.


test_num = plt.imread('F:/tensordata/number/58.png')

plt.imshow(test_num, cmap='Greys', interpolation='nearest');

test_num = test_num.reshape((1, 28, 28, 1)) 


4.6 예측

 

이미지를 이용하여 값을 예측하고 출력 합니다.


print('The Answer is ', model.predict_classes(test_num))

plt.show() 



5. 전체 소스


import tensorflow as tf

import matplotlib.pyplot as plt

from PIL import Image

 

mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()

x_train, x_test = x_train / 255.0, x_test / 255.0

 

model = tf.keras.models.Sequential([

  tf.keras.layers.Flatten(),

  tf.keras.layers.Dense(512, activation=tf.nn.relu),

  tf.keras.layers.Dropout(0.2),

  tf.keras.layers.Dense(10, activation=tf.nn.softmax)

])

model.compile(optimizer='adam',

              loss='sparse_categorical_crossentropy',

              metrics=['accuracy'])

 

model.fit(x_train, y_train, epochs=5)

score = model.evaluate(x_test, y_test)

 

############ 추가 소스 ##################

img = Image.open("F:/tensordata/number/58.png")

plt.imshow(img)

plt.show()

 

test_num = plt.imread('F:/tensordata/number/58.png')

 

plt.imshow(test_num, cmap='Greys', interpolation='nearest');

 

test_num = test_num.reshape((1, 28, 28, 1))

 

print('The Answer is ', model.predict_classes(test_num))

plt.show() 


- copy coding -


Keras를 이용하여 모델을 만들어 저장하고 다시 불러오는 코드에서 오류가 발생하였습니다아무래도 설치가 잘못 되었거나 환경 설정에 문제가 있는것 같은데 찾기가 쉽지는 않을것 같아 응급처리를 해서 작업을 하였습니다.

 


1. 오류 내용


오류는 여기에서 발생 했습니다.

loaded_model = model_from_json(loaded_model_json)


GlorotUniform_keras


ValueError : Unknown initializer: GlorotUniform 오류 발생


GlorotUniform_keras

 

좀 다른 형태로 불러와 보았습니다.

model = model_from_json(f.read())

 

역시 이렇게 해도 동일한 부분에 동일한 오류가 발생 합니다.

 


2. 해결 방법


오류 내용을 좀더 읽어 보니 모듈을 저장하는 부분에서 문제가 있는 듯 합니다.

keras가 아닌 tensorflow에 포함된 keras를 사용하는것 같습니다.

 

함수 model_from_json()의 전체 pathtensorflow로 잡아봤습니다.

loaded_model = tf.keras.models.model_from_json(loaded_model_json)

 

오류 없이 잘 작동이 됩니다.



DtsMainProcDreanTong이라는 곳에서 만든 인터넷 익스플로러 광고 팝업을 발생시키는 프로그램으로 알려져 있습니다새창이 계속 한번에 몇 개씩 생성이 되어 인터넷 검색을 방해하고 자원도 갉아먹는 프로그램으로 삭제를 권장 합니다.

 

 

1. DtsMainProc 설치 확인

 

DtsMainProc 프로그램이 설치되어 있는지 확인 하기 위하여 Windows 작업 관리자를 실행 합니다마우스를 모니터 하단 작업 표시줄에 놓고 우측 버튼을 클릭한 후 작업 관리자 시작(K)을 선택 합니다.


DtsMainProc_delete


Windows 작업 관리자에서 프로세스 탭을 클릭 하여 DtsMainProc가 실행 중인지 확인해 봅니다.


DtsMainProc_delete


설치가 잘 되어 있군요.


DtsMainProc_delete


DtsMainProc.exe에 마우스를 대고 우측 버튼을 클릭하면 팝업 메뉴가 나오는데 여기서 파일 위치 열기(O)를 선택 합니다.


DtsMainProc_delete


폴더에 프로그램이 있군요. 그리고 Uninstall 폴더가 보이는데 이곳으로 이동을 해볼까요?


DtsMainProc_delete


Unistatll.exe도 있습니다. 실행해서 삭제를 시도해 봅니다.


DtsMainProc_delete


얘는 쉽게 물러서지 않을 것 같습니다.

 

다른 방법을 찾아야 겠습니다. 다시 Windows 작업 관리자로 돌아갑니다.


DtsMainProc_delete


DtsMainProc.exe를 선택 하고 프로세스 끝내기 버튼을 클릭 합니다.



2. 레지스트리 삭제

 

이제 레지스트리 내용을 지워야 합니다.

시작버튼을 눌러 프로그램 및 파일 검색에서 검색을 합니다.


DtsMainProc_delete


regedit을 입력해서 레지스트리 편집기를 실행 시킵니다.


DtsMainProc_delete


상단 메뉴

편집 > 찾기

를 이용하여 DreamTong 검색 키워드를 입력 하고 검색 합니다


DtsMainProc_delete


DtsMainProc_delete


검색이 되었습니다.


DtsMainProc_delete


키보드 Delete 키를 이용하여 좌측에 있는 DreamTong 폴더를 삭제 합니다.


DtsMainProc_delete


하나를 삭제하는 것으로 끝나는게 아니고 레지스트리에는 여러 곳에 등록이 되기 때문에 F3키를 눌러 다른 곳에 있는 DreanTong 관련 등록 정보를 찾아 줍니다.


DtsMainProc_delete


이런식으로 동일한 방법을 이용하여 찾기와 삭제를 반복 해줍니다.


DtsMainProc_delete


F3를 이용해 지우다 보면 Windows Internet Explorer Smart Service가 나오는데 이것도 지워버립니다.


DtsMainProc_delete


이런식으로 디렉토리 또는 키값들을 삭제하고 F3(찾기)에서 검색이 안될 때 까지 진행합니다.

 


3. 폴더 삭제


레지스트리 작업이 완료 되면 DtsMainProc.exe파일과 uninstall 폴더가 있었던 DreamTong 폴더를 삭제해 줍니다.


DtsMainProc_delete


다른 광고 프로그램이 없다면 이제 팝업 광고도 사라졌을 것 입니다.



크롬을 사용 중 새창이 열리면서 광고가 나타나기 시작합니다.

구글 크롬에서 알려주고 있는 광고 차단방법을 사용해서 치료를 해보았습니다.

 

 

 

1. 멀웨어 설치 확인

 

광고 팝업을 만드는 악성 프로그램이 설치되어 있는지 확인을 합니다.

오른쪽 상단에서

점 세개 아이콘(더보기) > 설정

을 클릭합니다.


google_chrome_멀웨어팝업광고


설정 창으로 이동을 합니다.

여기에는 아무런 메뉴가 보이지 않습니다. 


google_chrome_멀웨어팝업광고


좌측 상단 줄 세개 아이콘을 클릭 해야 메뉴가 보입니다.

 

좌측에 메뉴가 나타나는데 여기에서 하단에 있는 고급을 클릭합니다.


google_chrome_멀웨어팝업광고


고급 메뉴 하단에 새로운 하부 메뉴가 보입니다


google_chrome_멀웨어팝업광고


고급메뉴 하단의 재설정 및 정리하기를 선택 합니다.


google_chrome_멀웨어팝업광고


컴퓨터 정리를 클릭합니다.

 

Google에 세부정보 신고가 활성화 되어 있으면 구글에 작업내용이 제공되는 것인데 저는 비활성화로 해놓고 작업을 진행 합니다.


google_chrome_멀웨어팝업광고


찾기를 클릭해서 멀웨어를 검색합니다.


google_chrome_멀웨어팝업광고


열심히 유해한 소프트웨어를 확인 합니다.


google_chrome_멀웨어팝업광고


이런

 

자꾸 광고 팝업이 나타나는데 왜 발견 못하냐

 

이 방법은 아닌가 봅니다.

 

만약 유해한 소프트웨어가 발견 되면 치 않는 소프트웨어를 삭제하라는 메시지가 표시되고 삭제를 클릭하면 된다는데 아쉽게도 볼 수가 없네요.



2. 크롬 브라우저 초기화

 

팝업 광고 차단 두번째 방법은 크롬을 초기화 시키는 것인데 만약 크롬을 편하게 사용하려고 설정 값을 변경한 부분이 있다면 이것도 초기화 되기 때문에 한번 생각하고 진행 합니다.

 

 

진행 방법은 1번 멀웨어 검색과 동일한 순서로 진행하다 [재설정 및 정리하기]에서 설정을 기본값으로 복원을 클릭합니다.


google_chrome_설정초기화


설정 초기화 창이 나타났습니다.


google_chrome_설정초기화


Chrome 개선에 참여는 본인의 의사를 반영해 주시고 설정 초기화 버튼을 클릭합니다.


google_chrome_설정초기화


초기화가 진행 됩니다.

초기화가 완료되면 이전 화면으로 이동을 합니다.

 

저는 이 두번째 방법이 효과가 있었습니다.


3. 기타


다른사람의 요청으로 광고 팝업을 해결해 보려고 위에 있는 두가지 방법을 다 사용해 보고 백신을 다시 깔아서 바이러스, 멀웨어를 찾아보고 마지막으로 크롬을 다시 설치해도 해결이 되지 않는 경우가 있었습니다.

원인은 인터넷에서 비정상 다운로드를 이용하거나 코덱을 설치하면서 사용자 모르게 광고 프로그램이 설치된 경우로 이런 경우는 광고가 시작된 날짜를 생각하여 날짜별 프로그램 설치 탐색을 이용하여 삭제해야 합니다.


- copy coding -


1···91929394959697···118

+ Recent posts