2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
कृषिक्षेत्रे तृणानि प्रमुखसमस्यासु अन्यतमम् अस्ति, येन सस्यवृद्धेः, उपजस्य च कृते गम्भीरः खतरा वर्तते । पारम्परिकाः हस्तपरिचयः प्रबन्धनविधयः अकुशलाः अशुद्धाः च सन्ति, अतः कृषिउत्पादनस्य कार्यक्षमतां गुणवत्तां च सुधारयितुम् उन्नतसङ्गणकदृष्टिप्रौद्योगिक्याः आवश्यकता वर्तते गहनशिक्षणप्रतिरूपरूपेण रेसनेट् जटिलप्रतिबिम्बवर्गीकरणकार्यं नियन्त्रयितुं उत्तमं प्रदर्शनं करोति, अपितु कृषिभूमिषु विविधजटिलतृणानां समस्यायाः प्रभावीरूपेण समाधानं कर्तुं शक्नोति, अपितु बुद्धिमान् कृषिस्य विकासं प्रवर्धयितुं रासायनिककीटनाशकानाम् उपरि निर्भरतां न्यूनीकर्तुं च शक्नोति स्थायिकृषिविकासस्य। तृणवर्गीकरणाय ResNet इत्यस्य उपयोगेन वयं कृषकान् अधिकबुद्धिमान् सटीकं च कृषिप्रबन्धनसमाधानं प्रदातुं शक्नुमः, कृषिउत्पादनदक्षतायाः सुधारं कृषिउद्योगस्य आधुनिकीकरणं च प्रवर्धयितुं शक्नुमः। अतः एषा परियोजना खरपतवारवर्गीकरणप्रयोगानाम् आचरणार्थं स्थानीयरूपरेखा PaddleClas+Swanlab+Gradio+Swanhub इत्यस्य उपयोगं करोति ।
PaddlePaddle इति उद्यमस्तरीयं गहनशिक्षणमञ्चं Baidu द्वारा विकसितम् अस्ति, यत् मॉडलविकासात् परिनियोजनपर्यन्तं पूर्णप्रक्रिया गहनशिक्षणअनुप्रयोगानाम् समर्थनार्थं डिजाइनं कृतम् अस्ति एतत् चित्रसंसाधनं, प्राकृतिकभाषासंसाधनं, वाक्परिचयः इत्यादीनि विविधानि गहनशिक्षणकार्यं समर्थयितुं साधनानां पुस्तकालयानाञ्च धनं प्रदातिपाडलपैडल
PaddleClas एकः उपकरणपुस्तकालयः अस्ति यस्य उपयोगः विशेषतया Paddle ढाञ्चे चित्रवर्गीकरणकार्यस्य कृते भवति । एतत् अन्ततः अन्तः समाधानस्य सम्पूर्णं समुच्चयं प्रदाति, यत्र आँकडासंसाधनं, प्रतिरूपपरिभाषा, प्रशिक्षणं, मूल्याङ्कनं, परिनियोजनं च सन्ति, यत् विकासकानां शीघ्रं कुशलप्रतिबिम्बवर्गीकरणप्रतिरूपनिर्माणे परिनियोजने च सहायतार्थं विनिर्मितम् अस्तिPaddleClas इति इति
SwanLab एकं मुक्तस्रोतः, हल्कं AI प्रयोगनिरीक्षणसाधनम् अस्ति यत् मैत्रीपूर्णं API प्रदातुं तथा च हाइपरपैरामीटर् ट्रैकिंग्, सूचकरिकार्डिंग्, ऑनलाइनसहकार्यं अन्यकार्यं च संयोजयित्वा ML प्रयोगनिरीक्षणं सहकार्यानुभवं च सुधारयतिSwanLab |
Swanhub इति Geek Studio द्वारा विकसितः एकः मुक्तस्रोतप्रतिरूपसहकार्यः, साझेदारीसमुदायः च अस्ति । एतत् एआइ-विकासकानाम् एआइ-माडल-होस्टिंग्, प्रशिक्षण-अभिलेखाः, मॉडल्-परिणाम-प्रदर्शनम्, द्रुत-एपिआइ-नियोजनम् इत्यादीनि कार्याणि प्रदाति ।स्वानहब इत्यत्र स्वागतम्
Gradio इति एकः मुक्तस्रोतः पायथन् पुस्तकालयः अस्ति यत् यन्त्रशिक्षणक्षेत्रे कार्यं कुर्वतां आँकडावैज्ञानिकानां, शोधकर्तृणां, विकासकानां च यन्त्रशिक्षणप्रतिमानानाम् उपयोक्तृ-अन्तरफलकानि शीघ्रं निर्मातुं साझां कर्तुं च सहायतार्थं विनिर्मितम् अस्तिग्रेडियो
निम्नलिखित ३ पुस्तकालयाः संस्थापयन्तु : १.
- paddle
- swanlab
- gradio
संस्थापनादेशः : १.
pip install paddle swanlab gradio
खरपतवारवर्गीकरणदत्तांशसमूहः DeepWeeds
- DeepWeeds
- --images
- ----1.jpg
- ----2.jpg
- --train.txt
- --val.txt
- --test.txt
- --classnames.txt
तेषां स्वस्वकार्यं महत्त्वं च : १.
1. DeepWeeds फोल्डर्: अस्य फोल्डर् इत्यस्य उपयोगः इमेज फोल्डर् इमेज्, ट्रेनिंग सेट् टेस्ट् सेट् सत्यापन सेट् सञ्चिकाः, लेबल सञ्चिकाः च संग्रहीतुं भवति
2. images folder: एतत् फोल्डर् प्रशिक्षणं, परीक्षणं, सत्यापनं च इमेज फोल्डर् रक्षितुं उपयुज्यते ।
3. train.txt, val.txt, test.txt सञ्चिकाः: एषा सञ्चिका प्रशिक्षणस्य, परीक्षणस्य, प्रमाणीकरणस्य च समुच्चयस्य चित्रमार्गान् श्रेणीं च रक्षितुं उपयुज्यते ।
4. classnames file: श्रेणीलेबलं रक्षितुं उपयुज्यते
आदर्शलिङ्कः : १.PaddleClas मॉडल
अनजिप् कृत्वा भवन्तः PaddleClas फोल्डर् प्राप्नुवन्ति ।
PaddleClas फोल्डर् मध्ये app.py रचयन्तु ।
किं करोति: Gradio Demo चालयति इति स्क्रिप्ट् चालयन्तु
प्रथमं PaddleClas फोल्डर् मध्ये ppcls-->configs-->ImageNet-->Res2Net-->Res2Net50_14w_8s.yaml अन्वेष्टुम् ।
epochs क्रमशः 100, category class_num 9, प्रशिक्षणप्रतिबिम्बमार्गः, सत्यापनप्रतिबिम्बमार्गः, लेबलसञ्चिका च परिवर्तयन्तु । कुलम् ७ परिवर्तनं कृतम् ।
- # global configs
- Global:
- checkpoints: null
- pretrained_model: null
- output_dir: ./output/
- device: gpu
- save_interval: 1
- eval_during_train: True
- eval_interval: 1
- epochs: 100###########################1##############################
- print_batch_step: 10
- use_visualdl: False
- # used for static mode and model export
- image_shape: [3, 224, 224]
- save_inference_dir: ./inference
-
- # model architecture
- Arch:
- name: Res2Net50_14w_8s
- class_num: 9############################2##############################
-
- # loss function config for traing/eval process
- Loss:
- Train:
- - CELoss:
- weight: 1.0
- epsilon: 0.1
- Eval:
- - CELoss:
- weight: 1.0
-
-
- Optimizer:
- name: Momentum
- momentum: 0.9
- lr:
- name: Cosine
- learning_rate: 0.1
- regularizer:
- name: 'L2'
- coeff: 0.0001
-
-
- # data loader for train and eval
- DataLoader:
- Train:
- dataset:
- name: ImageNetDataset
- image_root: ./weeds/images/#################3#######################
- cls_label_path: ./weeds/train.txt###########4########################
- transform_ops:
- - DecodeImage:
- to_rgb: True
- channel_first: False
- - RandCropImage:
- size: 224
- - RandFlipImage:
- flip_code: 1
- - NormalizeImage:
- scale: 1.0/255.0
- mean: [0.485, 0.456, 0.406]
- std: [0.229, 0.224, 0.225]
- order: ''
- batch_transform_ops:
- - MixupOperator:
- alpha: 0.2
-
- sampler:
- name: DistributedBatchSampler
- batch_size: 64
- drop_last: False
- shuffle: True
- loader:
- num_workers: 4
- use_shared_memory: True
-
- Eval:
- dataset:
- name: ImageNetDataset
- image_root: ./DeepWeeds/images/###############5#######################
- cls_label_path: ./DeepWeeds/val.txt###########6########################
- transform_ops:
- - DecodeImage:
- to_rgb: True
- channel_first: False
- - ResizeImage:
- resize_short: 256
- - CropImage:
- size: 224
- - NormalizeImage:
- scale: 1.0/255.0
- mean: [0.485, 0.456, 0.406]
- std: [0.229, 0.224, 0.225]
- order: ''
- sampler:
- name: DistributedBatchSampler
- batch_size: 64
- drop_last: False
- shuffle: False
- loader:
- num_workers: 4
- use_shared_memory: True
-
- Infer:
- infer_imgs: docs/images/inference_deployment/whl_demo.jpg
- batch_size: 10
- transforms:
- - DecodeImage:
- to_rgb: True
- channel_first: False
- - ResizeImage:
- resize_short: 256
- - CropImage:
- size: 224
- - NormalizeImage:
- scale: 1.0/255.0
- mean: [0.485, 0.456, 0.406]
- std: [0.229, 0.224, 0.225]
- order: ''
- - ToCHWImage:
- PostProcess:
- name: Topk
- topk: 5
- class_id_map_file: ./DeepWeeds/classnaems.txt###########7##################
-
- Metric:
- Train:
- Eval:
- - TopkAcc:
- topk: [1, 5]
PaddleClas फोल्डर् मध्ये tools-->train.py इति अन्वेष्टुम् । हंसलाबस्य आरम्भं कुर्वन्तु
- # Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
-
- from __future__ import absolute_import
- from __future__ import division
- from __future__ import print_function
- import os
- import sys
-
- __dir__ = os.path.dirname(os.path.abspath(__file__))
- sys.path.append(os.path.abspath(os.path.join(__dir__, '../')))
-
- from ppcls.utils import config
- from ppcls.engine.engine import Engine
- import swanlab
- # -*- coding: utf-8 -*-
-
- if __name__ == "__main__":
- args = config.parse_args()
- config = config.get_config(
- args.config, overrides=args.override, show=False)
- config.profiler_options = args.profiler_options
- engine = Engine(config, mode="train")
-
- ## 初始化swanlab
- swanlab.init(
- experiment_name="Swanlab_ResNet50_PaddleClas",
- description="Train ResNet50 for weeds classification.",
- project="Swanhub_Weeds_Classification",
- config={
- "model": "ResNet50",
- "optim": "Adam",
- "lr": 0.001,
- "batch_size": 64,
- "num_epochs": 100,
- "num_class": 9,
- }
- )
- engine.train()
PaddleClas मध्ये ppcls-->engine-->train-->utils.py इति ज्ञात्वा निम्नलिखितसङ्केतं योजयन्तु ।
- swanlab.log({"train_lr_msg": lr_msg.split(": ")[1]}) #
- swanlab.log({"train_CELoss": metric_msg.split(",")[0].split(': ')[1]}) ##
- swanlab.log({'train_loss': metric_msg.split(",")[1].split(': ')[1]})
PaddleClas फोल्डर् मध्ये ppcls-->engine-->engine.py इति ज्ञात्वा निम्नलिखितसङ्केतं योजयन्तु ।
swanlab.log({'best_metric': best_metric.get('metric')})
कन्सोल् मध्ये निम्नलिखितम् आदेशं प्रविशन्तु ।
python -m paddle.distributed.launch tools/train.py -c ./ppcls/configs/ImageNet/Res2Net/Res2Net50_14w_8s.yaml
swanlab इत्यत्र प्रयोगविवरणं पश्यन्तु
प्रयोगस्य परिणामाः यथा - १.
swanlab इत्यत्र प्रयोगपरिणामान् पश्यन्तु
कन्सोल् मध्ये निम्नलिखित कोडं प्रविशन्तु ।
python tools/infer.py -c ./ppcls/configs/ImageNet/Res2Net/Res2Net50_14w_8s.yaml -o Infer.infer_imgs=./DeepWeeds/infer/01.jpg -o Global.pretrained_model=./output/Res2Net50_14w_8s/best_model
प्रथमं PaddleClas फोल्डर् मध्ये ppcls-->configs-->ImageNet-->DarkNet-->DarkNet53.yaml इति अन्वेष्टुम् ।
epochs क्रमशः 100, category class_num 9, प्रशिक्षणप्रतिबिम्बमार्गः, सत्यापनप्रतिबिम्बमार्गः, लेबलसञ्चिका च परिवर्तयन्तु । कुलम् ७ परिवर्तनं कृतम् ।
- # global configs
- Global:
- checkpoints: null
- pretrained_model: null
- output_dir: ./output/
- device: gpu
- save_interval: 1
- eval_during_train: True
- eval_interval: 1
- epochs: 100
- print_batch_step: 10
- use_visualdl: False
- # used for static mode and model export
- image_shape: [3, 256, 256]
- save_inference_dir: ./inference
-
- # model architecture
- Arch:
- name: DarkNet53
- class_num: 9
-
- # loss function config for traing/eval process
- Loss:
- Train:
- - CELoss:
- weight: 1.0
- epsilon: 0.1
- Eval:
- - CELoss:
- weight: 1.0
-
-
- Optimizer:
- name: Momentum
- momentum: 0.9
- lr:
- name: Cosine
- learning_rate: 0.1
- regularizer:
- name: 'L2'
- coeff: 0.0001
-
-
- # data loader for train and eval
- DataLoader:
- Train:
- dataset:
- name: ImageNetDataset
- image_root: F:/datasets/DeepWeeds/images
- cls_label_path: F:/datasets/DeepWeeds/train.txt
- transform_ops:
- - DecodeImage:
- to_rgb: True
- channel_first: False
- - RandCropImage:
- size: 256
- - RandFlipImage:
- flip_code: 1
- - NormalizeImage:
- scale: 1.0/255.0
- mean: [0.485, 0.456, 0.406]
- std: [0.229, 0.224, 0.225]
- order: ''
- batch_transform_ops:
- - MixupOperator:
- alpha: 0.2
-
- sampler:
- name: DistributedBatchSampler
- batch_size: 64
- drop_last: False
- shuffle: True
- loader:
- num_workers: 4
- use_shared_memory: True
-
- Eval:
- dataset:
- name: ImageNetDataset
- image_root: F:/datasets/DeepWeeds/images
- cls_label_path: F:/datasets/DeepWeeds/val.txt
- transform_ops:
- - DecodeImage:
- to_rgb: True
- channel_first: False
- - ResizeImage:
- resize_short: 292
- - CropImage:
- size: 256
- - NormalizeImage:
- scale: 1.0/255.0
- mean: [0.485, 0.456, 0.406]
- std: [0.229, 0.224, 0.225]
- order: ''
- sampler:
- name: DistributedBatchSampler
- batch_size: 64
- drop_last: False
- shuffle: False
- loader:
- num_workers: 4
- use_shared_memory: True
-
- Infer:
- infer_imgs: docs/images/inference_deployment/whl_demo.jpg
- batch_size: 10
- transforms:
- - DecodeImage:
- to_rgb: True
- channel_first: False
- - ResizeImage:
- resize_short: 292
- - CropImage:
- size: 256
- - NormalizeImage:
- scale: 1.0/255.0
- mean: [0.485, 0.456, 0.406]
- std: [0.229, 0.224, 0.225]
- order: ''
- - ToCHWImage:
- PostProcess:
- name: Topk
- topk: 5
- class_id_map_file: F:/datasets/DeepWeeds/classnames
-
- Metric:
- Train:
- Eval:
- - TopkAcc:
- topk: [1, 5]
PaddleClas फोल्डर् मध्ये tools-->train.py इति अन्वेष्टुम् । आरंभीकरण swanlab परिवर्तनं कुर्वन्तु
- # Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
-
- from __future__ import absolute_import
- from __future__ import division
- from __future__ import print_function
- import os
- import sys
-
- __dir__ = os.path.dirname(os.path.abspath(__file__))
- sys.path.append(os.path.abspath(os.path.join(__dir__, '../')))
-
- from ppcls.utils import config
- from ppcls.engine.engine import Engine
- import swanlab
- # -*- coding: utf-8 -*-
-
- if __name__ == "__main__":
- args = config.parse_args()
- config = config.get_config(
- args.config, overrides=args.override, show=False)
- config.profiler_options = args.profiler_options
- engine = Engine(config, mode="train")
-
- ## 初始化swanlab
- swanlab.init(
- experiment_name="Swanlab_DrakNet53_PaddleClas",
- description="Train DarkNet53 for weeds classification.",
- project="Swanhub_Weeds_Classification",
- config={
- "model": "DarkNet53",
- "optim": "Adam",
- "lr": 0.001,
- "batch_size": 64,
- "num_epochs": 100,
- "num_class": 9,
- }
- )
- engine.train()
कन्सोल् मध्ये निम्नलिखितम् आदेशं प्रविशन्तु ।
python -m paddle.distributed.launch tools/train.py -c ./ppcls/configs/ImageNet/DarkNet/DarknetNet53.yaml
swanlab इत्यत्र प्रयोगविवरणं पश्यन्तु
प्रयोगस्य परिणामाः यथा - १.
कन्सोल् मध्ये निम्नलिखित कोडं प्रविशन्तु ।
python tools/infer.py -c ./ppcls/configs/ImageNet/DarkNet/DarkNet53.yaml -o Infer.infer_imgs=./DeepWeeds/infer/01.jpg -o Global.pretrained_model=./output/DarkNet53/best_model
४.५ स्वान्लैब् परिणामप्रदर्शनम्
यथा चित्रात् दृश्यते, ResNet50 मॉडल् DarkNet53 मॉडल् इत्यस्मात् उत्तमं प्रदर्शनं करोति, तथा च swanlab एकं सुविधाजनकं तुलनाचार्ट् कार्यं प्रदाति ।
निरन्तरता इति । . .
निरन्तरता इति । . .