반응형

라즈베리파이에 라즈비안 OS를 설치하면 기본적으로 최신의 python이 설치되어 있다. 여기서는 v 3.11.2가 설치되어 있는 것을 다음과 같이 확인할 수 있다.

 

tensorflow를 설치하기 위해서는 python 버전이 3.10.x 버전을 설치하여야 한다. 따라서 하나의 라즈베리파이에 여러 개의 python 버전이 동작해야 하고, 내가 필요한 python v3.10.x를 사용하기 위해서는 가상환경을 사용하는 것이 좋다.

그래서 아나콘다(Anaconda)를 설치하려고 하였으나 라즈베리파이 5에서는 Anaconda 대체로 Miniforge를 설치하여야 한다고 한다. 따라서 Miniforge를 설치하였다.

1. 시스템 업그레이드

$ sudo apt update && sudo apt upgrade -y     // 우선 패키지 관리자를 최신으로 변경하고 OS 패키지를 최신으로 변경함

2. Miniforge (Anaconda 대체) 설치 - ARM 지원

$ wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh
$ chmod +x Miniforge3-Linux-aarch64.sh
$ ./Miniforge3-Linux-aarch64.sh

  - 설치 후 활성화

    $ source ~/miniforge3/bin/activate

3. 가상환경 생성 및 활성화

$ conda create -n tf python=3.10 -y		// 가상환경 tf를 python 버전 3.10.x로 생성
$ conda activate tf				// 가상환경 tf를 활성화

4. OpenCV 설치

4.1 conda-forge 채널 이용

$ conda install -c conda-forge opencv

 

4.2 pip를 사용하여 설치

$ pip install opencv-python
$ pip install opencv-contrib-python

4.3 필요한 경우 추가 의존성 설치

$ sudo apt update
$ sudo apt install libopencv-dev python3-opencv

4.4 설치 확인

$ python -c "import cv2; print(cv2.__version__)"

반응형

'라즈베리파이' 카테고리의 다른 글

harris.py  (0) 2025.09.20
laplacian.py  (0) 2025.09.20
mediapip.py  (0) 2025.09.19
point_mediapipe.py  (0) 2025.09.19
sobel.py  (0) 2025.09.19
Posted by 세상을 살아가는 사람
,

아나콘다 설치하기

Python 2025. 9. 17. 23:16
반응형

Open CV를 공부하기 위해 한빛 아카데미 출판사에서 펴낸 "컴퓨터 비전과 딥러닝" 책을 공부한다.

프로그램 환경을 설치한다.

[파이썬 설치하기]

  여기서는 아나콘다를 설치하기를 권장하고 있다. 가상환경을 생성하고 그 속에서 수행하는 것을 권장하고 있다.

1. 아나콘다 설치하기

  - 아나콘다 공식 사이트(https://www.anaconda.com)에 접속해 Free Download 메뉴를 선택한다.

    Skip registration을 선택한 Distribution Installers의 Download 버튼을 클릭하여 다운로드 받는다.

    다운로드 받은 파일은 Anaconda3-2025.06-0-Windows-x86_64로 Anaconda Installer이다.

  - 더블 클릭하여 설치한다. (컴퓨터에는 이미 Python 3.10.6이 설치되어 있었다.)

  - Next 버튼을 선택한다.

  - I Agree 버튼을 선택한다.

  - Just Me (recommended)를 선택하고 Next 버튼 클릭한다.

  - 기본으로 설정된 Destination Folder를 변경하지 않고 Next 버튼을 클릭한다.

  - Install 버튼을 클릭한다.

  - Next 버튼을 클릭한다.

  - Next 버튼을 클릭한다.

  - 설치가 완료되었다.

  - 위와 같이 시작 메뉴에 Anaconda (anaconda3) 폴더가 생기고, 그 밑에 여러 메뉴들이 생겼다.

2. 가상 환경 생성하기

  - 위의 시작 메뉴에서 Anaconda Prompt(anaconda)를 선택하면 다음 그림과 같이 기본적으로 만들어진 base라는 가상환경이 나타난다.

  - 새로운 가상 환경 cv를 생성한다.

    + (base) C:\Users\user> conda create -n cv [enter]

    + 설치가 되고 다음과 같이 화면에서 y를 선택한다.

    + cv 가상 환경으로 이동하기 위하여 conda activate cv 명령어를 입력

    + 프롬프트가 (cv)로 변경된 것을 확인할 수 있다.

3. 가상 환경에서 사용할 통합 개발 환경과 라이브러리 설치하기

  - (cv) C:\Users\user> conda install spyder    // cv 가상 환경에 스파이더 설치

  - anaconda의 버전이 새로운 버전이 있어 update를 수행

    + (cv) C:|Users\user> conda update -n base -c defaults conda

  - (cv) C:\Users\user> pip install opencv-python    // cv 가상 환경에 OpenCV 설치

  - (cv) C:\Users\user> pip install tensorflow    // cv 가상 환경에 텐서플로 설치

  - (cv) C:\Users\user> conda list    // cv 가상 환경에 설치된 목록 보기

  - 이제 프로그래밍 환경이 모두 갖추어졌다.

    + 위 그림과 같이 윈도우 시작 메뉴에서 Spyder (cv)를 선택한다.

반응형

'Python' 카테고리의 다른 글

윈도우 환경에서 tensorflow 설치  (0) 2025.10.05
python에서 MySQL 연동하여 테이블 검색  (0) 2023.01.17
python mysql 연동  (0) 2023.01.17
[프로그램 1] 다이어몬드 출력  (0) 2023.01.14
Posted by 세상을 살아가는 사람
,
반응형

프로그램 8-7 DenseNet121로 견종 인식하기
처음 실행하니 CPU로만 실행하여 처리시간이 너무 오래 걸려 Epoch 1/200을 출력하지도 못할 것 같았다.
내 컴퓨터에는 GPU가 내장되어 있으므로 GPU를 사용하기로 하였다.
GPU를 사용하기 위해서는 지금까지 사용하던 tensorflow 버전으로는 동작을 하지 않아 버전을 2.10으로 downgrade 하였으며, 그에 따라 CUDA 버전도 11.8, cuDNN 버전도 8.6.0으로 변경을 하였다.

작업관리자를 띄워서 성능을 보면 위 그림과 같이 GPU 사용률은 1% 밖에 되지 않는데, 전용 GPU/메모리가 3.1/4.0GB로 사용량이 높고, GPU 온도가 92도까지 올라가기도 한다. 처음에는 89도에서 92도까지 변화되어 선풍기로 냉각을 시키고, 에어컨도 틀어주었다. 그랬더니 GPU 온도가 84도까지 떨어져서 그래도 안정된 것 같다.

위 그림을 보면 Epoch를 한번 수행하는데 740초가량이 소요되어 13분 정도 시간이 걸린다. 200/200까지 수행하려면 12분 20초 * 200 = 2467분 = 41시간이 소요될 것으로 예측이 되므로 도저히 어려울 것 같다.
다행히 Epoch가 증가할수록 정확도가 개선되고 있으며 8/200에서는 27.43%까지 올라간 것을 확인할 수가 있었다.
4116/4116 - 735s - loss: 4.1016 - accuracy: 0.1104 - val_loss: 3.5437 - val_accuracy: 0.3027 - 735s/epoch - 179ms/step
Epoch 10/200
4116/4116 - 735s - loss: 3.9944 - accuracy: 0.1271 - val_loss: 3.3806 - val_accuracy: 0.3370 - 735s/epoch - 179ms/step
Epoch 11/200
4116/4116 - 743s - loss: 3.9041 - accuracy: 0.1416 - val_loss: 3.2306 - val_accuracy: 0.3695 - 743s/epoch - 181ms/step
Epoch 12/200
4116/4116 - 734s - loss: 3.8290 - accuracy: 0.1573 - val_loss: 3.0833 - val_accuracy: 0.3953 - 734s/epoch - 178ms/step
Epoch 13/200
4116/4116 - 740s - loss: 3.7360 - accuracy: 0.1676 - val_loss: 2.9486 - val_accuracy: 0.4191 - 740s/epoch - 180ms/step
Epoch 14/200
4116/4116 - 742s - loss: 3.6363 - accuracy: 0.1840 - val_loss: 2.8093 - val_accuracy: 0.4385 - 742s/epoch - 180ms/step
Epoch 15/200
4116/4116 - 743s - loss: 3.5539 - accuracy: 0.2006 - val_loss: 2.6805 - val_accuracy: 0.4546 - 743s/epoch - 180ms/step
Epoch 16/200
4116/4116 - 737s - loss: 3.4811 - accuracy: 0.2161 - val_loss: 2.5578 - val_accuracy: 0.4704 - 737s/epoch - 179ms/step
Epoch 17/200
4116/4116 - 1785s - loss: 3.4074 - accuracy: 0.2256 - val_loss: 2.4417 - val_accuracy: 0.4864 - 1785s/epoch - 434ms/step
Epoch 18/200
4116/4116 - 727s - loss: 3.3276 - accuracy: 0.2354 - val_loss: 2.3386 - val_accuracy: 0.5032 - 727s/epoch - 177ms/step
Epoch 19/200
4116/4116 - 726s - loss: 3.2528 - accuracy: 0.2499 - val_loss: 2.2391 - val_accuracy: 0.5155 - 726s/epoch - 176ms/step
Epoch 20/200
4116/4116 - 729s - loss: 3.1741 - accuracy: 0.2647 - val_loss: 2.1461 - val_accuracy: 0.5338 - 729s/epoch - 177ms/step
Epoch 21/200
4116/4116 - 729s - loss: 3.1237 - accuracy: 0.2739 - val_loss: 2.0590 - val_accuracy: 0.5420 - 729s/epoch - 177ms/step
Epoch 22/200
4116/4116 - 729s - loss: 3.0502 - accuracy: 0.2894 - val_loss: 1.9787 - val_accuracy: 0.5547 - 729s/epoch - 177ms/step
Epoch 23/200
4116/4116 - 732s - loss: 2.9809 - accuracy: 0.2958 - val_loss: 1.9031 - val_accuracy: 0.5695 - 732s/epoch - 178ms/step
Epoch 24/200
4116/4116 - 729s - loss: 2.9353 - accuracy: 0.3001 - val_loss: 1.8319 - val_accuracy: 0.5739 - 729s/epoch - 177ms/step
Epoch 25/200
4116/4116 - 728s - loss: 2.8716 - accuracy: 0.3179 - val_loss: 1.7644 - val_accuracy: 0.5884 - 728s/epoch - 177ms/step
Epoch 26/200
4116/4116 - 851s - loss: 2.8193 - accuracy: 0.3277 - val_loss: 1.7095 - val_accuracy: 0.6018 - 851s/epoch - 207ms/step
Epoch 27/200
4116/4116 - 746s - loss: 2.7599 - accuracy: 0.3376 - val_loss: 1.6465 - val_accuracy: 0.6122 - 746s/epoch - 181ms/step
Epoch 28/200
시간이 너무 많이 걸려 도중에 중단을 하였다. Epoch 27/200까지 정확도가 61.22%가 되었다.

반응형
Posted by 세상을 살아가는 사람
,
반응형

이전 게시글에서 Python에서 pymysql module을 사용하여 MySQL 테이블에 데이터를 삽입하는 방법을 확인하였었다.

이번 게시글에서는 테이블에 저장된 데이터를 검색하여 출력해 본다.

import pymysql

# 변수 선언 부분
conn, cursor = None, None
data1, data2, data3, data4 = "", "", "", ""
row = None

# 메인 코드 부분
conn = pymysql.connect(host='localhost', user='study', password='study', db='studydb', charset='utf8')
cursor = conn.cursor()

cursor.execute("select * from userTable")

print("사용자ID    사용자이름    이메일            출생연도")
print("--------------------------------------------------------")

while (True) :
    row = cursor.fetchone()
    if row == None :
        break;
    data1 = row[0]
    data2 = row[1]
    data3 = row[2]
    data4 = row[3]
    print("%7s   %12s   %15s   %5d" % (data1, data2, data3, data4))

conn.commit()
conn.close()

cmd창에서 수행 결과는 아래와 같다. 역시 idle에서는 실행되지 않았다. 아마 sys.path에 들어있지 않아서 그런 것 같다.

반응형

'Python' 카테고리의 다른 글

윈도우 환경에서 tensorflow 설치  (0) 2025.10.05
아나콘다 설치하기  (0) 2025.09.17
python mysql 연동  (0) 2023.01.17
[프로그램 1] 다이어몬드 출력  (0) 2023.01.14
Posted by 세상을 살아가는 사람
,

python mysql 연동

Python 2023. 1. 17. 16:48
반응형

Python에서 MySQL 데이터베이스를 사용하는 방법을 적어본다.

- 환경

  + Python 3.9.10

  + MySQL : 8.0.29

  + anaconda3에서 pymysql 모듈 설치

- idle에서 파일 작성하여 run module 실행하면 pymysql 모듈이 없다고 동작하지 않음

- cmd 창에서 python Code13-02.py 입력하여 실행하면 정상 동작

[테이블 생성 및 데이터 초기화]

테이블 생성을 위해 사용한 SQL문은 아래와 같다.

create table userTable (
	id varchar(10),
    userName varchar(15),
    email varchar(20),
    birthYear int
);

insert into userTable values ('john', 'John Bann', 'john@naver.com', 1990);
insert into userTable values ('kim', 'Kim Chi', 'kim@daum.net', 1992);
insert into userTable values ('lee', 'Lee Pal', 'lee@paran.com', 1988);
insert into userTable values ('park', 'Park Su', 'park@gmail.com', 1980);

select * from userTable;

[userTable에 사용자 정보를 터미널에서 입력으로 받아 저장] : Code13-01.py

import pymysql

# 변수 선언 부분
conn, cursor = None, None
data1, data2, data3, data4 = "", "", "", ""
sql = ""

# 메인 코드 부분
conn = pymysql.connect(host='localhost', user='study', password='study', db='studydb', charset='utf8')
cursor = conn.cursor()

while (True):
    data1 = input("사용자ID ==> ")
    if data1 == "":
        break;
    data2 = input("사용자이름 ==> ")
    data3 = input("이메일 ==> ")
    data4 = input("출생년도 ==> ")
    sql = "insert into userTable values ('" + data1 + "','" + data2 + "','" + data3 + "','" + data4 + "')"
    cursor.execute(sql)
conn.commit()
conn.close()

cmd 창을 사용하여 Code13-01.py를 실행한 결과는 아래와 같다.

MySQL workbench를 사용하여 데이터를 확인하면 다음과 같이 잘 저장됨을 알 수 있다.

 

반응형

'Python' 카테고리의 다른 글

윈도우 환경에서 tensorflow 설치  (0) 2025.10.05
아나콘다 설치하기  (0) 2025.09.17
python에서 MySQL 연동하여 테이블 검색  (0) 2023.01.17
[프로그램 1] 다이어몬드 출력  (0) 2023.01.14
Posted by 세상을 살아가는 사람
,