GithubHelp home page GithubHelp logo

horticulture's Introduction

원예식물 화분류 물주기 수분공급 주기 생육데이터

  • 인공지능 학습을 통해 최적의 주거 환경(다세대주택 등)에서의 원예식물의 상태(잎, 줄기, 뿌리 등)를 포함한 물주기(수분공급)의 데이터셋을 구축
    • 원예식물 물주기 최적화와 생육 상태 탐지 및 생육 예측이 가능하도록 알고리즘 설계 및 데이터베이스 구축

목차

  1. 구축데이터정보
  2. 모델사용설명서
  3. 환경설치가이드
  4. 라이센스 정보

구축데이터정보

  • 데이터 분포

    • 각 식물별 30,000장 이상의 데이터 수집
    • 모든 식물의 데이터 분포를 고르게 수집
    • 건생식물/중생식물/습생식물 중분류 별로 최소 식물 1종 이상 포함
    • 수분 공급 전/후 잎 상태 파악을 위한 작물별 특성에 따른 자동 관수 시스템 적용
    • 식물 15종을 베란다와 거실에서 작물마다 물주기를 다르게 하여(건조/일반/과습) 수집
  • 파일명 구성 정보

    • 예시 파일명 :

      • N50-B-3-15-L-3-V-230507-001041.json
      순서 분류 정보 비고
      1 세부과제ID 50.원예식물 물주기 생육데이터 1개
      2 대분류 화초(A), 관상수(B) 2종류
      3 중분류 건생식물(1), 중생식물(2), ..., 수생식물(4) 4종류
      4 소분류 스투키(01), 선인장(02), ... 디펜바키아(15) 15종류
      5 장소 거실(L), 베란다(B) 2종류
      6 세분류 건조(1), 일반(2), 과습(3) 3종류
      7 촬영각도 Vertical(V), Horizontal(H) 2종류
      8 수집날짜 2023년05월07일 --
      9 일련번호 000001 ~ --
      10 파일형식 jpg, json 2종류

분할 데이터 구성 비율 및 모델별 상세 파일수

  • Train/Validation/Test 8:1:1

이미지분류 모델

LrgCat MidCat SmlCat classID train val test total
A.화초 1.건생식물 01.스투키 A-1-01 25961 3246 3245 32452
A.화초 1.건생식물 02.선인장 A-1-02 27960 3495 3495 34950
A.화초 1.건생식물 03.금전수 A-1-03 28088 3511 3511 35110
A.화초 2.중생식물 04.테이블야자 A-2-04 27493 3437 3437 34367
A.화초 2.중생식물 05.홍콩야자 A-2-05 28192 3524 3524 35240
A.화초 2.중생식물 06.호접란 A-2-06 24864 3108 3108 31080
A.화초 2.중생식물 07.스파티필럼 A-2-07 25356 3170 3170 31696
A.화초 3.습생식물 08.보스턴고사리 A-3-08 25462 3183 3183 31828
A.화초 3.습생식물 09.몬스테라 A-3-09 24296 3037 3037 30370
A.화초 4.수생식물 10.부레옥잠 A-4-10 24467 3059 3058 30584
B.관상수 1.건생식물 11.올리브나무 B-1-11 27296 3412 3412 34120
B.관상수 2.중생식물 12.오렌지쟈스민 B-2-12 28002 3501 3500 35003
B.관상수 2.중생식물 13.관음죽 B-2-13 27560 3446 3445 34451
B.관상수 3.습생식물 14.벵갈고무나무 B-3-14 27032 3380 3379 33791
B.관상수 3.습생식물 15.디펜바키아 B-3-15 24253 3032 3032 30317
--- --- --- --- 396282 49541 49536 495359

생장예측 모델

LrgCat MidCat SmlCat classID train val test total
A.화초 1.건생식물 01.스투키 A-1-01 21143 5013 6296 32452
A.화초 1.건생식물 02.선인장 A-1-02 27916 745 6289 34950
A.화초 1.건생식물 03.금전수 A-1-03 35110 0 0 35110
A.화초 2.중생식물 04.테이블야자 A-2-04 28574 0 5793 34367
A.화초 2.중생식물 05.홍콩야자 A-2-05 23535 5970 5735 35240
A.화초 2.중생식물 06.호접란 A-2-06 25654 0 5426 31080
A.화초 2.중생식물 07.스파티필럼 A-2-07 21343 4752 5601 31696
A.화초 3.습생식물 08.보스턴고사리 A-3-08 27814 4014 0 31828
A.화초 3.습생식물 09.몬스테라 A-3-09 21479 4709 4182 30370
A.화초 4.수생식물 10.부레옥잠 A-4-10 23762 5600 1222 30584
B.관상수 1.건생식물 11.올리브나무 B-1-11 27690 689 5741 34120
B.관상수 2.중생식물 12.오렌지쟈스민 B-2-12 23767 5635 5601 35003
B.관상수 2.중생식물 13.관음죽 B-2-13 34451 0 0 34451
B.관상수 3.습생식물 14.벵갈고무나무 B-3-14 28160 5631 0 33791
B.관상수 3.습생식물 15.디펜바키아 B-3-15 30317 0 0 30317
--- --- --- --- 400715 42758 51886 495359

폴더 구성

  • 모델별, 분할된 데이터 별 폴더구조는 대동소이 하며 예시는 다음과 같다.
    # 전체 구조 예시(식물 이미지 분류 모델의 테스트셋 기준)
    이미지분류/
    ├── train
    │   └──...
    ├── val
    │   └──...
    └── test
        ├── 라벨링데이터
        │   └──...
        └── 이미지데이터
            ├── A.화초
            │   ├── 1.건생식물
            │   │   ├── 01.스투키
            │   │   ├── 02.선인장
            │   │   └── 03.금전수
            │   ├── 2.중생식물
            │   │   ├── 04.테이블야자
            │   │   ├── 05.홍콩야자
            │   │   ├── 06.호접란
            │   │   └── 07.스파티필럼
            │   ├── 3.습생식물
            │   │   ├── 08.보스턴고사리
            │   │   └── 09.몬스테라
            │   └── 4.수생식물
            │       └── 10.부레옥잠
            └── B.관상수
                ├── 1.건생식물
                │   └── 11.올리브나무
                ├── 2.중생식물
                │   ├── 12.오렌지쟈스민
                │   └── 13.관음죽
                └── 3.습생식물
                    ├── 14.벵갈고무나무
                    └── 15.디펜바키아
                        ├── N50-B-3-15-B-1-H-230825-000132.jpg
                        ...
                        └── N50-B-3-15-L-3-V-231018-000890.jpg
    
    # 폴더 깊이별 구성 폴더 규칙 다음과 같다
    <모델명>/
    └── <데이터분할명>
        └── <데이터종류>
            └── <대분류>
                └── <중분류>
                    └── <소분류>
                        └── <파일명>

모델사용설명서

  • 모델별 상세 설명

식물 이미지 분류

모델 목적

  • 식물 이미지를 통해 식물 종 분류

  • PolyNet이라는 신경망 모델을 사용하여 복잡한 이미지 분류 작업을 수행함. 이 모델은 InceptionResNetV2 아키텍처를 기반으로 하면서도, 다양한 크기의 컨볼루션 필터를 사용하는 PolyInception 모듈을 추가하여 구성된 모델임. 이 모델은 이미지의 다양한 특성을 포괄적으로 파악하여 분류의 정확도를 높이는 것이 특징임. 학습을 위해 검증용 이미지와 시험용 이미지를 모두 전체 이미지의 10%로 제시하며, 검증과 시험을 모두 각 4만 이미지 이상으로 통일하여 준비하는 것을 제안함.

데이터 준비 및 전처리 과정

  • 데이터 준비 과정에서는 이미지 파일의 경로를 수집하고, 라벨을 수집하여 데이터 프레임 구성함. 라벨은 LabelEncoder를 통해 정수로 인코딩한 후, to_categorical 함수로 원-핫 인코딩을 적용함. 전처리 단계에서는 이미지를 모델에 맞는 크기로 조정하고, 픽셀 값을 [0, 1] 범위로 정규화함. 데이터 증강은 ImageDataGenerator를 사용하여 수행했으며, 이를 통해 모델의 일반화 능력을 향상시키고 과적합을 방지함.

학습 알고리즘 및 프레임워크

  • PolyNet, PyTorch, Scikit-Learn

학습 알고리즘에 대한 설명

  • 모델은 Adam 최적화 알고리즘을 사용하여 컴파일됨. 이는 효율적인 학습률 조정을 가능하게 하여 다양한 크기의 데이터셋에서 효과적인 성능을 발휘함. 손실 함수로는 다중 클래스 분류에 적합한 categorical_crossentropy가 사용되며, 정확도(accuracy)를 메인 평가 지표로 사용하여 모델의 성능을 평가함.

학습 조건

  • Image Data Generator
    • rescale: 1./255 (픽셀 값을 0과 1 사이로 정규화)
    • rotation_range: 90 (무작위 회전 0-20도)
    • width_shift_range: 0.2 (수평 이동)
    • height_shift_range: 0.2 (수직 이동)
    • shear_range: 0.2 (전단 변환)
    • zoom_range: 0.2 (무작위 줌)
    • horizontal_flip: True (수평 뒤집기)
    • fill_mode: 'nearest' (새로 생성된 픽셀 채우기 방식)
  • PolyNet Algorithm
    • activation: 'softmax’
    • batch_size: 32
    • Dropout: 0.4
    • loss: ‘categorical_crossentropy’
    • epoch: 1
    • learning_rate: 0.0004

데이터 학습 진행 과정

  • fit 함수를 사용하여 모델에 데이터를 공급하고 학습을 진행함. EralyStopping과 CustomCallback, CustomMetricsCallback을 사용하여 모델의 학습 진행 상황을 모니터링하고, 정확도가 90%를 넘었을 경우 종료하도록 설정함. 학습 과정은 각 에포크마다의 손실 값과 정확도를 기록하면서 진행됨.

모델 학습 결과 및 결과 확인 방법

  • 학습이 완료되면, 모델은 .h5 파일 형식으로 지정된 경로에 저장되며, 저장된 모델은 나중에 불러와 추가 평가나 예측을 수행할 수 있음. 검증 데이터셋을 사용하여 모델의 성능을 평가하고, 정확도와 F1 Score를 통해 모델의 성능을 객관적으로 측정함.

평가 지표

  • F1-점수

모델 학습 결과 확인

  • 테스트 데이터셋에 대한 예측을 수행하여 모델의 최종 성능을 평가함. 예측 결과를 바탕으로 classification_report와 confusion_matrix를 생성하여 모델의 성능을 상세하게 분석하고, 이를 엑셀 파일로 저장하여 결과를 문서화함. 이 과정을 통해 모델의 강점과 약점을 파악하고, 향후 개선 방향을 설정할 수 있음.

식물 생장 예측

모델 목적

  • 식물 센서 데이터를 통해 생장 예측

데이터가공

  • 식물생장예측 모델을 만들기 위해 사용한 데이터는 각 원예식물 15종을 2023년 8월 24일부터 2023년 10월 22일까지 베란다와 거실 두 곳에 배치를 해서 , 관수를 각각 건조, 일반, 과습 이렇게 3종류로 나뉘게 관수를 함으로써, 총 90개의 화분을 분류하여 식물의 생장에 필요한 요소들을 관측함, 여기서 관측한 값들은 이후에 식물생장예측 모델을 제작하는데 필요한 학습데이터가 된다.

    컬럼 설명
    AirTemperature 대기온도
    AirHumidity 대기습도
    Quantum 대기광양자
    HighSoilHumi 상층지습
    HighEC 상층EC
    HighPH 상층PH
    LowSoilHumi 하층지습
    LowSoilEC 하층EC
    LowSoilPH 하층PH
    AmtIrrigation 관수량
  • 생장예측 모델에서는 줄기의 길이(PlantHeight)를 종속변수로 두어서진행을 하게 된다. 데이터 가공의 목표가 되는 데이터의 형태는 데이터 안의 시간데이터를 기준으로, 각 화분마다 일주일씩 나눠서 위의 요소들의 "평균", "최대", "최소", "최대와 최소의 차", "표준편차" 이렇게 5개를 계산한 값들을 열로 갖는 형태이다.

  • 데이터 가공 예시

    주(week) 차 AirTemperature_mean AirTemperature_max AirTemperature_min ... AmtIrrigation_std
    A-1-01-V-w1 30 40 10 ... 0.78
    A-1-01-V-w2 31 40 10 ... 0.78
    A-1-01-V-w3 32 40 10 ... 0.78
  • 데이터 전처리 과정은 크게 , "그룹핑" , "계산" , "병합" 순으로 진행이 된다.

    1. 그룹핑

      • 그룹핑은 90개의 화분을 구분하는 속성인 "ClassID"별로 데이터를 나누는 과정이다 여기에서 각 화분별로 필터링이 된 데이터가 90개 생성이 된다. 그리고 여기에서 추가적인 처리가 필요한데 , 식물 데이터 수집 중 중간에 괴사한 식물들도 있기 때문에 추가적인 처리로 ClassID 뒤에 'r'을 붙여서 총 109개의 화분이 최종적으로 생성된다.
    2. 계산

      • 계산에서는, 시간 데이터를 기준으로 일주일씩 나눈다. 식물생장 데이터에서는 총 9주의 데이터가 한 화분에서 나오게 된다 , 일주일씩 묶어서 각 평균, 최대, 최소, 최대와 최소의 차, 그리고 표준편차를 요소별로 계산을 한다.
    3. 병합

      • 마지막으로, 모든 데이터를 행 방향으로 붙이면 각 화분단 9주씩 묶인 데이터가 행단위로 연결이 되어 가공형태의 데이터프레임이 나오게 된다.
  • 종속변수로 사용이 될 , PlantHeight가 전 주에 비해서 어느정도 성장했는지를 보는 척도로 , 이전 주의 PlantHeight를 가져오는 열인 PlantHeight_ago를 추가를 해서 전 주와의 비교도 가능하게 한다.

모델 설명

  • 사용 모델 : RandomForestRegressor

    • 사용한 학습모델 랜덤포레스트 모델이다. 과대적합을 방지하기 위해서 최적의 기준변수를 랜덤하게 선택하는 머신러닝 기법이다.
    • 여러개의 의사결정나무를 조합한 모델인데, 이 모델은 여러개의 의사결정나무를 조합하기 때문에 앙상블(ensemble) 모델이며, 집단 지성과 비슷한 원리로 움직인다.
    • 식물생장예측의 경우, 각 화분별로 데이터가 정리되어있기 때문에 , 사용되는 모든 특성이 식물에 영향을 미칠 때 , 유기적으로 결합된 영향을 지니고 있다 , 여기에서 선형회귀 모델을 사용할 경우, 각 특성을 가중치와 곱한 후 더하는 방식으로 예측을 하기 때문에 사용되는 특성들의 관계성을 반영하기 힘들 수도 있다.
    • 랜덤포레스트 모델은 여러 특성들의 관계성을 반영한 값을 여러개 만들어 내서, 그 값들을 통해 최종적인 결론을 내리게 되므로 랜덤포레스트 모델이 더 적절하다고 생각하여 선정하였다.
  • 원리 설명

    • Bagging방식을 통해서 움직이는데, Bagging은 Bootstraping과 Aggregating을 합친 말이다.
    - Bootstraping은 샘플링의 일종으로, "복원추출"을 한다는 특징을 가지고 있다 , 여기에서 위의 사진과 같이 하나의 샘플에 같은 데이터가 들어가 있는 것처럼, 샘플을 모두 다 다르게 생성할 수 있다. - 이렇게 해서 여러개의 의사결정나무를 만들고 마지막에 Aggregating을 한다. Aggregating을 할 때, 모델이 회귀문제에 쓰이는지 분류 문제에 쓰이는지에 따라서 결정방법이 달라지게 된다. - 회귀문제 : 평균을 계산하여 , 결정한다. - 분류문제 : 다수결을 따른다.
  • 데이터분할

    • 모델 학습을 진행하기 전에, 데이터를 학습데이터, 테스트데이터, 검증데이터로 나누어야 한다.
    • 먼저 , 무작위로 데이터의 ClassID를 9개씩 추출을 한다. 그리고 같은 ClassID도 , 화분의 배치장소와 , 관수 상태로 구분이 되기에 베란다 2종류와 관수상태 3종류 총 6종류의 아이디를 ClassID와 결합시켜서 하나의 화분에 대한 ClassID를 만들어야 한다.
    • 여기에서는, 6종류의 아이디에 대해서 위에서 사용한 방법과 동일하게 하나를 무작위로 추출하는 방법으로 한다.

학습 알고리즘 및 프레임워크

  • RandomForest, PyTorch, Scikit-Learn

학습 조건

  • 모델 학습

    • 지금까지 나눈 데이터로, 학습데이터, 테스트데이터, 검증데이터 이렇게 3가지 데이터가 결과적으로 나오게 되었다. 이제 세가지 데이터와 각 데이터의 종속변수(PlantHeight)를 토대로 모델을 학습시킨다.
  • 모델 튜닝

    • 각 모델에는 외부에서 직접 값을 조정할 수 있는, 외부 구성 변수가 있는데, 여기서 설정된 값들은 모델의 학습에 영향을 미치며, 성능을 높일 수도 있고 성능이 낮아질 수도 있다. 그리고 그 수의 조합이 많기 때문에 이것을 자동화 시켜서 성능을 높일 수 있는 변수들의 조합을 찾는 과정이다.
  • 사용 기법 : GridSearchCV

    • 그리드서치는 모델을 튜닝하는 과정에서 쓰이는 기법중의 하나이고 가장 직관적인 방법인데, 변수의 값이 될 수 있는 수들의 범위를 사용자가 지정을 해주면, 그 범위의 값들을 조합해서 모델의 성능이 최적이 되는 값을 찾아주는 방법이다. 사용하기 간편하며, 결과물도 괜찮지만, 시간이 많이 걸린다는 단점이 있다.
    • RandomForest 파라미터 범위
      • n_estimators: [100, 200] (랜덤포레스트를 구성하는 결정 트리의 개수)
      • max_depth: [None, 10] (각 결정 트리의 최대 깊이)
      • min_samples_split: [2, 5] (노드를 분할하기 위한 최소한의 샘플 수)
      • min_samples_leaf: [1, 2] (리프 노드가 가져야 하는 최소한의 샘플 수)
    • GridsearchCV를 활용한 최적의 파라미터 선정
      • n-jobs=-1 (모든 코어 사용)
      • cv=3 (교차검증을 위한 fold 수)
  • 위의 데이터 분할, 모델 학습, 모델 튜닝 이러한 작업을 30번 반복을 시키면서 우연이나 랜덤성에 의해서 평가가 달라지는 것을 파악하면서 일반적인 성능을 파악할 수 있도록 한다.

평가

  • 평가 지표

    • Mean Absolute Percentage Error(평균절대비율오차)
      • 모델 평가의 척도로는 MAPE(Mean Absolute Percentage Error)을 사용한다. 값이 작을 수록 좋으며, 특징으로는 값이 모두 0~100% 사이의 값을 가지기 때문에 결과 해석에 용이하다는 특징이 있다.
  • MAPE 결과값(최소 , 최대 , 평균)

    • 모델 평가의 결과를 보면 0~100%의 값을 가지는데 평균이 4% 가장 큰 값도 7%로 매우 양호한 성능을 가지고 있다는 것을 알 수 있다.
  • 결정계수 결과값(최소 , 최대 , 평균)

    • 결정계수란 , 모델이 종속변수를 얼마나 잘 설명하느냐를 보여주는 계수인데 , 이 값은 1로 갈 수록 높은 값을 가지며 , 믿을 만 하다는 것이기 문에 , 해당 모델은 결정계수 측면에서도 양호한 성능을 가지고 있다는 것을 판단할 수 있다.

모델 소스 코드 설명

  • 도커 구동시 루트경로에 다음과 같은 소스코드 및 각종 파일 확인가능

    (docker container 내부)
    ├── /app
    │   ├── classify_test.py
    │   ├── classify_train.py
    │   ├── plant_prediction_test.py
    │   ├── plant_prediction_train.py
    │   ├── collect_info.sh
    │   └── data_split811.py
    └── /mnt
        ├── dataset
        │   ├── 생장예측
        │   │   └── ...
        │   └── 이미지분류
        │       ├── train
        │       ├── val
        │       └── test
        └── output
            ├── img_model_2024-01-09.h5
            └── 2023-12-29_prediction_model.abc
    
  • 파일별 세부 용도는 다음과 같다

    파일명 쓰임새 비고 순서
    classify_train.py 식물 이미지분류모델 학습 /mnt/output경로에 가중치 저장
    /mnt/dataset내 train/ 및 val/ 필요
    1-1
    img_model_2024-01-09.h5 식물 이미지분류모델의 학습완료된 가중치 classify_train.py 실행 종료시
    /mnt/output/내에 생성
    1-2
    classify_test.py 식물 이미지분류모델 성능 측정 /mnt/output경로의 가중치 및
    /mnt/dataset/test/ 필요
    1-3
    plant_prediction_train.py 식물 생장예측모델 학습 /mnt/output경로에 가중치 저장
    /mnt/dataset내 train/ 및 val/ 필요
    2-1
    2023-12-29_prediction_model.abc 식물 생장예측모델의 학습완료된 가중치 plant_prediction_train.py 실행 종료시
    /mnt/output/내에 생성
    2-2
    plant_prediction_test.py 식물 생장예측모델 성능 측정 /mnt/output경로의 가중치 및
    /mnt/dataset/test/ 필요
    2-3
    collect_info.sh 하드웨어정보 출력파일 실행 필요 없음 ---
    data_split811.py 식물 이미지분류모델 데이터분할한 코드로써 분류기준 참고가능 실행 필요 없음 ---

환경설치가이드

개발 시스템 환경

  1. 개발 서버 정보

    분류 정보
    CPU 정보 Intel(R) Core(TM) i7
    운영체제 Ubuntu 20.04.4 LTS
    HDD 정보 (GB) 1600 이상 (전체 데이터셋 다운로드 및 실행시)
    RAM 정보 (GB) 16 이상
    GPU 정보 NVIDIA RTX 3060 Ti 이상
    그래픽드라이버 버전 515.105.01
    CUDA 버전 11.2.1
  2. 개발 프레임워크 버전 정보

    • 개발 언어
      • Python 3.8.10
    • 프레임워크
      • tensorflow==2.10.0
      • keras==2.10.0
      • scikit-learn==0.24.2
      • numpy==1.23.2

환경 구축 방법

  • 공통
    1. 데이터셋 등 마운트 경로 설정
      • 컨테이너에 마운트 할 데이터셋 경로, 산출물 경로 및 소스코드 경로를 명시(아래 예시 참조)
    2. 이미지 생성 및 컨테이너 구동
      • Dockerfile 과 docker-compose.yaml 파일에 기반하여 가상환경(컨테이너) 구축
      • 사용자가 추가 라이브러리 등 설치 시 Dockerfile에 명령어를 추가하여 사용가능
    3. 컨테이너 접속
      • 구축한 가상환경의 터미널에 접속
  • 모델별
    1. 소스코드 실행
      • 컨테이너 내부 /app 경로에 마운트 된 소스코드로써 소스코드 수정시
      • <컨테이너 내에서 실행할 소스코드가 있는 로컬경로> 의 파일을 편집기 등으로 수정가능

1. 데이터셋 등 마운트 경로 설정

  • docker-compose.yml 파일내에 마운트하고자 하는 로컬경로 수정
  • < ~ 로컬경로> 부분을 자유롭게 수정하여 사용합니다.
        ...
        volumes:
            - <컨테이너 내에서 실행할 소스코드가 있는 로컬경로>:/app
            - <컨테이너 내에서 생성된 산출물을 확인할 로컬경로>:/mnt/output
            - <컨테이너 내에서 사용할 실데이터가 있는 로컬경로>:/mnt/dataset
        ...
  • 예시 : 아래의 경우 <컨테이너 내에서 사용할 실데이터가 있는 로컬경로>는 /path/to/dataset 이다.
    /path/to/dataset
                ├── 이미지분류
                └── 생장예측
                    ├── train
                    ├── val
                    └── test
                        └── 라벨링데이터
    
    • (참고) 생장예측 모델은 이미지데이터를 사용 하지 않음

2. 이미지 생성 및 컨테이너 구동

  • docker-compose.yml 이 있는 경로로 이동 후 다음 명령어 실행
    docker compose up -d --build

3. 컨테이너 접속

  • 구동중인 컨테이너명을 확인하여 작성
    # 출력물 중 NAMES 확인
    docker ps -f name=horticulture_container
    
    # 해당 내용을 아래에 기입(예:horticulture_container)
    docker exec -it horticulture_container bash

4. 소스코드 실행

  • 접속한 컨테이너의 CLI(터미널)로 실행하고자 하는 소스코드 실행
    # 식물이미지분류모델 학습 및 검증 코드 실행예시
    python classify_train.py
    python classify_test.py
    
    # 식물생장예측모델 학습 및 검증 코드 실행예시
    python plant_prediction_train.py
    python plant_prediction_test.py
  • 학습코드 실행시 <컨테이너 내에서 생성된 산출물을 확인할 로컬경로> 경로에 가중치가 저장됨
  • 제공된 모델 파일에 대해 검증 코드를 실행하고자 할 때에는 상기 경로에 해당 파일을 먼저 옮김
    • img_model_2024-01-09.h5
    • 2023-12-29_prediction_model.abc
    • 이후 실행명령어는 다음과 같다.
    # 식물이미지분류모델 검증 코드 실행예시
    python classify_test.py --model_name img_model_2024-01-09.h5
    
    # 식물생장예측모델 검증 코드 실행예시
    python plant_prediction_test.py --model_name 2023-12-29_prediction_model.abc

(참고)tensorflow gpu 인식 확인방법

  • 정보출력방법 : (컨테이너내) 커맨드라인에서 python입력 후 다음을 입력. (예시 출력값 참고)
    from tensorflow.python.client import device_lib
    print(device_lib.list_local_devices())
    # 예시 출력값
    [name: "/device:CPU:0"...
    ,name: "/device:GPU:0"..., name: Tesla T4, ...]
    
    import tensorflow as tf
    print("Num GPUs Available: ", len(tf.config.list_physical_devices('GPU')))
    print(tf.test.is_built_with_cuda())
    # 예시 출력값
    Num GPUs Available: 4
    True

License

Copyright (c) 2023 Gnewsoft SPDX-License-Identifier: MIT

horticulture's People

Contributors

y0ngma avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.