informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Gulma merupakan salah satu masalah utama di bidang pertanian, yang merupakan ancaman serius terhadap pertumbuhan dan hasil tanaman. Identifikasi manual dan metode pengelolaan tradisional tidak efisien dan akurat, sehingga diperlukan teknologi visi komputer yang canggih untuk meningkatkan efisiensi dan kualitas produksi pertanian. Sebagai model pembelajaran mendalam, ResNet berkinerja baik dalam menangani tugas klasifikasi gambar yang kompleks. Model ini tidak hanya dapat secara efektif menyelesaikan masalah gulma yang beragam dan kompleks di lahan pertanian, tetapi juga mendorong pengembangan pertanian cerdas dan mengurangi ketergantungan pada pestisida kimia untuk mencapai tujuan tersebut pembangunan pertanian berkelanjutan. Dengan menggunakan ResNet untuk klasifikasi gulma, kami dapat memberikan solusi pengelolaan pertanian yang lebih cerdas dan akurat kepada petani, mendorong peningkatan efisiensi produksi pertanian, dan modernisasi industri pertanian. Oleh karena itu, proyek ini menggunakan kerangka kerja lokal PaddleClas+Swanlab+Gradio+Swanhub untuk melakukan eksperimen klasifikasi gulma.
PaddlePaddle adalah platform pembelajaran mendalam tingkat perusahaan yang dikembangkan oleh Baidu, dirancang untuk mendukung aplikasi pembelajaran mendalam dengan proses penuh mulai dari pengembangan model hingga penerapan. Ini menyediakan banyak alat dan perpustakaan untuk mendukung berbagai tugas pembelajaran mendalam, termasuk pemrosesan gambar, pemrosesan bahasa alami, pengenalan suara, dll.DayungDayung
PaddleClas adalah pustaka alat yang khusus digunakan untuk tugas klasifikasi gambar dalam kerangka Paddle. Ini memberikan serangkaian solusi menyeluruh yang lengkap, termasuk pemrosesan data, definisi model, pelatihan, evaluasi, dan penerapan, yang dirancang untuk membantu pengembang dengan cepat membangun dan menerapkan model klasifikasi gambar yang efisien.Kelas Dayung
SwanLab adalah alat pelacakan eksperimen AI bersumber terbuka dan ringan yang meningkatkan pengalaman pelacakan dan kolaborasi eksperimen ML dengan menyediakan API yang mudah digunakan dan menggabungkan pelacakan hyperparameter, perekaman indikator, kolaborasi online, dan fungsi lainnya.Selamat datang di dokumentasi resmi SwanLab |
Swanhub adalah komunitas kolaborasi dan berbagi model sumber terbuka yang dikembangkan oleh Geek Studio. Ini memberi pengembang AI fungsi seperti hosting model AI, catatan pelatihan, tampilan hasil model, dan penerapan API cepat.Selamat datang di Swanhub
Gradio adalah pustaka Python sumber terbuka yang dirancang untuk membantu ilmuwan data, peneliti, dan pengembang yang bekerja di bidang pembelajaran mesin dengan cepat membuat dan berbagi antarmuka pengguna untuk model pembelajaran mesin.Gradasi
Instal 3 perpustakaan berikut:
- paddle
- swanlab
- gradio
Perintah instalasi:
pip install paddle swanlab gradio
Kumpulan data klasifikasi gulma: DeepWeeds
- DeepWeeds
- --images
- ----1.jpg
- ----2.jpg
- --train.txt
- --val.txt
- --test.txt
- --classnames.txt
Fungsi dan arti masing-masing:
1. Folder DeepWeeds: Folder ini digunakan untuk menyimpan gambar folder gambar, file set verifikasi set pengujian, dan file label
2. folder gambar: Folder ini digunakan untuk menyimpan folder gambar pelatihan, pengujian, dan verifikasi.
3. file train.txt, val.txt, test.txt: File ini digunakan untuk menyimpan jalur gambar dan kategori set pelatihan, pengujian, dan validasi.
4. file nama kelas: digunakan untuk menyimpan label kategori
Tautan model:Model PaddleClas
Setelah unzip, Anda akan mendapatkan folder PaddleClas.
Buat app.py di folder PaddleClas.
Fungsinya adalah: menjalankan skrip yang menjalankan Gradio Demo
Pertama temukan ppcls-->configs-->ImageNet-->Res2Net-->Res2Net50_14w_8s.yaml di folder PaddleClas.
Ubah masing-masing epoch menjadi 100, kategori class_num menjadi 9, jalur gambar pelatihan, jalur gambar verifikasi, dan file label. Sebanyak 7 perubahan dilakukan.
- # 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]
Temukan alat-->train.py di folder PaddleClas. Inisialisasi 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()
Temukan ppcls-->engine-->train-->utils.py di PaddleClas dan tambahkan kode berikut:
- 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]})
Temukan ppcls-->engine-->engine.py di folder PaddleClas dan tambahkan kode berikut:
swanlab.log({'best_metric': best_metric.get('metric')})
Masukkan perintah berikut di konsol:
python -m paddle.distributed.launch tools/train.py -c ./ppcls/configs/ImageNet/Res2Net/Res2Net50_14w_8s.yaml
Lihat detail eksperimen di swanlab
Hasil percobaannya adalah sebagai berikut:
Lihat hasil eksperimen di swanlab
Masukkan kode berikut ke konsol:
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
Pertama temukan ppcls-->configs-->ImageNet-->DarkNet-->DarkNet53.yaml di folder PaddleClas.
Ubah masing-masing epoch menjadi 100, kategori class_num menjadi 9, jalur gambar pelatihan, jalur gambar verifikasi, dan file label. Sebanyak 7 perubahan dilakukan.
- # 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]
Temukan alat-->train.py di folder PaddleClas. Ubah inisialisasi 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()
Masukkan perintah berikut di konsol:
python -m paddle.distributed.launch tools/train.py -c ./ppcls/configs/ImageNet/DarkNet/DarknetNet53.yaml
Lihat detail eksperimen di swanlab
Hasil percobaannya adalah sebagai berikut:
Masukkan kode berikut ke konsol:
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 Tampilan hasil Swanlab
Seperti dapat dilihat dari gambar, kinerja model ResNet50 lebih baik daripada model DarkNet53, dan swanlab menyediakan fungsi bagan perbandingan yang nyaman.
Bersambung. . .
Bersambung. . .