LeeCreation! Media & Robot  
Front Page
Tag | Location | Media | Guestbook | Admin   
 
'Etc./연구관련'에 해당하는 글(50)
2022.10.30   Installing ROS on WSL2 Ubuntu 20.04LTS on Windows 11
2022.10.30   Installing Tensorflow (GPU) on WSL2 Ubuntu 20.04LTS, Windows 11
2019.03.06   게임과 윤리, 로봇과 윤리. 서로 닮았지만...
2018.08.11   주피터 노트북 Jupyter Notebook 관련 자료
2018.07.25   [번역+약간해설] 케라스(Keras) 모델 만들기: Sequential vs. Functional


Installing ROS on WSL2 Ubuntu 20.04LTS on Windows 11

Assuming that WSL2 Ubuntu 20.04LTS is installed.

 

If you are using WSL2, you can display Ubuntu GUI windows on the host Windows os.

- Refer to the [Existing WSL Install] section.

- https://learn.microsoft.com/en-us/windows/wsl/tutorials/gui-apps#existing-wsl-install

 

Install ROS Neotic

- http://wiki.ros.org/noetic/Installation/Ubuntu

 

Connect WSL2 <-> Windows using VcXSrv

- https://learn.microsoft.com/en-us/windows/wsl/networking



Installing Tensorflow (GPU) on WSL2 Ubuntu 20.04LTS, Windows 11

0) Install WSL2 Ubuntu 20.04LTS

- https://s1gr1d.medium.com/how-to-set-up-linux-on-windows-with-wsl-2-debe2a64d20d

 

How to set up Linux on Windows with WSL 2

WSL allows you to run a Linux environment directly on Windows. In this step-by-step guide, I want to show you how you can set up WSL 2.

s1gr1d.medium.com

- I just followed the following process.

Control Pennel > Programs > Turn Windows features on or off

Check [Windows Subsystem for Linux] and Virtual Machine Platform

Restart the computer

Install Ubuntu 20.04LTS from the Microsoft Store software

 

1) Enabling GPU acceleration on Ubuntu on WSL2 with the NVIDIA CUDA Platform

- https://ubuntu.com/tutorials/enabling-gpu-acceleration-on-ubuntu-on-wsl2-with-the-nvidia-cuda-platform#1-overview

 

Enabling GPU acceleration on Ubuntu on WSL2 with the NVIDIA CUDA Platform | Ubuntu

Ubuntu is an open source software operating system that runs from the desktop, to the cloud, to all your internet connected things.

ubuntu.com

 

2) Install TensorFlow with pip

- https://www.tensorflow.org/install/pip#windows-wsl2_1



게임과 윤리, 로봇과 윤리. 서로 닮았지만...

2016년 1월 15일에 페이스북에 썼던 글.

(링크)


<게임과 윤리, 로봇과 윤리. 서로 닮았지만...>

폭력성을 요소로 한 대표적인 게임 GTA, 개인적으로 이런 게임을 즐기는데 거부감이 있다. 그러나 플레이어가 특수요원이 되어 상대편을 총으로 쏘는 여러 종류의 FPS 게임은 별 거부반응 없이 즐긴다. 그리고 스타크래프트에서 해병 유닛을 사지로 몰아넣거나 상대 유닛을 죽이는 것은? 전혀 윤리적 고민을 하지 않는다. 전쟁 상황에서 살인은 정당방위라는 프레임 안에 속하기 때문인 걸까? 아니면 그냥 게임은 게임일 뿐이기 때문일까?

이러한 게임 속 윤리적 가치에 대한 흥미로운 글이 올라왔다. 해당 글에서는 독자들에게 다음과 같은 질문을 던진다. "게임이 과연 윤리적일 필요가 있을까. 그렇다면 어디까지 윤리적이어야 할까."


게임 속 폭력성과 현실 속 폭력성은 그다지 연관관계가 없다고 받아들여지기도 한다. 그러나 부모의 입장에서 자녀가 '능동적으로' 살인 행위를 해야 하는 게임을 한다면 그다지 마음이 편할 것 같지는 않다. 굳이 부모-자녀 관계에서뿐이랴, 게임 속 상대방이 되어 서로를 죽이며 미소를 짓는 친구의 모습을 볼 때 섬뜩함을 느끼는 것이 그리 이상한 기분인 걸까?

다른 프레임에서 봐야 하는 문제이기도 하지만 게임 속 성폭행은 어떻게 바라봐야 할까? 게임 속에서 마음대로 성폭행을 할 수 있다면, 게임이기 때문에 별다른 제재를 할 필요가 없다고 이야기할 수 있을까? 앞에서 공유해온 글에서는 성폭력뿐 아니라 사생활 침해에 대한 내용까지 언급했다. 이러한 다양한 비윤리적 상황들은 게임 속에서 얼마든지 구현될 수 있다.

그럼에도 불구하고 게임 속 폭력성을 옹호(?)하는 목소리가 있는 것은 1) 게임 속은 엄연히 '가상'현실이기 때문이고, 2) 인간의 폭력성의 모든 책임을 게임에 돌리는 실수를 범하지 않게 하기 위함도 있다.

게임 속 폭력성의 현실 반영 가능성에 대한 판단은 각자의 몫으로 남겨두기로 하고(필자는 무책임하다 ㅋㅋ;;), 이제 좀 더 논의를 확장하여 게임을 '로봇'으로 치환해보자.

로봇산업이 아직 게임산업만큼 대중적으로 발달하지는 않았고 복잡한 윤리문제를 맞닥뜨리고 있는 것은 아니라고 본인은 생각하지만, 그렇다고 마냥 무시할 수는 없는 것이 로봇과 윤리 문제다. (공장 속 자동화 로봇이나 무인자동차에 이르기까지 다양한 종류의 로봇들이 있지만, 이 글에서는 '사람을 닮은' 로봇이라는 범위 안에서 이야기하고자 한다.)

로봇은 게임 속 사람 캐릭터만큼 정교하지도 않고 투박하게 움직인다. 하지만 가상 공간이 아닌 '현실' 공간상에 존재하기 때문일까... 많은 연구자들은 로봇을 사람의 연장선상에 있는 존재로 가정하고, 로봇과 사람의 교류가 사람과 사람 간의 관계처럼 많은 의미를 가져올 것이라는 바탕 하에 연구를 진행하고 있다. 대표적인 연구가 자폐아의 심리치료다. 자폐아와 로봇의 교류를 통해 실제 사람과의 교감능력을 발달시킬 수 있을 것이라는 가정이다. 실제로 어느 정도 효과가 있음이 조금씩 밝혀지고 있다. 얼마 전에 소개했던 연구도 "사람들은 상대가 로봇이더라도 사람을 상대할 때와 비슷한 심리적, 정서적 영향을 받는다."는 내용이었다.


참고로 로봇을 대하는 사람의 폭력성, 윤리적 인식 변화에 대해서 필자가 썼던 다른 글도 공유...


그 수준이 사람과 사람 사이에서 일어나는 영향력만큼은 아니더라도 로봇의 존재가 사람에게 심리적 영향을 주고 있고, 그렇기에 더욱이 로봇을 대상으로 하는 폭력성 오락(드라마 '리얼로봇' 시즌2 1화 참고)이나 섹스 로봇에 대한 개발을 조심해야 한다는 목소리가 커지고 있다. 걷거나 무게중심을 잡는 로봇을 테스트하기 위해 로봇을 발로 차는 영상이 올라오면 "너무한 것 같다"는 반응이 속속 올라온다. 재치 있게 영상 마지막에 "이 영상에서 어떤 로봇도 다치지 않았습니다."라는 메시지까지 띄울 정도다. 얼마 전 '히치봇'이 무차별적으로 파괴되었을 때는 의외로 많은 사람들과 언론이 로봇에 동정심을 표했다.


여전히 로봇은 로봇이지 사람이 아니다. 로봇을 발로 찬다고 경찰서에 잡혀가지는 않는다. 그것이 (아직은) 로봇이 갖는 존재적 한계일지도 모르겠다. 하지만 찬찬히 생각해보면 로봇은 실제 공간 안에서 사람의 행동과 심리적 변화를 유발한다. 그렇다면 로봇의 폭력적, 비윤리적 활용에 대해 대수롭지 않게만 생각하는 날이 얼마나 남았을까. 필자는 그 날이 얼마 남지 않았다고 생각한다.




주피터 노트북 Jupyter Notebook 관련 자료

설치


1) 아나콘다를 설치했다면 이미 깔려있음

2) 그게 아니라면

pip install notebook


(notebook을 포함하여 이것저것 더 깔고 싶다면 메타패키지인 jupyter를 설치한다)

pip install jupyter


실행


터미널을 켜고 작업하고자 하는 폴더로 이동

jupyter notebook

위 명령어로 실행


관련자료

- Jupyter Notebook의 역사

https://youtu.be/VbbXUKigVfs


- 파이선 및 Jupyter Notebook 설치

https://youtu.be/gYzod9NOGMk


- 사용법 (기초)

https://youtu.be/SLPo0o_HArs


원격설정

http://breath91.tistory.com/entry/%EC%A3%BC%ED%94%BC%ED%84%B0-%EB%85%B8%ED%8A%B8%EB%B6%81jupyter-notebook-%EC%84%A4%EC%B9%98%EB%B6%80%ED%84%B0-%EC%82%AC%EC%9A%A9%EB%B2%95-%EC%9B%90%EA%B2%A9-%EC%84%A4%EC%A0%95-%EA%B9%8C%EC%A7%80#recentComments

위 설정에서 open browser를 false로 바꿀 필요는 없어보인다.



[번역+약간해설] 케라스(Keras) 모델 만들기: Sequential vs. Functional

*번역은 검은 글자로, 제 의견은 푸른 글자로 구분지어 놓았습니다. 의역이 다소 포함되어 있습니다.


Keras로 예제 네트워크 구조를 공부해본 사람들이라면, 네트워크를 디자인하는 방법이 두 가지가 있다는 걸 발견할 수 있었을 것이다. 가장 기본적인 방법으로는 sequential 방법을 이용해서 직관적으로 레이어를 층층이 쌓아가는 것일텐데, 이 방법이 갖는 한계점이 있어서, functional 방법으로 네트워크 구조를 디자인하는 방법도 꽤나 사용되고 있었다. 우선, 그 둘 간의 차이가 무엇인지 검색해보던 중 간단한 글이 있어 공부도 할 겸 해당 글에 대한 번역을 시도해보았다.


원글 https://jovianlin.io/keras-models-sequential-vs-functional/


Keras 모델을 만드는데는 sequential 방법과 functional 방법이 있다.


먼저, sequential 방법은 층층이(layer-by-layer) 쌓아 올릴 수 있게 하는 방법으로 대부분 문제를 해결할 수 있다. 하지만, 이 방법은 layer를 공유하는 구조나, 다중 입력/출력을 사용하지는 못한다는 한계가 있다.


대신, functional 방법을 사용하면, layer가 앞/뒤 layer에만 연결된 구조뿐 아니라 훨씬 더 자유자재로 그 구조를 정의하여 사용할 수 있게된다. layer들을 어떤 layer에든지 연결해서 사용할 수 있는 것이다. 그래서 siamese 네트워크와 residual 네트워크 같은 복잡한 구조의 네트워크를 만들 수 있게 된다.


예제 코드를 보면서 확인해보자.

  • Sequential Models


위 예제 코드를 보면, layer들이 각각 하나씩 Sequential object인 model에 추가되고 있음을 알 수 있다. 입력 크기가 1이고 node 개수가 2인 중간 layer를 거쳐서 출력 크기가 1인 네트워크 구조다.


Sequential 모델을 이용하면 대부분의 딥러닝 모델을 만드는데 큰 무리는 없지만, 다음과 같은 한계점이 있다.

  1. 여러 소스의 입력을 받아오지 못한다.
  2. 여러 곳에 사용될 수 있는 다중 출력을 만들지 못한다.
  3. layer를 재사용할 수가 없다.
  • Functional Models

예제 코드에 주석이 한참 달려있어서 주석 해석도 포함하였다



# 입력 정의하기

# Sequential 모델과는 달리, 여기서는 독립적인 "입력" layer를 만들어주어야 한다. 그리고 그 입력 데이터의 shape도 지정해 주어야 한다. 그래서 입력 layer는 tuple 형태의 shape 인수를 넘겨 받아 입력 데이터의 차원을 결정한다. 만약 입력 데이터가 1차원이더라도(1차원의 값이 아니라 1차원 벡터와 같은), 입력 shape에는 batch 크기를 설정하기 위해 한 차원을 더 지정해두어야 한다. 따라서, tuple 형태의 shape은 항상 마지막에 한 차원을 더해서 정의되어 사용된다. 위 코드에서도 shape을 (2)가 아니라 쉼표를 더해 (2,)라고 사용하고 있다.



# Layer 연결하기

# 여기서 layer들은 짝맞춤(pairwise)으로 연결되어진다. 새 layer가 추가될 때, 어떤 입력을 사용할 건지 명확히 지정해주어야 한다. 예제 코드를 보면 괄호를 이용해서 Dense layer 뒤에 어떤 입력 layer가 연결되는지를 지정해주었다.



# 모델 생성

# 모든 layer들이 다 만들어졌다면, 마지막으로 전체 모델을 정의해야 한다. Sequential 방법에서와 했던 것과 같이, 여기서도 summarize, fit, evaluate, prediction을 다 사용할 수 있다. 모델을 만들려면 Keras에서 제공하는 Model()함수에 입력과 출력만 정의해주면 된다.


참고로 앞서 sequential 방법의 예제코드에서는 입력 크기 1, node가 두개인 중간 layer, 출력 크기 1의 네트워크 모델의 예시였는데, fuctional 방법 예제코드에서는 입력 크기 1, 그리고 중간 layer 없이 출력크기 2인 네트워크 모델의 예시다.


Keras의 functional 방법은 훨씬 더 유연한 모델 정의 방법을 제공한다.


특별히, layer들을 공유할 수 있을 뿐만 아니라, 입력과 출력의 모델을 여러개로 정의할 수도 있다. 더 나아가서, ad hoc acyclic network 그래프도 만들 수 있다.


Ad hoc acyclic network를 여기서 굳이 자세하게 다룰 필요는 없을 것 같다. 사실 본인도 잘 모르겠다. 짧게 검색하니 아래 글[1]이 나오는데 대충 이런거구나 알고 넘어가면 될 것 같다. 여러 개가 다중으로 연결된 망 같은 거라고 하면 되려나..? 어쨌든 이러한 구조도 functional 방법으로 디자인이 가능하다는 이야기다.

[1] http://blog.acronym.co.kr/128


그래서 모델들은 layer들의 instance들을 입출력 쌍으로 연결함으로써 만들어지게 되고, Model()함수에 입력과 출력을 파라미터로 지정해줌으로써 구현된다.


Functional 방법에 대해 장점을 이토록 입이 마르도록 이야기하는 걸 보니, 다음 번 공부 자료는 functional API에 대해 더 설명한 [2, 3] 자료를 공부하는 것으로 해야겠다.

[2] https://keras.io/getting-started/functional-api-guide/

[3] https://machinelearningmastery.com/keras-functional-api-deep-learning/




BLOG main image
미디어와 로봇에 관심이 많은 아이 그 영역을 넓혀보려 합니다. '영상 제작'과 '감정 로봇'이 블로그의 주소재입니다. 자유로운 답글 환영합니다!
 Notice
 Category
전체보기 (749)
내가 사랑하는 MJ (0)
아이가 생긴다면 (4)
Media (98)
Robot (447)
타인과 약자를 위한 (81)
Etc. (118)
연구관련 (50)
장비병 (24)
기타 (44)
 TAGS
연구
 Calendar
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
 Recent Entries
 Recent Comments
 Recent Trackbacks
 Archive
 Link Site
LeeCreation! Media & Robot
 Visitor Statistics
Total :
Today :
Yesterday :
rss