प्रौद्योगिकी साझेदारी

घरेलुरूपरेखा PaddleClas तृणवर्गीकरणार्थं Swanlab इत्यनेन सह संयुक्तम्

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. परियोजनापरिचयः

कृषिक्षेत्रे तृणानि प्रमुखसमस्यासु अन्यतमम् अस्ति, येन सस्यवृद्धेः, उपजस्य च कृते गम्भीरः खतरा वर्तते । पारम्परिकाः हस्तपरिचयः प्रबन्धनविधयः अकुशलाः अशुद्धाः च सन्ति, अतः कृषिउत्पादनस्य कार्यक्षमतां गुणवत्तां च सुधारयितुम् उन्नतसङ्गणकदृष्टिप्रौद्योगिक्याः आवश्यकता वर्तते गहनशिक्षणप्रतिरूपरूपेण रेसनेट् जटिलप्रतिबिम्बवर्गीकरणकार्यं नियन्त्रयितुं उत्तमं प्रदर्शनं करोति, अपितु कृषिभूमिषु विविधजटिलतृणानां समस्यायाः प्रभावीरूपेण समाधानं कर्तुं शक्नोति, अपितु बुद्धिमान् कृषिस्य विकासं प्रवर्धयितुं रासायनिककीटनाशकानाम् उपरि निर्भरतां न्यूनीकर्तुं च शक्नोति स्थायिकृषिविकासस्य। तृणवर्गीकरणाय ResNet इत्यस्य उपयोगेन वयं कृषकान् अधिकबुद्धिमान् सटीकं च कृषिप्रबन्धनसमाधानं प्रदातुं शक्नुमः, कृषिउत्पादनदक्षतायाः सुधारं कृषिउद्योगस्य आधुनिकीकरणं च प्रवर्धयितुं शक्नुमः। अतः एषा परियोजना खरपतवारवर्गीकरणप्रयोगानाम् आचरणार्थं स्थानीयरूपरेखा PaddleClas+Swanlab+Gradio+Swanhub इत्यस्य उपयोगं करोति ।

PaddlePaddle इति उद्यमस्तरीयं गहनशिक्षणमञ्चं Baidu द्वारा विकसितम् अस्ति, यत् मॉडलविकासात् परिनियोजनपर्यन्तं पूर्णप्रक्रिया गहनशिक्षणअनुप्रयोगानाम् समर्थनार्थं डिजाइनं कृतम् अस्ति एतत् चित्रसंसाधनं, प्राकृतिकभाषासंसाधनं, वाक्परिचयः इत्यादीनि विविधानि गहनशिक्षणकार्यं समर्थयितुं साधनानां पुस्तकालयानाञ्च धनं प्रदातिपाडलपैडल

PaddleClas एकः उपकरणपुस्तकालयः अस्ति यस्य उपयोगः विशेषतया Paddle ढाञ्चे चित्रवर्गीकरणकार्यस्य कृते भवति । एतत् अन्ततः अन्तः समाधानस्य सम्पूर्णं समुच्चयं प्रदाति, यत्र आँकडासंसाधनं, प्रतिरूपपरिभाषा, प्रशिक्षणं, मूल्याङ्कनं, परिनियोजनं च सन्ति, यत् विकासकानां शीघ्रं कुशलप्रतिबिम्बवर्गीकरणप्रतिरूपनिर्माणे परिनियोजने च सहायतार्थं विनिर्मितम् अस्तिPaddleClas इति इति

SwanLab एकं मुक्तस्रोतः, हल्कं AI प्रयोगनिरीक्षणसाधनम् अस्ति यत् मैत्रीपूर्णं API प्रदातुं तथा च हाइपरपैरामीटर् ट्रैकिंग्, सूचकरिकार्डिंग्, ऑनलाइनसहकार्यं अन्यकार्यं च संयोजयित्वा ML प्रयोगनिरीक्षणं सहकार्यानुभवं च सुधारयतिSwanLab |

Swanhub इति Geek Studio द्वारा विकसितः एकः मुक्तस्रोतप्रतिरूपसहकार्यः, साझेदारीसमुदायः च अस्ति । एतत् एआइ-विकासकानाम् एआइ-माडल-होस्टिंग्, प्रशिक्षण-अभिलेखाः, मॉडल्-परिणाम-प्रदर्शनम्, द्रुत-एपिआइ-नियोजनम् इत्यादीनि कार्याणि प्रदाति ।स्वानहब इत्यत्र स्वागतम्

Gradio इति एकः मुक्तस्रोतः पायथन् पुस्तकालयः अस्ति यत् यन्त्रशिक्षणक्षेत्रे कार्यं कुर्वतां आँकडावैज्ञानिकानां, शोधकर्तृणां, विकासकानां च यन्त्रशिक्षणप्रतिमानानाम् उपयोक्तृ-अन्तरफलकानि शीघ्रं निर्मातुं साझां कर्तुं च सहायतार्थं विनिर्मितम् अस्तिग्रेडियो

2. सज्जता भाग

२.१ पर्यावरणस्थापनम्

निम्नलिखित ३ पुस्तकालयाः संस्थापयन्तु : १.

  1. paddle
  2. swanlab
  3. gradio

संस्थापनादेशः : १.

pip install paddle swanlab gradio

2.2 दत्तांशसमूहं डाउनलोड् कुर्वन्तु

खरपतवारवर्गीकरणदत्तांशसमूहः DeepWeeds

  1. DeepWeeds
  2. --images
  3. ----1.jpg
  4. ----2.jpg
  5. --train.txt
  6. --val.txt
  7. --test.txt
  8. --classnames.txt

तेषां स्वस्वकार्यं महत्त्वं च : १.

1. DeepWeeds फोल्डर्: अस्य फोल्डर् इत्यस्य उपयोगः इमेज फोल्डर् इमेज्, ट्रेनिंग सेट् टेस्ट् सेट् सत्यापन सेट् सञ्चिकाः, लेबल सञ्चिकाः च संग्रहीतुं भवति

2. images folder: एतत् फोल्डर् प्रशिक्षणं, परीक्षणं, सत्यापनं च इमेज फोल्डर् रक्षितुं उपयुज्यते ।

3. train.txt, val.txt, test.txt सञ्चिकाः: एषा सञ्चिका प्रशिक्षणस्य, परीक्षणस्य, प्रमाणीकरणस्य च समुच्चयस्य चित्रमार्गान् श्रेणीं च रक्षितुं उपयुज्यते ।

4. classnames file: श्रेणीलेबलं रक्षितुं उपयुज्यते

2.3 PaddleClas framework डाउनलोड् कुर्वन्तु

आदर्शलिङ्कः : १.PaddleClas मॉडल

अनजिप् कृत्वा भवन्तः PaddleClas फोल्डर् प्राप्नुवन्ति ।

2.4 सञ्चिकानिर्देशिकां रचयन्तु

PaddleClas फोल्डर् मध्ये app.py रचयन्तु ।

किं करोति: Gradio Demo चालयति इति स्क्रिप्ट् चालयन्तु

3. ResNet मॉडल प्रशिक्षण

३.१ विन्यासं परिवर्तयन्तु

प्रथमं PaddleClas फोल्डर् मध्ये ppcls-->configs-->ImageNet-->Res2Net-->Res2Net50_14w_8s.yaml अन्वेष्टुम् ।

epochs क्रमशः 100, category class_num 9, प्रशिक्षणप्रतिबिम्बमार्गः, सत्यापनप्रतिबिम्बमार्गः, लेबलसञ्चिका च परिवर्तयन्तु । कुलम् ७ परिवर्तनं कृतम् ।

  1. # global configs
  2. Global:
  3. checkpoints: null
  4. pretrained_model: null
  5. output_dir: ./output/
  6. device: gpu
  7. save_interval: 1
  8. eval_during_train: True
  9. eval_interval: 1
  10. epochs: 100###########################1##############################
  11. print_batch_step: 10
  12. use_visualdl: False
  13. # used for static mode and model export
  14. image_shape: [3, 224, 224]
  15. save_inference_dir: ./inference
  16. # model architecture
  17. Arch:
  18. name: Res2Net50_14w_8s
  19. class_num: 9############################2##############################
  20. # loss function config for traing/eval process
  21. Loss:
  22. Train:
  23. - CELoss:
  24. weight: 1.0
  25. epsilon: 0.1
  26. Eval:
  27. - CELoss:
  28. weight: 1.0
  29. Optimizer:
  30. name: Momentum
  31. momentum: 0.9
  32. lr:
  33. name: Cosine
  34. learning_rate: 0.1
  35. regularizer:
  36. name: 'L2'
  37. coeff: 0.0001
  38. # data loader for train and eval
  39. DataLoader:
  40. Train:
  41. dataset:
  42. name: ImageNetDataset
  43. image_root: ./weeds/images/#################3#######################
  44. cls_label_path: ./weeds/train.txt###########4########################
  45. transform_ops:
  46. - DecodeImage:
  47. to_rgb: True
  48. channel_first: False
  49. - RandCropImage:
  50. size: 224
  51. - RandFlipImage:
  52. flip_code: 1
  53. - NormalizeImage:
  54. scale: 1.0/255.0
  55. mean: [0.485, 0.456, 0.406]
  56. std: [0.229, 0.224, 0.225]
  57. order: ''
  58. batch_transform_ops:
  59. - MixupOperator:
  60. alpha: 0.2
  61. sampler:
  62. name: DistributedBatchSampler
  63. batch_size: 64
  64. drop_last: False
  65. shuffle: True
  66. loader:
  67. num_workers: 4
  68. use_shared_memory: True
  69. Eval:
  70. dataset:
  71. name: ImageNetDataset
  72. image_root: ./DeepWeeds/images/###############5#######################
  73. cls_label_path: ./DeepWeeds/val.txt###########6########################
  74. transform_ops:
  75. - DecodeImage:
  76. to_rgb: True
  77. channel_first: False
  78. - ResizeImage:
  79. resize_short: 256
  80. - CropImage:
  81. size: 224
  82. - NormalizeImage:
  83. scale: 1.0/255.0
  84. mean: [0.485, 0.456, 0.406]
  85. std: [0.229, 0.224, 0.225]
  86. order: ''
  87. sampler:
  88. name: DistributedBatchSampler
  89. batch_size: 64
  90. drop_last: False
  91. shuffle: False
  92. loader:
  93. num_workers: 4
  94. use_shared_memory: True
  95. Infer:
  96. infer_imgs: docs/images/inference_deployment/whl_demo.jpg
  97. batch_size: 10
  98. transforms:
  99. - DecodeImage:
  100. to_rgb: True
  101. channel_first: False
  102. - ResizeImage:
  103. resize_short: 256
  104. - CropImage:
  105. size: 224
  106. - NormalizeImage:
  107. scale: 1.0/255.0
  108. mean: [0.485, 0.456, 0.406]
  109. std: [0.229, 0.224, 0.225]
  110. order: ''
  111. - ToCHWImage:
  112. PostProcess:
  113. name: Topk
  114. topk: 5
  115. class_id_map_file: ./DeepWeeds/classnaems.txt###########7##################
  116. Metric:
  117. Train:
  118. Eval:
  119. - TopkAcc:
  120. topk: [1, 5]

३.२ स्वानलैबस्य उपयोगः

PaddleClas फोल्डर् मध्ये tools-->train.py इति अन्वेष्टुम् । हंसलाबस्य आरम्भं कुर्वन्तु

  1. # Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved.
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License");
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. from __future__ import absolute_import
  15. from __future__ import division
  16. from __future__ import print_function
  17. import os
  18. import sys
  19. __dir__ = os.path.dirname(os.path.abspath(__file__))
  20. sys.path.append(os.path.abspath(os.path.join(__dir__, '../')))
  21. from ppcls.utils import config
  22. from ppcls.engine.engine import Engine
  23. import swanlab
  24. # -*- coding: utf-8 -*-
  25. if __name__ == "__main__":
  26. args = config.parse_args()
  27. config = config.get_config(
  28. args.config, overrides=args.override, show=False)
  29. config.profiler_options = args.profiler_options
  30. engine = Engine(config, mode="train")
  31. ## 初始化swanlab
  32. swanlab.init(
  33. experiment_name="Swanlab_ResNet50_PaddleClas",
  34. description="Train ResNet50 for weeds classification.",
  35. project="Swanhub_Weeds_Classification",
  36. config={
  37. "model": "ResNet50",
  38. "optim": "Adam",
  39. "lr": 0.001,
  40. "batch_size": 64,
  41. "num_epochs": 100,
  42. "num_class": 9,
  43. }
  44. )
  45. engine.train()

PaddleClas मध्ये ppcls-->engine-->train-->utils.py इति ज्ञात्वा निम्नलिखितसङ्केतं योजयन्तु ।

  1. swanlab.log({"train_lr_msg": lr_msg.split(": ")[1]}) #
  2. swanlab.log({"train_CELoss": metric_msg.split(",")[0].split(': ')[1]}) ##
  3. 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

4. DarkNet53 मॉडल प्रशिक्षण

४.१ विन्यासं परिवर्तयतु

प्रथमं PaddleClas फोल्डर् मध्ये ppcls-->configs-->ImageNet-->DarkNet-->DarkNet53.yaml इति अन्वेष्टुम् ।

epochs क्रमशः 100, category class_num 9, प्रशिक्षणप्रतिबिम्बमार्गः, सत्यापनप्रतिबिम्बमार्गः, लेबलसञ्चिका च परिवर्तयन्तु । कुलम् ७ परिवर्तनं कृतम् ।

  1. # global configs
  2. Global:
  3. checkpoints: null
  4. pretrained_model: null
  5. output_dir: ./output/
  6. device: gpu
  7. save_interval: 1
  8. eval_during_train: True
  9. eval_interval: 1
  10. epochs: 100
  11. print_batch_step: 10
  12. use_visualdl: False
  13. # used for static mode and model export
  14. image_shape: [3, 256, 256]
  15. save_inference_dir: ./inference
  16. # model architecture
  17. Arch:
  18. name: DarkNet53
  19. class_num: 9
  20. # loss function config for traing/eval process
  21. Loss:
  22. Train:
  23. - CELoss:
  24. weight: 1.0
  25. epsilon: 0.1
  26. Eval:
  27. - CELoss:
  28. weight: 1.0
  29. Optimizer:
  30. name: Momentum
  31. momentum: 0.9
  32. lr:
  33. name: Cosine
  34. learning_rate: 0.1
  35. regularizer:
  36. name: 'L2'
  37. coeff: 0.0001
  38. # data loader for train and eval
  39. DataLoader:
  40. Train:
  41. dataset:
  42. name: ImageNetDataset
  43. image_root: F:/datasets/DeepWeeds/images
  44. cls_label_path: F:/datasets/DeepWeeds/train.txt
  45. transform_ops:
  46. - DecodeImage:
  47. to_rgb: True
  48. channel_first: False
  49. - RandCropImage:
  50. size: 256
  51. - RandFlipImage:
  52. flip_code: 1
  53. - NormalizeImage:
  54. scale: 1.0/255.0
  55. mean: [0.485, 0.456, 0.406]
  56. std: [0.229, 0.224, 0.225]
  57. order: ''
  58. batch_transform_ops:
  59. - MixupOperator:
  60. alpha: 0.2
  61. sampler:
  62. name: DistributedBatchSampler
  63. batch_size: 64
  64. drop_last: False
  65. shuffle: True
  66. loader:
  67. num_workers: 4
  68. use_shared_memory: True
  69. Eval:
  70. dataset:
  71. name: ImageNetDataset
  72. image_root: F:/datasets/DeepWeeds/images
  73. cls_label_path: F:/datasets/DeepWeeds/val.txt
  74. transform_ops:
  75. - DecodeImage:
  76. to_rgb: True
  77. channel_first: False
  78. - ResizeImage:
  79. resize_short: 292
  80. - CropImage:
  81. size: 256
  82. - NormalizeImage:
  83. scale: 1.0/255.0
  84. mean: [0.485, 0.456, 0.406]
  85. std: [0.229, 0.224, 0.225]
  86. order: ''
  87. sampler:
  88. name: DistributedBatchSampler
  89. batch_size: 64
  90. drop_last: False
  91. shuffle: False
  92. loader:
  93. num_workers: 4
  94. use_shared_memory: True
  95. Infer:
  96. infer_imgs: docs/images/inference_deployment/whl_demo.jpg
  97. batch_size: 10
  98. transforms:
  99. - DecodeImage:
  100. to_rgb: True
  101. channel_first: False
  102. - ResizeImage:
  103. resize_short: 292
  104. - CropImage:
  105. size: 256
  106. - NormalizeImage:
  107. scale: 1.0/255.0
  108. mean: [0.485, 0.456, 0.406]
  109. std: [0.229, 0.224, 0.225]
  110. order: ''
  111. - ToCHWImage:
  112. PostProcess:
  113. name: Topk
  114. topk: 5
  115. class_id_map_file: F:/datasets/DeepWeeds/classnames
  116. Metric:
  117. Train:
  118. Eval:
  119. - TopkAcc:
  120. topk: [1, 5]

४.२ स्वानलैबस्य उपयोगः

PaddleClas फोल्डर् मध्ये tools-->train.py इति अन्वेष्टुम् । आरंभीकरण swanlab परिवर्तनं कुर्वन्तु

  1. # Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved.
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License");
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. from __future__ import absolute_import
  15. from __future__ import division
  16. from __future__ import print_function
  17. import os
  18. import sys
  19. __dir__ = os.path.dirname(os.path.abspath(__file__))
  20. sys.path.append(os.path.abspath(os.path.join(__dir__, '../')))
  21. from ppcls.utils import config
  22. from ppcls.engine.engine import Engine
  23. import swanlab
  24. # -*- coding: utf-8 -*-
  25. if __name__ == "__main__":
  26. args = config.parse_args()
  27. config = config.get_config(
  28. args.config, overrides=args.override, show=False)
  29. config.profiler_options = args.profiler_options
  30. engine = Engine(config, mode="train")
  31. ## 初始化swanlab
  32. swanlab.init(
  33. experiment_name="Swanlab_DrakNet53_PaddleClas",
  34. description="Train DarkNet53 for weeds classification.",
  35. project="Swanhub_Weeds_Classification",
  36. config={
  37. "model": "DarkNet53",
  38. "optim": "Adam",
  39. "lr": 0.001,
  40. "batch_size": 64,
  41. "num_epochs": 100,
  42. "num_class": 9,
  43. }
  44. )
  45. 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 एकं सुविधाजनकं तुलनाचार्ट् कार्यं प्रदाति ।

5. ग्रेडियो डेमो

निरन्तरता इति । . .

6. Swanhub अपलोड् कृत्वा डेमो प्रदर्शयति

निरन्तरता इति । . .