728x90
반응형

문뜩 파이썬으로 코딩을 하다 파이썬의 전역변수에 대한 의문이 생겼다.

예를 들어 dfs같은 알고리즘 문제를 풀 때 int나 str 객체는 함수 안에서 전역변수로 지정해야 되는 반면

list나, dict는 전역변수로 지정하지 않아도 된다.

 

이 이유가 궁금해서 어떤 차이가 있는지 찾아봤는데 이유는 2가지

mutable, immutable객체의 차이와, 재할당을 하냐 안 하냐 차이인 것 같다.

mutable은 <list, dict, set>, immutable은 <int, str, tuple> 등등이 있는데 

immutable은 = 연산자를 사용하여 값을 변경하려 할 때마다 새로운 객체를 생성하여 재할당하는 반면

mutable은 indexing, slicing등으로, 재할당하지 않고 값을 변경할 수 있다.

 

예를 들어 아래 코드의 실행 결과를 보면 

immutable = False
mutable = [False]

def test():
    immutable = True
    mutable[0] = True
    
test()
print(f"immutable: {immutable}")
print(f"mutable: {mutable}")

아래와 같다.

mutable 객체의 경우에는 객체를 생성하지 않고 바로 수정이 가능하기에 전역변수로 지정을 하지 않아 

로컬 mutable 변수의 값이 수정된다. 하지만 로컬 immutable 변수는 test함수 안에서 수정하려고 해도,

지역변수로써 immutable라는 이름의 객체를 새로 생성하고 할당한 것이기에 로컬 immutable 변수는

변하지가 않는다. 

이렇기에 immutable 객체는 수정하려면 함수안에서 global을 사용해 전역변수로 지정을 해줘야 한다.

 

하지만 만약 아래와 코드와 같이 mutable 객체를 재할당 해야 되는 경우라면

여기서는 mutable 객체도 전역변수로 지정을 해줘야 한다! 

mutable = [False]
global_mutable = [False]

def test():
    global global_mutable
    mutable = [True]
    global_mutable = [True]
    
test()
print(f"mutable: {mutable}")
print(f"global_mutable: {global_mutable}")

코드 실행 결과

728x90
반응형
728x90
반응형

딥러닝을 이용한 얼굴인식과 모자이크 처리라는 주제로 졸업작품을 구현했고 우수상을 받았다!

처음에는 그냥 사람 얼굴 데이터를 cnn 모델에 때려 박는 식으로 구현했었는데 데이터가 불균형해서 잘 안됬었다. 

최종적으로는 얼굴에서 랜드마크를 추출해서 거리를 재는 방식으로 얼굴 인식 기능을 구현하였다.

여러모로 데이터의 소중함을 느낄 수 있는 기간이었던 것 같다. 

 

우수상

728x90
반응형
728x90
반응형

어쩌다가 보니 연구실 사람들과 함께 참여하게 되었다. 

간단한 자율주행 자동차를 구현했는데 차선 인식이 제일 중요했던 것 같았다.

그런데 이 차선 인식이라는 게 쉽게 하려면 정말 간단하고, 어렵게 하려면 끝도 없이 어려운 느낌의 문제?였다.

환경의 밝기가 변하지 않거나 눈이나 비 같은 외부적인 요소가 개입되지 않는다고 했을 때 차선 인식을 하는 것은 쉽다. 

하지만 위와 같은 요소들에 따라 도로 상황이 바뀌게 되면 정말 어려운 문제가 된다. 이러한 부분도 그렇고,

자율주행 자동차에 어떤 기술들이 필요하고 어떻게 구현하는지에 대해 알 수 있었어서 재미있었던 것 같다.

장려상

728x90
반응형
728x90
반응형

처음으로 본격적으로 사람들과 무엇을 만들지 고민하고 만들어본 경험이었던 것 같다.

비슷한 경험이 이미 있긴 했지만 이때가 스케일이 훨씬 컸던 것 같다.

팀 구성부터 시작해서 작품 계획, 구현, 마지막 부스 발표까지 많은 깨달음이 있었던 것 같다.

단순히 작품을 만드는 것보다 무엇을 왜 만드는지, 어떻게 만들지 와 같은 계획이 훨씬 더 중요하다는 것을 알았다...

그리고 부스 발표는 상당히 좋은 경험이었던 것 같다.

교수님들이 단체로 지나가시는 것을 보고 처음에는 상당히 겁이 났었는데,

처음만 그랬고 그 후에는 발표하는 게 재미있었다. 

이번 연도도 나가고 싶었지만 전체적으로 그럴 상황이 나오지 않아서 못 나갔다.

졸업하기 전에 더 큰 상을 받아 보고 싶었는데, 조금 아쉽다ㅜ  

판넬
동상
동상

 

728x90
반응형
728x90
반응형

EATED는 인천대학교 전자공학과 학생들이 본인이 선택한 지도교수님과의 상담을 통해 연구주제를 정하고 연구를 하는 프로그램이다. 6월부터 11월까지 진행되고 마지막에는 교수님들 앞에서 연구 성과를 발표하는 방식으로 평가가 진행된다. 19년도부터는 공대에서 주최하게 되었다.

처음에는 주변 사람들이 많이 참여하길래 나도 해야 되는 건가라는 생각에 급하게 참여했었지만, 프로그램 이름(Early Taste, Early Decision -> EATED)에 걸맞게 나의 진로를 결정하게 해준 아주 고마운 프로그램이다.

여름방학 때는 인공지능에 대해 하나도 모를 때라 내가 이걸 공부할 수 있을까? 하는 두려움이 있었다. 사실 지금도 어렵긴 하지만 인공지능 공부를 시작하면서 처음으로 공부에 재미를 느꼈던 것 같다. 유튜브에 있는 sung kim 교수님의 강의를 듣던 중 강화 학습에 대해 알게 되었고 흥미가 생겨 DQN을 이용한 고전게임 강화 학습이라는 주제로 연구를 시작했다. DQN은 알파고를 만든 딥마인드에서 개발한 알고리즘으로 벽돌깨기 같은 고전게임을 인간 수준으로 플레이할 수 있는 인공지능이다.

기존에 있던 알고리즘과 DQN의 차이점을 이해하고, openai gym에 있는 Frozen Lake, Cartpole과 구글에서 찾은 Catch game 환경에 DQN을 사용해 학습을 시키는 방식으로 연구를 진행했고 성과발표회에서 우수상을 받을 수 있었다.

 

728x90
반응형
728x90
반응형

대학 들어오고 처음으로 파이썬을 배웠던 때다. 프로그램 초중반에는 강사님에게 파이썬과 크롤링에 대해 배우고, jasper 라이브러리(지금은 사용되지 않는 것 같다)를 사용해서 나만의 인공지능 비서를 만들었다. 후반에는 팀원들과 여태 배웠던 걸 사용해서 작품을 만들어야 했다. 작품으로는 3가지 센서가 순서대로 인식이 돼야 꺼지는 스마트 알람을 만들었다. 다른 사람들 대부분이 jasper을 사용해서 선풍기같은 전자제품을 키는 기능을 구현했는데, 전부 비슷해서 그런지 정말 단순한 작품을 가지고 장려상을 받을 수 있었던 것 같다.  

2017 EDISON program 장려상

 

728x90
반응형

+ Recent posts