τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Τα ζιζάνια είναι ένα από τα σημαντικότερα προβλήματα στη γεωργία, που αποτελούν σοβαρή απειλή για την ανάπτυξη και την απόδοση των καλλιεργειών. Οι παραδοσιακές χειροκίνητες μέθοδοι αναγνώρισης και διαχείρισης είναι αναποτελεσματικές και ανακριβείς, επομένως απαιτείται προηγμένη τεχνολογία υπολογιστικής όρασης για τη βελτίωση της αποτελεσματικότητας και της ποιότητας της γεωργικής παραγωγής. Ως μοντέλο βαθιάς μάθησης, το ResNet έχει καλή απόδοση στο χειρισμό σύνθετων εργασιών ταξινόμησης εικόνων. Μπορεί όχι μόνο να λύσει αποτελεσματικά το πρόβλημα των διαφορετικών και πολύπλοκων ζιζανίων σε γεωργικές εκτάσεις, αλλά και να προωθήσει την ανάπτυξη έξυπνης γεωργίας και να μειώσει την εξάρτηση από τα χημικά φυτοφάρμακα αειφόρου αγροτικής ανάπτυξης. Χρησιμοποιώντας το ResNet για ταξινόμηση ζιζανίων, μπορούμε να παρέχουμε στους αγρότες πιο έξυπνες και ακριβείς λύσεις γεωργικής διαχείρισης, να προωθήσουμε τη βελτίωση της αποδοτικότητας της γεωργικής παραγωγής και τον εκσυγχρονισμό της γεωργικής βιομηχανίας. Επομένως, αυτό το έργο χρησιμοποιεί το τοπικό πλαίσιο PaddleClas+Swanlab+Gradio+Swanhub για τη διεξαγωγή πειραμάτων ταξινόμησης ζιζανίων.
Το PaddlePaddle είναι μια πλατφόρμα βαθιάς μάθησης σε επίπεδο επιχείρησης που αναπτύχθηκε από την Baidu, σχεδιασμένη για να υποστηρίζει εφαρμογές βαθιάς μάθησης πλήρους διαδικασίας από την ανάπτυξη μοντέλων έως την ανάπτυξη. Παρέχει πληθώρα εργαλείων και βιβλιοθηκών για την υποστήριξη μιας ποικιλίας εργασιών βαθιάς μάθησης, συμπεριλαμβανομένης της επεξεργασίας εικόνας, της επεξεργασίας φυσικής γλώσσας, της αναγνώρισης ομιλίας κ.λπ.PaddlePaddle
Το PaddleClas είναι μια βιβλιοθήκη εργαλείων που χρησιμοποιείται ειδικά για εργασίες ταξινόμησης εικόνων στο πλαίσιο Paddle. Παρέχει ένα πλήρες σύνολο λύσεων από άκρο σε άκρο, συμπεριλαμβανομένης της επεξεργασίας δεδομένων, του ορισμού μοντέλου, της εκπαίδευσης, της αξιολόγησης και της ανάπτυξης, που έχουν σχεδιαστεί για να βοηθούν τους προγραμματιστές να δημιουργήσουν και να αναπτύξουν γρήγορα αποτελεσματικά μοντέλα ταξινόμησης εικόνων.PaddleClas
Το SwanLab είναι ένα ανοιχτού κώδικα, ελαφρύ εργαλείο παρακολούθησης πειράματος τεχνητής νοημοσύνης που βελτιώνει την παρακολούθηση πειράματος ML και την εμπειρία συνεργασίας παρέχοντας ένα φιλικό API και συνδυάζοντας παρακολούθηση υπερπαραμέτρων, καταγραφή δεικτών, διαδικτυακή συνεργασία και άλλες λειτουργίες.Καλώς ήρθατε στην επίσημη τεκμηρίωση SwanLab |
Το Swanhub είναι μια κοινότητα συνεργασίας και κοινής χρήσης μοντέλου ανοιχτού κώδικα που αναπτύχθηκε από το Geek Studio. Παρέχει στους προγραμματιστές τεχνητής νοημοσύνης λειτουργίες όπως φιλοξενία μοντέλων τεχνητής νοημοσύνης, αρχεία εκπαίδευσης, εμφάνιση αποτελεσμάτων μοντέλων και ταχεία ανάπτυξη API.Καλώς ήρθατε στο Swanhub
Η Gradio είναι μια βιβλιοθήκη Python ανοιχτού κώδικα που έχει σχεδιαστεί για να βοηθά τους επιστήμονες δεδομένων, τους ερευνητές και τους προγραμματιστές που εργάζονται στον τομέα της μηχανικής μάθησης να δημιουργούν γρήγορα και να μοιράζονται διεπαφές χρήστη για μοντέλα μηχανικής μάθησης.Gradio
Εγκαταστήστε τις ακόλουθες 3 βιβλιοθήκες:
- 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. φάκελος εικόνων: Αυτός ο φάκελος χρησιμοποιείται για την αποθήκευση φακέλων εικόνων εκπαίδευσης, δοκιμών και επαλήθευσης.
3. Αρχεία train.txt, val.txt, test.txt: Αυτό το αρχείο χρησιμοποιείται για την αποθήκευση των διαδρομών εικόνας και των κατηγοριών συνόλων εκπαίδευσης, δοκιμών και επικύρωσης.
4. Αρχείο ονομάτων κλάσεων: χρησιμοποιείται για την αποθήκευση ετικετών κατηγοριών
Σύνδεσμος μοντέλου:Μοντέλο PaddleClas
Μετά την αποσυμπίεση, θα λάβετε τον φάκελο PaddleClas.
Δημιουργήστε το app.py στο φάκελο PaddleClas.
Αυτό που κάνει είναι: εκτελέστε το σενάριο που εκτελεί το Gradio Demo
Βρείτε πρώτα ppcls-->configs-->ImageNet-->Res2Net-->Res2Net50_14w_8s.yaml στον φάκελο PaddleClas.
Τροποποιήστε τις εποχές σε 100, την κατηγορία class_num σε 9, τη διαδρομή εικόνας εκπαίδευσης, τη διαδρομή εικόνας επαλήθευσης και το αρχείο ετικέτας αντίστοιχα. Συνολικά έγιναν 7 αλλαγές.
- # 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]
Βρείτε εργαλεία-->train.py στο φάκελο PaddleClas. Αρχικοποιήστε το 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_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()
Βρείτε το ppcls-->engine-->train-->utils.py στο PaddleClas και προσθέστε τον ακόλουθο κώδικα:
- 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]})
Βρείτε το ppcls-->engine-->engine.py στο φάκελο PaddleClas και προσθέστε τον ακόλουθο κώδικα:
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
Βρείτε πρώτα το ppcls-->configs-->ImageNet-->DarkNet-->DarkNet53.yaml στον φάκελο PaddleClas.
Τροποποιήστε τις εποχές σε 100, την κατηγορία class_num σε 9, τη διαδρομή εικόνας εκπαίδευσης, τη διαδρομή εικόνας επαλήθευσης και το αρχείο ετικέτας αντίστοιχα. Συνολικά έγιναν 7 αλλαγές.
- # 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]
Βρείτε εργαλεία-->train.py στο φάκελο PaddleClas. Τροποποίηση αρχικοποίησης 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
4.5 Εμφάνιση αποτελεσμάτων Swanlab
Όπως φαίνεται από το σχήμα, το μοντέλο ResNet50 αποδίδει καλύτερα από το μοντέλο DarkNet53 και το swanlab παρέχει μια βολική λειτουργία γραφήματος σύγκρισης.
Συνεχίζεται. . .
Συνεχίζεται. . .