* 해커스쿨 강의만화 기록_1(유치원 단계) *




17회 해킹캠프에 당첨되었습니다!


해킹켐프를 준비하기 위해 해커스쿨에서 대충 만화정도만 살펴보았는데


상당히 도움이 되었던 것 같습니다.

(카테고리에서 유치원~고등학교 까지입니다.)


오늘은 제가 본 강의만화들을 텍스트로 한번 정리해 보았고, 그것들을 공유하려고 가져왔습니다.

(두서없이 적었습니다. 보기 힘드시겠지만 공유에 목적을 두고 하도록 하겠습니다.)


==============================================================================================


지식의 출처는 해커스쿨입니다. 감사합니다. 문제 될 경우 필히 삭제하도록 하겠습니다.


==============================================================================================


해커스쿨 URL

http://www.hackerschool.org/Sub_Html/HS_Community/index.html

해킹캠프 URL

http://hackingcamp.org/




1. 네트워크 - IP, port, protocol, 방화벽

2. 프로그래밍 - C언어/php,asp(웹해킹)/WinAPI(윈도우즈해킹)

/POSIX C,Shell script,perl(유닉스해킹)/Assembly(기계어)

3. 운영체제 - 윈도우즈,유닉스,리눅스(서버구축,메모리,라이브러리,백도어,스텔스)

4. 수학 - 메모리주소 계산,역공학,암호학


#########################################################################################


- 인터넷,TCP/IP등 네트워크 기초 이론에 대해 학습

- 운영체제(리눅스)의 설치, 운용, 서버 구축 방법

- C언어 학습, POSIX C언어도 학습, 이후 네트워크 프로그래밍

- 해킹 기법 학습, 버퍼 오버플로우, 포맷 스트링, 네트워크 해킹, 웹 해킹 등등

- 어셈블리어 학습 후 바이너리 파일 디버깅 실습, 운영체제의 커널에 대해 학습.


#########################################################################################


[네트워크]

인터넷과 사용자를 연결시켜주는 업체 = ISP(Internet Service Provider)

Ethernet = 데이터 통신 기술의 한 종류, 초당 10Mbps

인터넷 연결 순서:집-전봇대-맨홀(지하로가서)-전화국-ISP(인터넷서비스제공자)

라우터:집에서 나온 패킷이 도착해야 할 곳을 찾아줌.

패킷:데이터와 비슷함

내가 데이터(패킷)를 송출하면 그 데이터(패킷)는 ISP의 라우터에 도달함.(ex. Cisco Router)

내가 송출한 데이터가 수신될 위치를 찾는 것이 라우터의 역할.

라우터는 인터넷 곳곳에 설치되어 있다. 

목적지를 찾는 것 뿐만이 아니라, 목적지까지 가장 빠른 길을 찾는 것도 라우터의 역할.


그럼 패킷이란?

패킷은 실생활의 소포와 비슷한 의미.

소포처럼 받는사람의 주소(=받는이 IP)와 보내는사람의 주소(=보내는이 IP)가 자동으로 기록됨.

이처럼 실제 데이터 앞쪽에 자동으로 붙는 주소같은 정보들을 Header라고 한다.

헤더+실제 데이터 = 1개의 패킷


[기본 네트워크 명령어들]

net send = 상대방 컴퓨터에 메세지를 보내는 명령어

> net send (상대방 IP) ("보낼 메세지") 이었지만...XP sp2 이후로 막힘

> msg * Hi -> 로컬 상의 모든 세션(컴퓨터)에게 Hi 라는 메세지를 보냄.

/V -> 상태 보여줌 / /W -> 응답 보여줌

그래서 보통은 

> msg *(=모든 세션) /V /W Hello!

내 컴퓨터 IP = 127.0.0.1

(Link = http://neoray.org/495#.Wohkla5l9aQ)


ping = 상대방 컴퓨터와 내 컴퓨터가 서로 연결되어 있는지를 확인하는 명령어

ex1. ping (IP Address)

ex2. ping (Domain)


ipconfig(Linux:ifconfig) = 내 컴퓨터의 IP를 보는 명령어


NETSTAT = 내 컴퓨터에 열린 포트를 보는 명령어(ex. netstat -an)


TRACERT = 내 컴퓨터에서 상대방 컴퓨터까지 이어진 경로를 추적하는 명령어

ex. tracert (Domain or IP Address)///(ex. tracert google.com)

여기서 나오는 IP들은 라우터이다.

Posted by NDC :

* 딥러닝 공부한 것 기록_1 * 


학교에서 프로젝트로 공부하고 있는 딥러닝에 관해서

나름대로 공부한 것들을 기록해보았습니다.


정확할지 아닐지는 몰라도 이 글이 도움이 된다면 언제든지 제 지식을 가져다가 쓰시길 바래요!



-------------------------------------------------------------------------------------------------------



데이터 모으는 것부터 하자(데이터 만드는 것이 딥러닝의 시작)

텐서플로우 사용(파이썬)

성능이 안나온다? -> 데이터를 보자(네트워크문제보다 데이터문제가 더 클수도)


cost function 에서 H(X) 는 그래프 선(linear)상의 값, Y 는 실제 값

제곱 : 패널티를 쎄게 줄 수 있다.


min(cost(w)) = 로스(cost)가 가장 작은 가중치(w)를 찾는 것.

=> convex 함수(볼록함수)


행렬 활용해야 한다.


시그모이드 함수와 크로스 엔트로피 코스트

H(x) = Wx일때 H(x)에 시그모이드를 쓰면 

그래프(코스트)가 이상하게 나옴.(convex,볼록 함수가 안나옴. 최소값 찾기가 힘듬)

그래서 크로스 엔트로피 코스트 함수가 나온것.

그런데 여기서 log를 사용한 코스트함수를 쓰는데, if를 빼고 모든 상황에서 사용

가능한 크로스 엔트로피 코스트 함수를 만들어 냈음.


그럼 결과가 2개 초과인 경우에는?

2차원 배열로 사용. 3개? 3X3 w행렬. 4개? 4X4 w행렬.

여기서 x1 x2 x3 피쳐값을 넣어서...(x1 = feature 1)

결과값이 0.2 20 0.7 나왔다? -> 시그모이드 사용 -> 확률로 나와짐.


정리

리니어 리그레션. 가설 H(x) -> 키-몸무게 2개뿐

3개이상? 멀티 리니어 리그레션


시그모이드에서 지수함수가 들어가는데, 그러면 이상한 그래프가 나옴.

이 그래프를 좀더 찾기 쉽게 만들어주려면 지수함수의 반대인 로그함수값이 들어가는데,

이 로그함수값이 포함된 코스트 펑션을 크로스 엔트로피 코스트 펑션이라고 부른

Posted by NDC :

파이썬 Pillow 모듈

2018. 1. 20. 08:48 from Python

* 파이썬 이미지 처리 모듈 Pillow *



컴퓨터를 사용하는 가장 큰 이유는


인간이 할 수 없는 일(사실상 불가능해 보이는 다량의 일)을 손쉽게 해결해주기 때문이라고 생각합니다.


이번에 딥러닝 연구실에서 데이터를 만드는 데 가위바위보 이미지를 각각 2500장씩 만들어야 했습니다.


모든 이미지를 128 x 128로 리사이징 해야 할 뿐만 아니라 파일명까지 팀원들과 맞춰야 했습니다.


여기서 저는 파이썬을 사용해서 손쉽게 해결했습니다.




파이썬에는 Pillow 라는 이미지 처리 모듈이 있습니다.


제가 짠 소스를 예시로 보여드리겠습니다.


===========================================


from PIL import Image


lst_image = []

for i in range(2500): # i = 0~2499

lst_image = lst_image+['Image (' + str(i+1)+').jpg']

#Image (1~2500).jpg


for i in range(2500):

im = Image.open(lst_image[i])

im2 = im.resize((128,128))

str_tmp = ('Image' + str(i+17500) + '.jpg')

im2.save(str_tmp)

lst_image[i] = str_tmp


print("Finish!")


#im = Image.open('1.jpeg')

#im2 = im.resize((128,128))

#im2.save('test2.jpeg')

#print(im2.size)


===========================================


대충 반복문을 돌려서 기존의 파일명을 리스트 변수 하나에 때려넣은 뒤, 


리스트 변수에서 인덱스를 통해 접근하면서 하나씩 리사이징 후 새로운 파일명으로 저장하는 형식의 소스입니다.


Pillow 모듈의 함수를 한번 살펴볼까요?



1. from PIL import Image → Pillow 모듈은 import Pillow 로 하지 않습니다. import PIL 입니다.





2. im = Image.open('1.jpeg') → 1.jpeg 이라는 파일명의 이미지 파일을 엽니다. 


단순히 Image,open(파일명) 이 아니라 그 행위를 im 이라는 변수에 집어넣었습니다. 


모든 이미지 처리는 이미지를 연 후에 행동해야 하기 때문에, 앞으로 이미지 처리 함수들은 모두 im 변수를 통해 접근하게 됩니다. 


(여기서 '열다'의 의미는 '작업대상이다'를 의미합니다.)





3. im2 = im.resize((128,128)) → 리사이즈 해주는 함수입니다. 


2000 x 2000 사이즈의 파일이라도 resize((128,128)) 을 한다면 128 x 128 로 작아집니다.


im.resize((128,128)) 의 의미는 1번에서 나온 1.jpeg 파일을 연 후(작업대상으로 지정한 후), 그 파일을 resize 합니다. 


그리고 resize 한 새로운 파일을 im2 라는 변수에 집어넣었습니다. 


im 의 이미지는 1.jpeg(예를 들어 2000 x 2000) 이고, im2 의 이미지는 128 x 128 크기의 이미지가 되는 것 입니다.





4. im2.save('test2.jpeg') → 파일을 저장하는 함수입니다. 


im2 라는 변수 안에 있는 이미지 (128 x 128 크기의 이미지)를 test2.jpeg 이라는 파일명으로 저장합니다.





5. print(im2.size) → size 함수는 해당 변수의 이미지의 크기를 반환합니다. 


im2 이미지는 128 x 128 이기 때문에 print(im2.size) 함수를 사용할 경우 (128,128) 의 값을 출력해 줍니다.





------------------------------------------------------------------------------------------------------------------------------


이렇게 파이썬 이미지 처리 모듈 Pillow 의 4가지 기본적인 함수에 대해 살펴봤습니다.


>>> 1. Image.open(파일명) → (파일명) 파일을 작업대상으로 지정함.

>>> 2. im2 = im.resize((128,128)) → 작업대상으로 지정한 이미지의 크기를 128 x 128 로 변환 후 im2 변수에 넣음.

>>> 3. im2.save(파일명) → im2 변수 안에 있는 이미지를 (파일명) 이미지파일로 저장함.

>>> 4. print(im2.size) → im2 변수 안에 있는 이미지의 크기를 출력함.(출력은 print 함수가 담당함.)





Posted by NDC :