기술연구

김경현 2019. 7. 25. 06:19

안녕하세요.


기술이 공유되지 않으면 미래의 사회는 지금보다 더욱 폐쇄적이고 불평등한 사회가 될 것입니다. 카피레프트(copyleft)는 개인의 지적재산권을 중시하는 기존의 카피라이트(copyright)에 대항해 사회적 공유를 강조하는 정신이자 운동입니다. DIY연구소는 카피레프트(copyleft) 정신과 4차 산업기술의 확산을 위하여 연구한 내용을 무료로 배포하고 있습니다. 오늘은 김성훈 선생님의 '딥러닝' 오픈소스 동영상 공부후 '3D프린터 로봇제어를 위한 텐서플로 (인공지능)' 자료를 공유니다. 정확한 이유는 알수 없지만 2019년 12월 이후 텐서플로 2.0 버전부터 오프라인 주피터노트북에서는 작동되지 않고 있습니다. 현재는 온라인 서비스인 구글 Colaboratory 에서만 정상 작동되고 있으며 코드와 파일은 구글드라이브에 업로드후 사용해야 합니다. 참고 하세요. 


[1] [2] [3] [4] [5]



 앱인벤터

 앱인벤터로 애니메이션 만들기 (이론)

DIY연구소 김경현 배상 (010 8604 6802)




[교육내용]


☞ 1. 3D프린터 설계제작

☞ 2. 3D프린터 프로그램

☞ 3. 3D프린터 의수제작

☞ 4. Core XY 3D프린터 구동방식과 조립

☞ 5. Prusa i3 3D프린터 조립

☞ 6. Prusa i3 3D프린터 배선

☞ 7. 3D프린터 전기조립 기초

☞ 8. Fun i3 3D프린터 조립

☞ 9. 3D프린터 오픈소스 RepRap

☞ 10. 20만원대 교육용 3D프린터 개발

☞ 11. 3D프린터 전기자전거 개발

☞ 12. 원노즐 듀얼 3D프린터 개발

☞ 13. 3D프린터 모델링 프로그램 라이노(Rhino)

☞ 14. 3D프린터로 나만의 조명 만들기

☞ 15. 3D프린터로 홀로그램 만들기

☞ 16. 3D프린터 설계제작 공유

☞ 17. 3D프린터로 드론 만들

☞ 18. 스크래치 프로그램 (코딩)

☞ 19. 콘크리트 3D프린터 (대형) 개발

☞ 20. 3D프린터로 애완동물 사료 자동급식기 만들기

☞ 21. 3D프린터 아두이노 기초

☞ 22. 3D프린터 안드로이드 앱 프로그래밍 기초

☞ 23. 3D프린터 동물보호 방안

☞ 24. 3D프린터로 인공지능 로봇 만들기

☞ 25. 3D프린터로 에어콘 만들기

☞ 26. 3D프린터로 4차산업 설계제작






[3D프린터 로봇제어를 위한 텐서플로 (인공지능)]


☞ 윈도우즈에 아나콘다, 텐서플로 설치하기


텐서플로(TensorFlow)를 사용하려면 파이썬(Python) 개발 환경이 필요합니다. 파이썬 공식 사이트에서 인스톨파일을 다운받아 설치할 수 있지만 과학 계산을 위한 여러 파이썬 패키지를 따로 설치해야 합니다. 대표적으로는 SciPy, NumPy, scikit-learn 등이 있습니다. 이따금 이런 패키지들을 설치할 때 곤란한 경우가 생길 수 있습니다. 그래서 운영체제 환경에 맞게 패키지들을 미리 준비해 놓은 배포판을 많은 사람들이 선호합니다. 특별히 여러 버전의 파이썬에서 실험을 해야한다거나 Windows 환경이라면 더욱 그렇습니다. 텐서플로 뿐만 아니라 머신러닝과 딥러닝을 위한 언어로서 파이썬을 선택했다면 필요한 여러가지 도구를 손쉽게 한 번에 설치해 줄 것입니다. 


 Google Colaboratory (Jupyter notebook 웹에서 사용)


과학 계산용이거나 범용적으로 가장 인기있는 파이썬 배포판은 아나콘다(Anaconda)입니다. 캐노피(Canopy)나 액티브파이썬(ActivePython) 등도 있지만 아나콘다가 안정적이고 피드백이 빠른 편입니다. 이 글에서는 Windows에 아나콘다와 텐서플로를 설치하고 IPython 쉘과 주피터 노트북(Jupyter Notebook)을 실행하는 과정을 설명하겠습니다. 




[아나콘다 설치] 


브라우저로 아나콘다 다운로드 페이지에 접속합니다. ☞ 아나콘다 버전이 안맞을때



파이썬 2.7과 3.7 버전의 Windows용 설치 파일이 있습니다. Windows용 텐서플로 바이너리 패키지는 현재 파이썬 3.5, 3.6, 3.7버전을 지원하므로 아나콘다의 파이썬 3.7 버전을 설치해야 합니다. 텐서플로의 바이너리는 64비트용이므로 만약 사용하는 컴퓨터가 32비트라면 텐서플로 소스를 직접 컴파일하여 설치해야 합니다. 텐서플로는 공식적으로 Windows에서 직접 소스를 컴파일하는 것을 지원하지 않습니다. 사용하는 Windows 컴퓨터가 32비트인지 64비트인지 확인하려면 여기를 참고하세요. 


텐서플로 1.6버전부터 CPU 버전 바이너리는 AVX(고급 벡터 확장) 명령을 지원하도록 컴파일되어 있습니다. 만약 AVX를 지원하지 않는 CPU를 사용한다면 텐서플로 1.5 버전을 사용해야 합니다(아래 설명). 사용하고 있는 CPU가 AVX 명령을 지원하는지 확인하려면 여기를 참고하세요. 


또는 인텔의 프로세서 유틸리티를 사용할 수도 있습니다. 이 프로그램을 다운받아 설치하고 실행하면 다음과 같은 화면을 볼 수 있습니다. 두 번째 탭에서 Advanced Vector Extensions에 ‘예’라고 표시되면 AVX 명령을 지원하는 CPU입니다. 





이제 AVX를 지원하는 64비트 컴퓨터가 준비되었다고 가정하고 아나콘다의 파이썬 3.7 버전 64비트 인스톨러를 다운받습니다. 




아나콘다 인스톨러 설치는 보통의 Windows 설치 프로그램과 비슷합니다. 설치 과정을 마치면 시작버튼에 아나콘다 폴더가 추가됩니다. 




이 다음부터는 Anaconda Prompt에서 명령행 인터페이스를 사용해서 진행하겠습니다. 





[콘다 및 파이썬 패키지 업데이트]


Anaconda Prompt에 들어오면 conda 패키지 관리자를 사용할 수 있습니다. 먼저 conda 자체를 업데이트합니다.


>conda update -n base conda 


다음엔 설치된 파이썬 패키지를 모두 최신 버전으로 업데이트합니다. 


>conda update --all 



[텐서플로 설치]


아나콘다 배포판에는 텐서플로 최신 버전이 늦게 포함되므로 파이썬 기본 패키지 관리자인 pip로 텐서플로를 설치합니다. 


>pip install tensorflow


※ 만약 AVX를 지원하지 않는 CPU를 사용하고 있다면 다음과 같이 1.5 버전을 설치합니다. 


(※  >pip install tensorflow==1.5.0  )


텐서플로 1.9.0 버전부터는 콘다를 사용하여 텐서플로를 설치하는 것이 권장됩니다. MKL-DNN 라이브러리에 최적화되어 있어서 CPU만을 사용하는 경우 보다 나은 성능을 기대할 수 있습니다.(콘다 패키지는 최신 텐서플로를 지원하지 않을 수 있습니다) 


>conda install tensorflow




설치가 완료된 후 IPython 쉘을 실행하여 tensorflow 모듈을 임포트합니다. 아무런 메세지가 뜨지 않으면 정상적으로 설치에 성공한 것입니다(텐서플로를 임포트할 때 h5py 패키지에서 경고문구가 뜰 수 있습니다. 이는 h5py 패키지의 버그로 향후 버전에서 개선될 것 같습니다. 실제 텐서플로를 사용하는데는 문제가 없으므로 무시하고 진행하면 됩니다). 


>ipython 

   ... 

 In [1]: import tensorflow as tf 

 In [2]




IPython 쉘을 종료하려면 exit 명령을 입력합니다. 데이터 분석을 위해 IPython 쉘도 좋지만 이보다 코드와 실행 결과를 함께 관리할 수 있는 주피터 노트북을 사용하도록 하겠습니다. 주피터 노트북은 로컬 컴퓨터에서 실행되는 웹 서버 프로그램과 비슷합니다. 브라우저로 코드를 실행하면 IPython 커널에게 실행을 명령하고 그 결과를 브라우저로 전달해 줍니다. 주피터 노트북을 실행하려면 아나콘다 프롬프트에서 jupyter notebook 명령을 사용합니다. 


>jupyter notebook 


주피터 노트북이 실행되면 자동으로 기본 브라우저가 실행되어 주피터 노트북 서버에 접속합니다. 로컬 컴퓨터의 주피터 노트북 서버 주소는 http://localhost:8888/ 입니다. 주피터 노트북을 실행한 현재 폴더를 기본 홈 페이지로 설정됩니다. 이 폴더 하위에 파이썬 주피터 노트북을 만들고 실행할 수 있습니다. 



■ Internet Explorer 가 아닌 Chrome 브라우저로 주피터 노트북 서버 접속하는 방법 : ☞ 자료출처


주피터 노트북은 기본적으로 인터넷 익스플로어로 열립니다. 확인까지 간단한 3 단계를 거치면 다른 브라우저 (ex. 크롬)으로 주피터 노트북을 열 수 있습니다. 크롬으로 예를 들어 설명하겠습니다.


1. jupyter_notebook_config.py 만들기.




jupyter notebook --generate-config 코드를 명령창 (cmd) 에 입력하면. cmd 명령 실행 화면에 주피터가 설치되며 자동적으로 '.jupyter' 폴더가 생깁니다. 그 안에 jupyter_notebook_config.py 파일이 생기며 config 파일이 생성됩니다.




2. jupyter_notebook_config.py 파일 수정


1) 먼저 chrome.exe 파일의 위치를 찾습니다. 다른 브라우저의 경우  '브라우저이름.exe' 를 사용합니다. 파일 탐색기에 chrome.exe 를 검색하고 우클릭후 파일위치 열기를 클릭하여 chrome.exe 검색합니다.



2) 그 다음 크롬 파일 위치를 복사합니다. 파일 위치는 화살표 있는 부분을 클릭하면 텍스트로 복사할 수 있습니다. 클릭하고 'ctrl + c (복사 단축키)' 를 하면 chrome.exe 파일 위치가 복사됩니다.



3) 아까 생성했던 jupyter_notebook_config.py 를 수정합니다. jupyter_notebook_config.py 을 열어서 c.NotebookApp.browser 를 'ctrl + f' 이용하여 찾습니다. 



# c.NotebookApp.browser='' 이것을 아래와 같이 바꿉니다


(1) # 제거

(2) '아까 복사한 크롬주소 /chrome.exe %s' 를 대입하며, \ 를 / 로 바꿔주고 수정한 파일을 저장하면 끝입니다.



3. 확인


실행 화면




■ Internet Explorer 화면 : ☞ Jupyter 사용하기




Documents 폴더로 들어가서 새로운 파이썬 노트북을 만들어 보겠습니다. 오른쪽 위에 있는 New 버튼을 누르면 새로운 파이썬 3 주피터 노트북을 생성할 수 있습니다. 




새로운 브라우저 탭이 열리면서 Untitled 노트북이 생성됩니다. 첫번째 코드 셀(cell)에 IPython 쉘에서 했던 것처럼 import tensorflow as tf 를 입력하고 [Shift+엔터] 키를 입력합니다. 아무런 메세지가 나오지 않으면 텐서플로를 주피터 노트북에서 사용할 수 있도록 설치에 성공한 것입니다.




도표를 그려주는 Matplotlib 공식 릴리스도 설치합니다. ☞ Matplotlib 설치


파이썬으로 그래프를 그리려면 matplotlib 라는 모듈을 설치해야 한다. 파이썬 설정이 정상적으로 되어 있으면, 윈도우 콘솔창 (커맨드창, 윈도우키 + R -> cmd ) 을 열고 pip install matplotlib 라고 입력한다.




파이썬 콘솔창에서 matplotlib 를 import 한다.



연습 (1) 로 아래와 같이 입력해 본다.





연습 (2) 로 아래와 같이 입력해 본다.





■ 파이썬에서 csv 파일을 엑셀처럼 사용할수 있는 툴 Pandas 도 설치합니다. ☞ Pandas 설치 


파이썬으로 그래프를 그리려면 matplotlib 라는 모듈을 설치해야 한다. 파이썬 설정이 정상적으로 되어 있으면, 윈도우 콘솔창 (커맨드창, 윈도우키 + R -> cmd ) 을 열고 pip install pandas 라고 입력한다.





Matplotlib 공식 릴리스 설치후 도표 그림의 예 입니다.





■ 아나콘다 최신버전 설치후 텐서플로 에러시 : ☞ 재설치



 3D프린터 로봇제어를 위한 딥러닝 (인공지능)




텐서 플로 (Tensor Flow)의 기본에 대해서 이야기 해보도록 하겠습니다. 텐스 플로라는 것은 기본적으로 구글 (Google)에서 만든 오픈 소스 라이브러리 (Open Source Library) 구요. 그리고 머신 인텔리전스 (Machine Intelligence) 라는 굉장히 멋있는 표현인데요. 머신 인텔리전스를 위한 오픈 소스 라이브러리다 이렇게 우리가 말할 수 있습니다. 




그런데 사실 이 텐서 플로 말고도 이 머신 러닝이나 머신 인텔리전스를 위한 라이브러리 (Library) 들은 상당히 많은데요, 그런데 왜 우리가 이 텐서 플로를 지금 이 시점에서 공부하면 좋을까요. 그 답은 의외로 간단한데요. 어떤 분이 조사를 해봤습니다. 여기 있는 것들이 그 라이브러리들인데요. 컨트리뷰션 (Contribution) 이 얼마나 있는지 그리고 이슈 (Issue) 가 얼마나 있는지 이런 식으로 점수를 매겨 봤더니 텐서 플로가 단연 1등 입니다. 압도적인 1등 이죠. 



다른 방법으로도 우리가 점수를 매겨 봤더니 텐서 플로가 단연 1등 입니다. 그 이야기는 뭔가요. 여러분들이 이제 어떤 라이브러리를 공부하실 때, 많은 사람들이 사용하기 때문에 공부할 수 있는 자료들이 인터넷 (Internet) 에 굉장히 많이 있고, 또 여러분들이 이 텐서 플로로 더 많은 분들이 미리 어떤 모델(Model) 들을 구현하고 그 소스 (Source) 를 공개하고 있기 때문에 소스 코드(Source Code) 를 보면서 공부하실 때 굉장히 많은 자료들이 있다는 거죠. 그래서 지금 시점에서 어떤 라이브러리를 공부하신다면 이 텐서 플로가 가장 좋은 선택이 아닐까 개인적으로 그렇게 생각합니다. 




그럼 좀 더 깊게 들어와서 이 텐서 플로라는 것이 과연 무엇인가. 좀 더 깊게 보면 이런 말로 사실 표현하는 것이 좀 더 멋지다고 봅니다. 우리가 데이터 플로 그래프 (Data Flow Graph) 라는 것을 사용해서 어떤 복잡한 계산 (Numerical Computation) 을 한다. 데이터 플로 그래프를 사용해서 복잡한 계산을 할 수 있는 라이브러리다 이렇게 보시면 됩니다. 그리고 많은 분들이 좋아하시는 파이선 (Python) 이라는 언어를 가지고 이 텐서 플로 프로그램 (Program) 을 할 수 있기 때문에 굉장히 더 많은 인기를 가지고 있다 볼 수 있습니다. 




우리가 데이터 플로 그래프 란 이야기 했는데요 이게 뭘까요. 그래프 (Graph) 라는 것이 여러분들이 잘 아시겠지만 이런 어떤 그 노드 (Node) 와 노드 간을 연결하는 에지 (Edge) 로 구성되어 있는 것을 그래프라고 말하죠. 이런 형태입니다. 노드는 에지로 연결되어 있습니다. 그래서 데이터 플로 그래프라고 하는 것은 이런 노드들이 무엇인가 하면 하나의 오퍼레이션 (Operation) 이에요. 값을 받아서 더하기 한다 또는 값을 받아서 곱하기 한다 등의 오퍼레이션 이라고 볼 수가 있습니다. 그리고 이런 에지는 한마디로 데이터 (Data) 입니다. 예를 들어서 이런 경우에는 데이터 어레이 (Data Array) 라고 볼 수 있겠죠. 또는 어려운 말로 텐서 (Tensor) 라고 할 수 있겠죠. 이 텐서들이 들어와서 플러스 (Plus) 가 되고 또 곱하기 (Multiply) 가 되고 또 그 값이 쭉 나가게 됩니다. 이러한 형태를 거치면서 어떤 연산이 일어나서 내가 원하는 결과물을 얻거나 어떤 작업을 할 수 있는 것이 데이터 플로 그래프구요. 이것을 할 수 있는 것이 바로 텐서 플로입니다. 그 이름도 굉장히 재밌는데요. 여기 이렇게 막 돌아다니는 것이 데이터라고 했죠. 그걸 어려운 말로 텐서 (Tensor) 라고 했는데, 여러분 상상해 보십시오. 여러분들이 만들어 놓은 굉장히 멋진 데이터 플로 그래프 속에서 이 데이터 즉 텐서가 막 돌아다니는 것을 상상할 수가 있겠죠. 이것을 바로 텐서가 막 돌아다니는 점에서 텐서 플로라고 할 수 있겠고, 거기에서 나온 아주 멋진 이름이 바로 이 텐서 플로 (Tensor Flow) 아닌가 생각 됩니다. 




여러분들은 이제 우선 사용하기 위해서는 설치를 하셔야 되는데요. 여러분들이 리눅스 (Linux) 인지 맥 오에스 (Mac OS) 인지 또 윈도우 (Window) 인지에 따라서, 설치 방법은 좀 다를 수 있습니다. 통일적인 것은 여러분들이 이제 pip 라는 파이선 패키지 (Python Package) 관리하는 프로그램 이용해서 인스톨 (install) 이라는 명령어로 간단하게 설치가 가능한데요. 이렇게 텐서 플로 (tensorflow) 란 이름으로 설치가 가능하구요. GPU (Graphics Processing Unit) 를 사용 하시는 경우에는 텐서 플로 지피유 (tensorflow-gpu) 란 이름으로도 설치가 가능합니다. 또 여러분들이 내가 소스 코드 (Source Code)로 직접 한번 설치해보고 싶다, 충분히 가능하구요. 여기서는 베이젤 (bazel) 이라는 빌드 프로그램 (Build Program) 을 사용해서 여러분이 실제로 설치할 수가 있습니다. 모든 방법들은 여러분들이 쉽게 구글 등으로 검색을 하면 굉장히 많은 자료들이 있습니다. 또 여러분들이 원하신다면 이 텐서 플로 코리아 유저 그룹 (Tensor Flow Korea User Group) 에 오셔서 내가 어떤 환경에서 잘 설치가 안 된다고 하면 질문을 주시면 아마 금방 여러분들이 설치 할 수 있는 답변을 얻으실 수 있을 것입니다. 




이렇게 여러분들이 설치가 됐다고 가정하구요. 그러면 내가 설치한 것이 제대로 설치되었는지 그리고 바른 버전 (Version) 의 내가 텐서 플로를 사용하고 있는 것인지 확인하시는 방법은 아주 간단합니다. 파이선 (Python) 을 실행시키고, 커맨드 라인 등을 통해서 텐서 플로를 임포트 (import) 합니다. 이름이 좀 길기 때문에 우리가 보통 tf 라는 가칭을 써서 이렇게 as tf 로 임포트 합니다. 그런 다음에 tf. 으로 텐서 플로를 이용하게 될 겁니다. 그중에 가장 첫 번째 보아야 될 것이 tf. 언더 스코어 (Under Score) 2개 구요. 그리고 버전 (version) 하고 언더 스코어 2개를 하시면 텐서 플로 버전이 얼마인지를 여러분들이 바로 보실 수가 있고 내가 원하는 텐서 플로가 지금 잘 설치되어 있고 사용하고 있는지 확인할 수가 있습니다. 저 같은 경우는 1.0 이라는 버전을 사용하고 있고요.




































사업자 정보 표시
| | | 사업자 등록번호 : -- | TEL : -- | 사이버몰의 이용약관 바로가기