UyApp
首页
注册

YOLOv8دىن پايدىلىنىپ يەرلىكتە رەسىم پەرىقلەندۈرۈش بولىقىنى مەشىقلەندۈرۈش

UyApp
مۇمكىن ئەمەس ئىش ،مەۋجۇت ئەمەس ئىش
2024-08-08 00:57:21

ياخشىمۇسىلەر UyApp مۇنبىرىدىكى تورداشلار ،يىقىنياغى مۇنبەر جىمىپ قاپتۇ ،مەنمۇ ئازراق ئىشلار بىلەن مەشغۇل بولۇپ قىلىپ يازما يوللىيالمىدىم ،شۇڭا بۈگۈن سىلەرگە ھازىر مودا بولۇۋاتقان سۈننى ئەقلى ئىقتىدار (AI) بولىقىنى مەشىقلەندۈرۈشنىڭ دەرىسلىكى ھەمدە مىنىڭ ئەمەلى مەشىق جەريانىمنى ئىلىپ كەلدىم.(مەشىقلەندۈرۈشكە ئىشلەتكەن تۈر يازما ئاخىرىدا تور دىسكىغا چىقىرىپ قويىمەن شۇنىڭدىن ئۈگەنسەڭلارمۇ بولىدۇ)

1.مەشىقلەندۈرۈش نەتىجىسى

5e293de033fc37170b7702e9fa27fe50_release.png
مەشىقلەندۈرۈش نەتىجىسى

بۇ مەن يىقىندا يازما يوللاش ئۈچۈن مەشىقلەندۈرگەن AI بولىقى ، ئاساسلىق بىر تال جىسىمنى پەرىق ئىتىدۇ ،يەنى مىۋە ساموراي (水果忍者)دىگەن ئويۇندىن مەخسۇس بومبىنى پەرىق ئىتىدىغان قىلىپ مەشىقلەندۈرگەن ،ئەلۋەتتە بىر قىتىمدا كۆپ جىسىمنى پەرىق قىلغىلى بولىدىغان قىلىپ مەشىقلەندۈرگىلى بولىدۇ .

2.مۇھىت ھازىرلاش

2.1 مەشىقلەندۈرگەن مۇھىت :

  • مەشىقلەندۈرۈشكە ئىشلىتىدىغان بولاى ھەم نەشىرى : YOLO بولىقىنىڭ V8n نەشىرى
  • كومپىيۇتىرنىڭ سەپلىمىسى: NVIDIA RTX3050 سۈرئەت كۆرسەتكۈچ ، I5-11400 مەركىزى بىرتەرەپ قىلغۇچ،16G ئىچكى ساقلىغۇچ
  • Python مۇھىتى: 3.1

2.2 python مۇھىتى ھازىرلاش

1.ئاۋال كومپىيۇترغا python نىڭ 3.8 دىن يۇقىرى نەشىرىنى قاچىلىۋالىمز .بۇنى تەپشىلى چۈشەندۈرۈپ ئۆتمەي چۈنكى بۇ توغۇرلۇق يازما يوللىنىپ بولغان ھەم ئەگەر Python نىمۇ قاچىلاشنى ئۇقمىسىڭىز بۇ تىخنىكىنى ئۈگۈنۈشكە سەل بالدۇرلۇق قىلىپ قالىدۇ.

2.Pytorch بولىقىنى چۈشۈرىمىز , بۇ يەردە دىققەت قىلىشقا تىگىشلىك ئىش ،ئەگەر كومپىيۇتىردا NVIDIA سۈرئەت كۆرسەتكۈچى بولمىسا چۈشۈرۈش بىتىدىكى Compute Platform دىگەن يەردە CPU دىگەن تاللاشنى تاللايمىز،بولمىسا NVIDIA توربىتىغا چىقىپ CUDA11.8 نەشىرىنى چۈشۈرۈپ قاچىلىساق بولىدۇ، ئۇششاق ئىشلارنى چۈشەندۈرۈپ ئولتۇرماي ئاتلاپ ئۆتۈپ كەتتىم.

ئاستىدىكى ئادىرسنى كۆچۈرۈپ ئىلىپ تاپپلاپ بولغاندىن كىيىن Run this Command دىگەن ئىستوندىكى بىر قۇر خەتنى cmd كۆزنىكىگە كىرگۈزسەك بولىدۇ ،بۇ جەريان بەك ئۇزۇن ،بىر سائەت ئەتراپىدا ۋاقىت كىتىدۇ.

地址:https://pytorch.org/
a8cef8cb6d3e55ccd238a2d0cac5a0a5_release.png
مىنىڭ چۈشۈرگەن نەشىرىم

2.3 كىرەكلىك python بولىقىنى ھەمدە باشقا بولاقلارنى چۈشۈرۈش:

pip install opencv-python
pip install urllib3
pip install requests
pip install ultralytics

بۇنى بىر قۇردىن كۆچۈرۈپ CMD كۆزىكىگە چاپلاپ چۈشۈرسەڭلار بولىدۇ ،ئوشۇق چۈشەندۈرۈش ھاجەتسىز.ئۇنڭدىن كىيىن ئەپ مۇھىم بولغان yolo بولىقىنى چۈشىرىمىز ،

https://github.com/ultralytics/assets/releases/download/v8.2.0/yolov8n.pt

بۇ چەتئەلنىڭ تورى شۇڭا بەزى ۋاقىتتا ئىچىلمايدۇ ،شۇڭا مەن مەزمۇن ئاخىرىغا بولاقنىڭ دۆلەت ئىچىدىكى چۈشۈرۈش ئادىرىسىنى يوللاپ قويىمەن،شۇ يەردىن چۈشۈرۋالساڭلا بولىدۇ.

3. تۈر ھۆججەتلىرىنى تەييارلاش

ئالدىنقى قەدەملەرنى مۇۋاپىقىيەتلىك پۈتتۈرگەن بولساڭلا ئەمدى ئاسان يەرىگە كەلدى ، ئاۋال كومپىيۇتىرنىڭ بىر يەرگە ھۆججەت خالتىسىدىن بىرنى قۇرىمىز. ئىسىم ۋە يولى چوقۇم ئىنگىلىزچە بولىشى كىرەك . ئاندىن ماۋۇ بويىچە ھۆججەتلەرنى قۇرىمىز.

fruit                          --项目总目录
├─datasets                     --数据文件
│  └─fruit                     --数据集目录
│      ├─test                  --训练集目录
│      │  ├─images             --训练集图片目录
│      │  └─labels             --训练集标签目录
│      ├─train                 --测试集目录
│      │  ├─images             --测试集图片目录
│      │  └─labels             --测试集标签目录
│      └─val                   --验证集目录
│          ├─images            --验证集图片目录
│          └─labels            --验证集标签目录

  1. مۇشۇنداق fruit دىگەن تۈر غول مۇندەرىجىسى
  2. ئۇنىڭ ئىچىگە datasets دىگەن مۇندەرىجىنى قۇرىمىز
  3. datasets نىڭ ئىچىگە يەنە fruit دىگەنمۇندەرىجىنى قۇرىمىز

  4. fruit نىڭ ئىچىگە test ، train ، val دىگەن ئۈچ مۇندەرىجىنى قۇرىمىز

  5. بۇ ئۈچىنىڭ ئىچىگە ئوخشاش images ۋە labels دىگەن مۇندەرىجىنى قۇرىمىز. ئۇھ...

4.سانلىق مەلۇماتلار توپلىمى تەييارلاش

4.1 رەسىم تەييارلاش

ئەمدى رەسمى تىمىغا كىردۇق ھە دىققەت قىلىڭلا ، مۇدىلنى مەشىقلەندۈرۈش ئۈچۈن نۇرغۇن رەسىم كىتىدۇ ،مودىلغا كۆرسەتكەن رەسىم قانچە كۆپ بولسا پەرىق ئىتىش ئىختىدارى شۇنچە ياخشى بولىدۇ لىكىن بىز ئۈگۈنۈش ئۈچۈن ئۇنچىلىك كۆپ رەسىم كەتمەيدۇ ، 50تال ئەتراپىدا بولسا بولدى ، ئاندىن بۇ رەسملەرنى train مۇندەرىجىسىنىڭ ئىچىدىكى images مۇندەرىجىسىنىڭ ئىچىگە سالىمىز. مەسلەن ماۋۇنىڭكىدەك.

6fa4b93e0a32893827c8713af45a6637_release.png

4.2 رەسىمگە بەلگە ئۇرۇش

ئاۋال labelimg دىگەن دىتالنى چۈشۈرىمىز (يازما ئاستىدا بار),ھەمدە 查看 دىگەن يەرىنى مۇنداق تەڭشەيمىز

644a93a1aee9eded539f8802835afc1a_release.png

labelimg

ئاندىن train مۇندەرىجىسىدى رەسىمنى مۇنداق قىلىپ ئاچىمىز

797d72d4e5cc0f0fc672c906821eef7d_release.png

ئاۋال 1 دىگەن يەرنى بىسىپ trainمۇندەرىجىسىدىكى image مۇندەرىجىسىن تاللايمىز.ئاندىن 2 دىگەن يەرنى بىسىپ train مۇندەرىجىسىدىكى labels دىگەن مۇندەرىجىنى تاللايمىز.دىققەت قىلشقا تىگىشلىكى 保存 دىگەن خەتنىڭ ئاستىدىكى چوقۇم yolo دىگەننى تاللىشىمىز كىرەك. مۇنداق چىقىدۇ.

4e9caf83a410e62fe11deae60fa93068_release.png

ئەمدى W نى باسساق بەلگە ئۇرىدىغان رامكا چىقىدۇ ،جىسىمنى تاللاپ بولغاندىن كىيىن ئىسىم قوي دەيدۇ ،ئوخشاش جىسىملارغا ئوخشاش ئىسىم قويىمىز،Aنى باسساق ئالدىنقى رەسىم Dنى باسساق كىيىنكى رەسىم چىقىدۇ

4bc8f6419ac6028610700ece35c89298_release.png

ھەممە رەسىمنى شۇنداق بىر تەرەپ قىلىپ چىقىمىز رەسىمنى قۇرۇق قويۇپ ئاتلاپ ئۆتۈپ كىتىشكە بولمايدۇ،ئەگەر بىر رەسىمدىن كۆپ شەكىلنى تاللىماقچى بولساڭلا شۇ رەسىمدە چوقۇم ھەممە شەكىل چىقىشى شەرت ئەمەس ،ئاز بولغاندا بىر شەكىل چىقمىسا txt ھۆججىتىنى ھاسىللىمايدۇ،تۈگىگەندىن كىيىن 保存 نى بىسىۋىتىپ train مۇندەرىجىسىگە كىرىپ قاراپ بىقىڭلا ساقلانغان بولسا دىتالدىن چىقىپ كەتسەڭلا بولىدۇ ، قارماي چىقىپ كىتىپ ساقلانمىغان بولسا باشتىن قىلىسىلەر🙂🙂

60fab2652c33ae1de88510fd34d1b895_release.png

ھەربىر رەسىمگە بىر تال ھۆججەت توغرا كىلىدۇ ,classes نى كىيىن ئىشلىتىمىز

5.مەشىقلەندۈرۈش

5.1 yaml ھۆججىتىنى يىزىش

بۇ ھۆججەت بولسا مەشىقلەندۈرىدىغان دىتالغا رەسىملەرنىڭ قەيەردىلىكىنى دەپ بىرىدىغان ھۆججەت ،بۇنى datasets مۇندەرىجىسىنىڭ ئىچىگە قويىمىز،ئىسمى چوقۇم ئىنگىلىزچە بولىشى كىرەك ،مەسلەن مىنىڭ fruit.yaml. ئاساسلىق شەكلى مۇنداق يىزىلىدۇ .

# Train/val
train: D:\Decktop\Study\YOLO\fruit\datasets\fruit\train\images
val:   D:\Decktop\Study\YOLO\fruit\datasets\fruit\val\images
test:  D:\Decktop\Study\YOLO\fruit\datasets\fruit\test\images
 
# Classes
nc: 1  # number of classes
names: ['boom']
  • train،val،test دىگەن يەرگە ئىبايام قۇرغان ئۈچ مۇندەرىجىنىڭ ئىچىدىكى images مۇندەرىجىسىنڭ ئادىرىسىنى يازىمىز،دىققەت قىلىشقا تىگىشلىىك ئىش ،قوش پەش، قوش تىرناق دىگەندەكلەر يوق .
  • nc دىگەن ئىبايامقى classes نىڭ ئىچىدە قانچە تال ئىسىم بار سانىنى يازىمىز ، مەسلەن مەن رەسىمدىن ئۈچ تال جىسىمغا بەلگە ئۇرغان بولسام 3 دەپ يازىمەن،مەن بۇ يەردە بىر تال بومبىنىلا تونۇتماقچى شۇڭا بىرتاللا ئىسىم بار

  • names دىگەن ئىسىم مەن بومبىغا boom دەم نام قويغان ھەم بىرتاللا قىسىم بار شۇڭا ['boom'] دەپلا يازدىم ئەگەر ئالما ،بانان قاتارلىق بىر نەچچە نەرسىگە بەلگە قويغان بولسام ["apple",'boom',"banana"] مۇشۇنداق ،ئىشقىلىپ نىمدەپ ئىسىم قويغان بولساڭلا شۇنداق يازىسىلەر مۇشۇ شەكىلدە.

5.2 مەشىقلەندۈرۈش

دەپ قويۇشنى ئۇنتۇپ قاپتىمەن test بىلەن val مۇندەرىجىسىنىڭ ئىچىگە train مۇندەرىجىسىنىڭ ئىچىدىن بىر تال رەسىم بىلەن txt ھۆججىتىنى ئىلىپ ماس كەلگەن مۇندەرىجىگە سىلىپ قويۇڭلار ،بۇ ئىككىسى مەشىقلەندۈرگەن بولاقنى سىنايدىغان ھەن نۇمۇر قويغاندا ئىشلىتىدىغان مۇندەرىجە،ھازىر ئۈچۈن بىر تال رەسىم سىلىپ قويساڭلار بولىدۇ ، imagesبىلەن label دىگەن مۇندەرىجىنىڭ ئىچىگە سالغان رەسىم بىلەن txtنىڭ ئىسمى ئوخشاش بولۇشى كىرەك.

بۇ كودنى yolov8_train.py غا يازىمىز ھەمدە تۈرنىڭ غول مۇندەرىجىسگە قويىمز

if __name__ == '__main__':
    # 主程序入口
    from ultralytics import YOLO
    import requests
    import urllib3
    # 禁用 SSL 验证警告
    requests.packages.urllib3.disable_warnings()
    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
    # 模型和数据路径
    model_yaml_path = 'yolov8n.pt'
    data_yaml_path = 'datasets\\fruit.yaml'
    # 初始化模型
    model = YOLO(model=model_yaml_path)
    # 训练模型
    results = model.train(data=data_yaml_path, epochs=3000)
    # 验证模型
    model.val()
    # 测试模型
    request = model('test.png')
    print(request)
    # 导出模型
    model.export(format='torchscript')

كود جىق ئەمەس model_yaml_path = 'yolov8n.pt' دىكى بۇ ھۆججەتنى مەزمۇن ئاخىرىدىن چۈشۈرۋىلىپ غول مۇندەرىجىگە سىلىپ قويىمىزdata_yaml_path ئىبايامقى yaml ھۆججىتىنىڭ ئادىرىسى. request = model('test.png') بىر تال test.png دىەەن رەسىمنى python ھۆججىتى بىلەن تەڭداش مۇندەرىجىگە قويىمىز،سىناق ئۈچۈن ،سىناق قىلمايمە دىسەڭلا # 测试模型 نىڭ كەينىدىكى كودنى يۇيۇۋەتسەڭلا بولىدۇ ، بەربىر كىيىن رەسمى سىناق قىلىمىز.

fd885dd74909243a46d4b976baac5cd9_release.png

مۇندەرىجىسى مۇنداق بولىدۇ

epochs=3000 دىگەن مەشىقلەندۈرۈش قىتىم سانى،بۇ كومپىيۇتىرىڭلارنىڭ سەپلىمىسىگە باغلىق مىنىڭ ئىككى سائەتتە مەشىقلەندۈرۈپ بولىدۇ ، يىڭى ئۈگەنگەندە 2000قىتىم بولسا بولىۋىرىدۇ ، بەك مۇرەككەپ رەسىم بولمىسىلا تونىۋىرىدۇ

13a91d8736467bb88cf5e3b40a7b9e82_release.png
مەشىقلەندۈرۈش
9f29a2cbadc2f9bf64935eb5176e52ce_release.png
مەشىقلەندۈرۈش

مەشىقلەندۈرۈش باشلاندى،ئەمدى كومپىيۇتىرنى قويۇپ تىلىفۇن ئويناپ ئولتۇرساڭلارلا بولدى، ئامال بار كوپىيۇتىرنى ئىشلەتمەڭلار ،مەشىقلەندۈرۈش جەريانىدا 显卡 بىلەن CPU نى بەك كۆپ ئىگىلەپ كىتىدۇ ،كومپىيۇتىر قىتىپ قالسا مەشىقلەندۈرگىنىڭلار باشتىن كىتىدۇ

5.3 بولاقنى تەكشۈرۈش

مەشىقلەندۈرۈپ بولغاندىن كىيىن غول مۇندەرىجىدە run دىگەن مۇندەرىجە ھاسىل بولىدۇ.

a457f05b66f0a4802b79554c76b65f2f_release.png
runs\detect\train\weights

مۇنۇ مۇندەرىجىدە ئىككى ھۆججەت چىقىدۇ بىرسى best.pt,يەنە بىرسى last.pt ، ئالدىدىكىسى نۇمۇرى ئەڭ يۇقۇرى بولغان بولاق ،كەينىدىكىسى بولاقنىڭ ئەڭ ئاخىرىدىكى مەشىقلەندۈرگەن نەتىجىسى، ئىككىسىنىڭ خالىغىنىنى ئىشلەتسەڭلار بولىدۇ.

6.پەرىقلەندۈرۈش

yolov8_test.py نىڭ ئىچىگە مۇنۇ كودنى يازىمىز

from ultralytics import YOLO
model = YOLO("last.pt")
request = model("test.png", save=True)

توغرا ،،،مۇشۇنداق ئاددى last.pt ھۆججەتنى مەن غول مۇندەرىجىگە كۆچۈرۋالدىم ،سىلەر كۆچۈرمىسەڭلا ئادىرىسىنى توغرا كىرگۈزۈڭلا،ئاندىن yolov8_test.py نى cmd دا يۈرگۈزىمىز

a81b1736efbab75de810c070e9a81a92_release.png

51 مىللى سىكىنۇتتا بىر تەرەپ قىلىپ بولدى دىمەك بىر سىكىنۇتتا تەخمىنەن 20تال رەسىمنى بىر تەرەپ قىلالايدۇ ، تونۇتقان رەسىم قانچە كۆپ بولسا سۈرئىتى شۇنچە تىز بولىدۇ best.pt بولىقىنى ئىشلەتسە سۈرئىتى تىىخىمۇ تىز بولىدۇ.

بىر تەرەپ قىلغان رەسىم ئاستىدىكى مۇندەرىجىگە ساقلىنىدۇ

fruit\runs\detect\predict
d754bf9b39616f6c2993b3e4bf369388_release.png


ئەگەر يازما ياراپ قالغان بولسا ئىنكاس قالدۇرۇپ قويساڭلار كىلەر قىتىم فىلىمنىڭ ئىچىدىن جىسىم تونۇيدىغان ئىقتىدار بىلەن ئويۇننىڭ ئىچىدىن جىسىم تونۇيدىغان ئىقتىدار توغۇرسىدا يازما يوللايمەن

مەن يازغان تۈر ،ئىچىدە كىرەكلىك ھەممە نەرسە بار ،ئەگەر خالىساڭلا كىيىن ماشىنا ،مۆشۈك ، ئىت ، دەرەخ ، ماشىنا تاختا دىگەندەكلەرنى مەشىقلەندۈرۈپ باقساڭلار بولىدۇ

https://www.123pan.com/s/1yYZVv-endAA.html?提取码:V19F

چۈشەنمىگەن يەرلىرىڭلارنى يازما ئاستىغا ياكى سوئال-جاۋاب ئىستونىغا يوللاپ قويساڭلار بولىدۇ

تامام