data analysis & visualization

nas 마운트하기

ubuntu2020. 3. 23. 00:35

[공유할 폴더 만들기]

mkdir -p /home/pi/생성할 폴더

 

[마운트 하기]
sudo mount -t cifs -o username=유저이름,password=유저비밀번호 //192.168.<네트워크>.<경로>/Public/<폴더> /home/pi/생성한 폴더

 

[확인하기]
df -h

 

[자동 마운트하기]

sudo vi /etc/fstab <네트워크 경로 및 폴더> /home/pi/생성한폴더 cifs username=유저이름,password=유저비밀번호 0 0

 

[언마운트]
sudo umount //IPADRESS/share

 

https://www.raspberrypi.org/downloads/raspbian/

 

Download Raspbian for Raspberry Pi

Raspbian is the Foundation's official supported operating system. You can install it with NOOBS or download the image below.

www.raspberrypi.org

라즈베리파이 설치

  • RASPBIAN STRETCH WITH DESKTOP AND RECOMMENDED SOFTWARE : LibreOffice, Scratch, SonicPi, Thonny, Mathematica 등 포함
  • RASPBIAN STRETCH WITH DESKTOP : Chromium browser, VLC media player, Python 등 포함
  • RASPBIAN STRETCH LITE : DESKTOP GUI 없는 버전

https://www.balena.io/etcher/

 

balena - The complete IoT fleet management platform

Infrastructure and tools to develop, deploy, and manage connected devices at scale. Your first ten devices are always free.

www.balena.io

 

flash 클릭!

 

라즈베리의 초기 id 와 암호는 

id : pi

passwd : raspberry

 

혹시 와이파이가 안되면

Preference>Raspberry Pi Configuration>Localisiation 

에서 GB나 US등도 선택해보기 바람.

 

sudo apt install fonts-nanum fonts-nanum-extra

sudo apt install nabi

sudo apt install im-config

 

혹시 한글이 잘 안되면 아래 링크 참조

https://rpie.tistory.com/1

 

라즈베리파이 라즈비안 OS : 설치 후 한글 폰트 설치 및 한글 입력기 설정 방법

라즈베리파이의 기본 데스크탑 OS인 Raspbian 라즈비안 OS 설치 직후 과정과 한글 폰트 설치 및 한글 입력 사용까지의 간략한 세팅 방법입니다. MicroSD카드에 NOOBS 또는 Raspbian 설치 이미지를 넣는 방법은 라..

rpie.tistory.com

vncserver -geometry 1280x1024

 


CCTV 만들기

 

우선 open cv 를 설치해야 하는데 아래 두 링크를 참고해서 설치하면 된다.

 

https://webnautes.tistory.com/916

 

Raspberry Pi 3에 Extra Module(contrib) 포함하여 OpenCV 4.1.2 설치하는 방법

OpenCV 4.1.2과 opencv_contrib(extra modules)를 컴파일하여 Raspberry Pi 3에 설치하는 방법을 다룹니다. 1. 기존 OpenCV 버전 제거 2. 기존 설치된 패키지 업그레이드 3. OpenCV 컴파일 전 필요한 패키지 설치..

webnautes.tistory.com

https://www.alatortsev.com/2018/09/05/installing-opencv-3-4-3-on-raspberry-pi-3-b/

 

Installing OpenCV 3.4.3 on Raspberry Pi 3 Model B+

Installing OpenCV 3.4.3 on Raspberry Pi 3 model B+, step-by-step.

www.alatortsev.com

아래는 설치에 쓰이는 코드인데 치기 귀찮아서 복사해둔 코드다.

 

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_TBB=OFF \
-D WITH_IPP=OFF \
-D WITH_1394=OFF \
-D BUILD_WITH_DEBUG_INFO=OFF \
-D BUILD_DOCS=OFF \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON \
-D WITH_QT=OFF \
-D WITH_GTK=ON \
-D WITH_OPENGL=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.1.2/modules \
-D WITH_V4L=ON \
-D WITH_FFMPEG=ON \
-D WITH_XINE=ON \
-D ENABLE_PRECOMPILED_HEADERS=OFF \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON ../

 

https://www.youtube.com/watch?v=DIGwweDJCBk

 

https://www.youtube.com/watch?v=WgsZc_wS2qQ

 

 

pip3 install imutils

pip3 install imagezmq

 

client.py

import socket
import time
from imutils.video import VideoStream
import imagezmq

sender = imagezmq.ImageSender(connect_to='tcp://<서버 내부 IP>:5555')

rpi_name = socket.gethostname() # send RPi hostname with each image

picam = VideoStream(usePiCamera=True).start()
time.sleep(2.0)  # allow camera sensor to warm up

while True:  # send images as stream until Ctrl-C
  image = picam.read()
  sender.send_image(rpi_name, image)

 

pip install imagezmq

import imagezmq

 

conda install -c conda-forge imutils

 

server.py

import cv2
import imagezmq

image_hub = imagezmq.ImageHub()

while True:
  rpi_name, image = image_hub.recv_image()
  
  cv2.imshow(rpi_name, image)
  if cv2.waitKey(1) == ord('q'):
    break
  
  image_hub.send_reply(b'OK')

 

아래와 같이 cctv 가 잘 나온다고 하면 이제 사진을 저장해보자.

 

 

 

import cv2
import imagezmq
from time import gmtime, strftime
 
image_hub = imagezmq.ImageHub()

while True:
  rpi_name, image = image_hub.recv_image()

  image2= cv2.resize(image, dsize=(640, 480), interpolation=cv2.INTER_AREA)  
  cv2.imshow(rpi_name, image2)

  imgfile='D:/image/'+strftime("%Y%m%d_%H_%M_%S", gmtime())+'.png'
  cv2.imwrite(imgfile, image2)

  if cv2.waitKey(1) == ord('q'):
    break
  
  image_hub.send_reply(b'OK')


저장한 자료를 바탕으로 관절을 인식하는 코드

import torch
import torchvision
from torchvision import models
import torchvision.transforms as T

import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
from matplotlib.path import Path
import matplotlib.patches as patches

print('pytorch', torch.__version__)
print('torchvision', torchvision.__version__)

IMG_SIZE = 480
THRESHOLD = 0.95


model = models.detection.keypointrcnn_resnet50_fpn(pretrained=True).eval()

import os
d_list='D:/image/'
for ls in os.listdir(d_list):
    print(ls)
    img = Image.open(d_list+ls)
    img = img.resize((IMG_SIZE, int(img.height * IMG_SIZE / img.width)))
    
    plt.figure(figsize=(16, 16))
    #plt.imshow(img)
    
    
    trf = T.Compose([
        T.ToTensor()
    ])
    
    input_img = trf(img)
    out = model([input_img])[0]
    codes = [Path.MOVETO,Path.LINETO,Path.LINETO]    
    fig, ax = plt.subplots(1, figsize=(16, 16))    
    ax.imshow(img)
    
    for box, score, keypoints in zip(out['boxes'], out['scores'], out['keypoints']):
        score = score.detach().numpy()
    
        if score < THRESHOLD:
            continue
    
        box = box.detach().numpy()
        keypoints = keypoints.detach().numpy()[:, :2]
    
        rect = patches.Rectangle((box[0], box[1]), box[2]-box[0], box[3]-box[1], linewidth=2, edgecolor='b', facecolor='none')
        ax.add_patch(rect)
    
        # 17 keypoints
        for k in keypoints:
            circle = patches.Circle((k[0], k[1]), radius=2, facecolor='r')
            ax.add_patch(circle)
        
        # draw path
        # left arm
        path = Path(keypoints[5:10:2], codes)
        line = patches.PathPatch(path, linewidth=2, facecolor='none', edgecolor='r')
        ax.add_patch(line)
        
        # right arm
        path = Path(keypoints[6:11:2], codes)
        line = patches.PathPatch(path, linewidth=2, facecolor='none', edgecolor='r')
        ax.add_patch(line)
        
        # left leg
        path = Path(keypoints[11:16:2], codes)
        line = patches.PathPatch(path, linewidth=2, facecolor='none', edgecolor='r')
        ax.add_patch(line)
        
        # right leg
        path = Path(keypoints[12:17:2], codes)
        line = patches.PathPatch(path, linewidth=2, facecolor='none', edgecolor='r')
        ax.add_patch(line)
    plt.savefig('D:/model_output/'+ls)

 

아래와 같이 나타나면 성공

 

open cv와 결합해서 자동 디텍션은 추후 포스팅하는 걸로 하겠다.

 

 

 

 

 

 

In [22]:
from IPython.core.display import display, HTML

display(HTML("<style> .container{width:90% !important;}</style>"))
 
 
In [21]:
# !sudo apt install fonts-nanum
# !sudo fc-cache -fv
 
?⑦궎吏€ 紐⑸줉???쎈뒗 以묒엯?덈떎... ?꾨즺0%
?섏〈???몃━瑜?留뚮뱶??以묒엯?덈떎       
?곹깭 ?뺣낫瑜??쎈뒗 以묒엯?덈떎... ?꾨즺
fonts-nanum is already the newest version (20170925-1).
?ㅼ쓬 ?⑦궎吏€媛€ ?먮룞?쇰줈 ?ㅼ튂?섏뿀吏€留????댁긽 ?꾩슂?섏? ?딆뒿?덈떎:
  libllvm7
Use 'sudo apt autoremove' to remove it.
0媛??낃렇?덉씠?? 0媛??덈줈 ?ㅼ튂, 0媛??쒓굅 諛?28媛??낃렇?덉씠??????
In [12]:
# 일부러 오류내서 경로 확인
matplotlib.font_manager.findfont('a')

 

Out[12]:
'/root/anaconda3/envs/jupyter/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans.ttf'
In [13]:
# !sudo cp /usr/share/fonts/truetype/nanum/Nanum* /root/anaconda3/envs/jupyter/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf
In [20]:
import matplotlib
import matplotlib.font_manager

[f.name for f in matplotlib.font_manager.fontManager.ttflist if 'Nanum' in f.name]
Out[20]:
['NanumGothic',
 'NanumMyeongjo',
 'NanumGothic',
 'NanumSquare',
 'NanumSquareRound',
 'NanumSquareRound',
 'NanumMyeongjo',
 'NanumSquare',
 'NanumBarunGothic',
 'NanumBarunGothic']
In [15]:
import platform
from matplotlib import font_manager, rc
import matplotlib.pyplot as plt

# 한글 사용시 마이너스 폰트가 깨지는 문제가 발생할 수 있으므로 설정변경
plt.rcParams['axes.unicode_minus'] = False

if platform.system() == 'Windows':
    path = "c:/Windows/Fonts/malgun.ttf"
    font_name = font_manager.FontProperties(fname=path).get_name()
    rc('font', family=font_name)
elif platform.system() == 'Darwin':
    rc('font', family='AppleGothic')
elif platform.system() == 'Linux':
    rc('font', family='NanumBarunGothic')
else:
    print('Unknown system... sorry~~~~~~')
In [19]:
import os
import numpy as np
np.random.seed(0)
x=range(5)
y=10+5*np.random.randn(5)
fig=plt.figure()
ax=fig.add_subplot(111)

ax.set_title('한국어를 지정한 타이틀')
ax.bar(x,y)

plt.show()
 
In [ ]:
 

크롬 설치하기

https://linuxize.com/post/how-to-install-google-chrome-web-browser-on-ubuntu-18-04/

크롬 버전 체크하기

google-chrome --version


크롬드라이버 설치하기


wget -N http://chromedriver.storage.googleapis.com/해당버전/chromedriver_linux64.zip

unzip chromedriver_linux64.zip

chmod +x chromedriver

sudo mv -f chromedriver /usr/local/share/chromedriver

sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver

sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver


python 실행 후 테스트하기


from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options

from time import sleep

# create a new chrome session
options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
driver = webdriver.Chrome(chrome_options=options, executable_path="/home/ducj/crawling/chromedriver")

driver.implicitly_wait(3)
driver.maximize_window()

# Navigate to the application home page

driver.get("http://www.google.com")

driver.get("https://www.google.co.kr/maps")

sleep(0.05)

search=driver.find_element_by_css_selector('input#searchboxinput.tactile-searchbox-input')

search.clear()

search.send_keys('대구대')

search.send_keys(Keys.ENTER)

driver.current_url

driver.close()

openbox설치


sudo apt-get install openbox


openbox --replace


재부팅


reboot


'ubuntu' 카테고리의 다른 글

jupyter-notebook에서 matplotlib 한글폰트 설정  (0) 2020.02.13
파이썬 Selenium linux 환경 구축하기 (ubuntu)  (0) 2019.05.08
주피터 서버 만들기(최종)  (0) 2019.03.25
NAS 설치(삼바, mysql)  (0) 2019.03.15
NEXTCLOUD 설치  (2) 2019.03.14

Nvidia 그래픽카드 드라이버 다운로드


ubuntu-drivers devices

sudo apt install nvidia-driver-390


재부팅

reboot


nvidia-smi


add-apt-repository ppa:graphics-drivers/ppa


sudo apt-get update




cuda 툴킷 9.0 다운로드



(ducj는 제 유저이름입니다.)

cd /home/ducj/다운로드


sudo chmod +x cuda_9.0.176_384.81_linux.run


 ./cuda_9.0.176_384.81_linux.run --override


accept > yes > no > yes > enter > yes > yes > enter


export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"


export CUDA_HOME=/usr/local/cuda


export PATH="$PATH:/usr/local/cuda/bin"


CUDNN 9.0 설치



tar xvzf cudnn-9.0-linux-x64-v7.4.1.5.tgz


sudo cp -P cuda/include/cudnn.h /usr/local/cuda/include


sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64


sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*


cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2



www.anaconda.com에서 파이썬 3.7 다운로드


sudo bash Anaconda3-2018.12-Linux-x86_64.sh

sudo bash Anaconda3-2018.12-Linux-x86_64.sh -u

(난 안되서 sudo bash Anaconda3-2018.12-Linux-x86_64.sh -u 사용)


(yes) 입력


source ~/.bashrc

설치 종료


conda list 로 설치 확인


conda create -n 가상환경이름 python=3.5 anaconda

conda create --prefix /경로/ python=3.5 anaconda

conda env list

conda env remove -n 가상환경이름 --all

source activate 가상환경이름

나중에 해제할 때

conda deactivate 


conda install jupyter notebook

conda install -c conda-forge jupyterlab

conda install -c r r-essentials

conda install -c r rstudio --yes

conda install -c anaconda keras-gpu


tensorflow-gpu 설치


python


from notebook.auth import passwd


passwd()




'sha1:...............'을 출력할 텐데 저장 해두고 조금있다 입력.


 jupyter notebook --generate-config


내부ip 확인하기

sudo apt install net-tools


ifconfig

2번째 줄 inet 옆에 값


주피터 노트북 설정하기


 vi ~/.jupyter/jupyter_notebook_config.py


 c.NotebookApp.ip = '내부ip'


c.NotebookApp.open_browser = False


c.NotebookApp.password = u'sha1:...............'


c.NotebookApp.port=8888


c.NotebookApp.notebook_dir=u'/home/ducj/data'


c=get_config()



주피터 노트북 서버 항상 켜진상태로 두기


sudo jupyter notebook --allow-root 

ctrl+z


bg


disown -h


주피터 노트북 목록보기

sudo jupyter notebook list

주피터노트북 끄기

sudo jupyter notebook stop 8686


gpu 상태 체크

 watch -n 5 nvidia-smi -a --display=utilization