본격적으로 머신러닝을 통해 욕설필터링 우회를 막는 알고리즘을 개발하고자 한다.
궁극적인 목표는 "시@#발" 필터링이며, "아니 미안" -> "아* *안"으로 필터링 되지 않도록 하는 것이다.
목표를 향한 그 첫번째로 어떻게 python을 이용해 기계를 학습시키는 것인지 부딪혀보려고 한다.
여러 환경을 찾아보다가 머신러닝을 학습하기 용이하다는 google colab을 사용하기로 하였고,
예제들을 작성해보고 차근차근 배워갈 생각이다.
https://colab.research.google.com/notebooks/intro.ipynb
Colab을 사용하면 코드 몇 줄만으로 이미지 데이터세트를 가져오고, 이 데이터세트로 이미지 분류기를 학습시키며, 모델을 평가할 수 있습니다. Colab 메모장은 Google 클라우드 서버에서 코드를 실행하므로 사용 중인 컴퓨터 성능과 관계없이 GPU 및 TPU를 포함한 Google 하드웨어 성능을 활용할 수 있습니다. 브라우저만 있으면 사용 가능합니다.
# 이론부터 공부하지 않는 이유
나는 알고리즘을 배우기 위해서 수학 이론부터 시작하는 것은 비효율적이라고 생각한다.
수학 문제를 풀기 위해서 배우는 수학이 아니라, 프로그램을 만들기 위해서 배우는 수학이기 때문이다.
그렇기 때문에 나는 실습 예제들을 작성해보고 해당 코드를 뜯어보는 식으로 학습할 것이다.
선형대수학을 공부하고 머신러닝을 배우겠다가 아니라, 머신러닝을 배우기 위해서 선형대수학을 살펴보겠다.
https://media.fastcampus.co.kr/knowledge/how-beginners-wrong-machine-learning/
# Teachable Machine
https://teachablemachine.withgoogle.com/
구글에서 제공하는 간편한 머신러닝 웹서비스이다.
직접 모델들을 제공하여 학습 시킬 수 있고, 학습결과를 바탕으로 테스트해 볼 수 있다.
얼마나 대단한지 한번 구경해보기 위해서 학습모델로 제공할 이미지를 크롤링했다.
# 결과물 살펴보기
Teachable Machine 사용법을 살펴보면 다들 웹캡을 이용해서 모델학습을 시키는데,
나는 그렇게하지 않아서 정확성이 좀 떨어지는 것 같다.
그래도 일정 비율로 예측한다는 것 자체가 신기하다.
# Source Code
아래와 같이 tensorflow 환경에서 사용할 수 있는 코드 그리고 학습데이터를 제공해준다.
현재까지 GUI로 이미지 업로드만 해본 경험뿐이라 keras라이브러리 활용법을 모르겠다.
import tensorflow.keras
from PIL import Image, ImageOps
import numpy as np
# Disable scientific notation for clarity
np.set_printoptions(suppress=True)
# Load the model
model = tensorflow.keras.models.load_model('keras_model.h5')
# Create the array of the right shape to feed into the keras model
# The 'length' or number of images you can put into the array is
# determined by the first position in the shape tuple, in this case 1.
data = np.ndarray(shape=(1, 224, 224, 3), dtype=np.float32)
# Replace this with the path to your image
image = Image.open('test_photo.jpg')
#resize the image to a 224x224 with the same strategy as in TM2:
#resizing the image to be at least 224x224 and then cropping from the center
size = (224, 224)
image = ImageOps.fit(image, size, Image.ANTIALIAS)
#turn the image into a numpy array
image_array = np.asarray(image)
# display the resized image
image.show()
# Normalize the image
normalized_image_array = (image_array.astype(np.float32) / 127.0) - 1
# Load the image into the array
data[0] = normalized_image_array
# run the inference
prediction = model.predict(data)
print(prediction)
'SecurityFactorial > Chat Filtering (X)' 카테고리의 다른 글
세번째 회의 (0) | 2020.07.29 |
---|---|
#2. 텐서플로우 사용법 익히기 1일차 (0) | 2020.07.29 |
구글 이미지 크롤링 (0) | 2020.07.17 |
두번째 회의 (0) | 2020.07.11 |
채팅 프로그램 분석 2차 회의 (0) | 2020.07.10 |