ยินดีต้อนรับสู่ Schema.org
นี่คือที่เก็บโครงการ Schema.org ประกอบด้วยสคีมา ตัวอย่าง และซอฟต์แวร์ทั้งหมดที่ใช้ในการเผยแพร่ schema.org สำหรับตัวเว็บไซต์ โปรดดู Schema.org แทน
หมายเหตุ: ซอฟต์แวร์สนับสนุนส่วนใหญ่นำเข้าจากโมดูลย่อย: 'sdopythonapp'
ปัญหาและข้อเสนอได้รับการจัดการที่นี่โดยผู้ทำงานร่วมกันในโครงการ โดยเฉพาะผู้เข้าร่วมกลุ่มชุมชน W3C Schema.org หากคุณสนใจที่จะเข้าร่วม โปรดเข้าร่วมกลุ่มที่ W3C แนะนำตัวเอง และค้นหาหรือยื่นประเด็นที่คุณสนใจที่นี่ หากคุณยังใหม่กับ Git และ GitHub มีคำแนะนำที่เป็นประโยชน์เกี่ยวกับ GitHub ใน W3C Wiki
นอกจากนี้ยังมีการทดสอบการรวมอย่างต่อเนื่องเพื่อตรวจสอบคำขอดึงที่เข้ามา
ฉบับที่ 1 ใน GitHub เป็นจุดเริ่มต้นสำหรับการวางแผนการเผยแพร่ ควรให้ภาพรวมของงานที่กำลังจะจัดขึ้น ในแง่ของธีมกว้างๆ ปัญหาเฉพาะ และเหตุการณ์สำคัญในการเผยแพร่ ปัญหา #1 จะเชื่อมโยงกับจุดเข้าใช้งานต่อรุ่น หรือนำทางปัญหาผ่านป้ายกำกับหรือเหตุการณ์สำคัญภายใน GitHub
การเปลี่ยนแปลงทุกอย่างในไซต์เกิดขึ้นผ่านการสนทนาที่นี่ การเปลี่ยนแปลงที่สำคัญจะถูกบันทึกไว้ในบันทึกประจำรุ่นของเรา สามารถดูตัวอย่างบันทึกประจำรุ่นฉบับร่างใหม่ได้เป็นส่วนหนึ่งของไซต์ทดสอบสำหรับรุ่นถัดไปของเรา ทุกเดือนโดยประมาณ หลังจากการตรวจสอบขั้นสุดท้ายโดยกลุ่มควบคุม Schema.org และชุมชนในวงกว้าง เราจะเผยแพร่อย่างเป็นทางการ
เกี่ยวกับ CC และใบอนุญาตโอเพ่นซอร์สสำหรับเอกสารและซอฟต์แวร์ โปรดดูรายการคำถามที่พบบ่อยของเรา
เราสนใจคำแนะนำที่เป็นประโยชน์สำหรับการปรับปรุง schema.org อยู่เสมอ และคอลเลกชันของสคีมาของเราก็มีการเติบโตอย่างค่อยเป็นค่อยไปนับตั้งแต่เปิดตัวในปี 2011 เราพยายามจัดลำดับความสำคัญของการแก้ไขและการปรับปรุงแบบง่ายๆ สำหรับสคีมา ตัวอย่าง และเอกสารประกอบที่มีอยู่ของเรา มากกว่าการเพิ่มสิ่งใหม่ๆ คำศัพท์และเรามักจะเพิ่มสคีมาใหม่เมื่อมีหลักฐานว่าแอปพลิเคชันที่ใช้งานหนักบางส่วน (โดยเฉพาะอย่างยิ่งขนาดใหญ่) จะใช้ประโยชน์จากข้อมูล แอปพลิเคชันที่ใช้งานไม่จำเป็นต้องเป็นเครื่องมือค้นหา เครื่องมือซอฟต์แวร์ (เช่น โอเพ่นซอร์ส แนวทางการวิเคราะห์เว็บเสริมด้วยมาร์กอัป โปรแกรมเสริมของเบราว์เซอร์ หรือเครื่องมือบนคลาวด์) ล้วนเป็นพื้นที่ที่สมบูรณ์สำหรับการสำรวจและการทำงานร่วมกัน สิ่งสำคัญคือควรมีความคาดหวังที่สมเหตุสมผลว่าผู้บริโภคข้อมูลจะใช้ประโยชน์จากการเปลี่ยนแปลงให้เกิดประโยชน์ การระบุเหตุผลเพิ่มเติมบนพื้นฐานที่เครื่องมือค้นหาโดยทั่วไปพยายามใช้ข้อมูลที่มีโครงสร้างตาม Schema.org นั้นไม่เพียงพอ การเปลี่ยนแปลงเล็กๆ น้อยๆ และการเปลี่ยนแปลงที่เข้ากันได้แบบย้อนหลังนั้นง่ายต่อการรวมเข้าด้วยกัน
หมายเหตุ: Schema.org ไม่ได้พยายามที่จะบันทึกรายละเอียดทั้งหมดของเนื้อหาเว็บ มันจำเป็นต้องทำให้ความจริงที่ซับซ้อนมากขึ้นง่ายขึ้น ซึ่งหมายความว่ามีหลายกรณีที่การเพิ่มรายละเอียดเพิ่มเติมให้กับ Schema.org ดูเป็นไปได้ อย่างไรก็ตาม เพื่อให้ Schema.org เรียบง่ายและใช้งานได้สำหรับผู้เผยแพร่และผู้ดูแลเว็บ เรามักจะเลือกที่จะไม่เพิ่มรายละเอียดดังกล่าว
Schema.org ใช้มาตรฐานเว็บ เช่น JSON-LD, Microdata และ RDFa เพื่อให้ขยายได้โดยอิสระ (เช่น ดูคำศัพท์ของ GS1)
นอกจากนี้ เรายังไม่น่าจะจัดโครงสร้างคำศัพท์ของ Schema.org ในวงกว้างอีก หากสิ่งเหล่านั้นได้รับแรงจูงใจจากการพิจารณาถึงความสง่างาม "การสร้างแบบจำลองที่เหมาะสม" ความบริสุทธิ์ทางภววิทยา หรือการผสมผสานแนวความคิดเท่านั้น แม้ว่าผู้ก่อตั้งโครงการและทีมงานจะคุ้นเคยและเคารพประเพณีที่อยู่เบื้องหลังข้อกังวลดังกล่าว แต่ขนาด ขอบเขต และลักษณะของ Schema.org กำหนดให้เราต้องแลกกับความสง่างามและความสม่ำเสมอในระดับโลกเพื่อแลกกับแนวคิดที่ค่อนข้างซับซ้อนกว่านั้นเกี่ยวกับวิวัฒนาการที่เพิ่มขึ้นและการปฏิบัติจริง ความอดทนต่อรูปแบบที่ไม่อยู่ใน Ontology ที่เป็นทางการ ข้อเสนอสำหรับการรวมโครงสร้างความรู้ที่ใช้ตรรกะข้ามโดเมนอาจได้รับการตอบรับที่ดีกว่า เช่น ในชุมชน Ontolog
บางครั้งเราจะแนะนำประเภทที่ไม่มีการเชื่อมโยงทรัพย์สินโดยเฉพาะ เพียงเพื่อเหตุผลด้านการใช้งานมาร์กอัป ในภววิทยาอย่างเป็นทางการ สิ่งนี้มักถูกมองว่าเป็นการสร้างแบบจำลองที่ไม่ดี อย่างไรก็ตาม โครงสร้างที่เทียบเท่ากันในเชิงตรรกะอาจส่งผลให้เกิดข้อผิดพลาดอีกมากมายจากผู้เผยแพร่/ผู้ดูแลเว็บที่ไม่คุ้นเคยกับแนวคิดอย่างเป็นทางการที่ซ่อนอยู่เบื้องหลัง JSON-LD หรือ RDF/S
Schema.org ไม่ใช่ระบบปิด และโครงการริเริ่มอื่นๆ (เช่น Wikidata หรือ GS1) ได้กำหนดคำศัพท์อื่นๆ มากมายที่สามารถใช้ร่วมกับคำที่เรากำหนดได้ที่ schema.org นอกจากนี้เรายังพยายามปรับการออกแบบของเราให้สอดคล้องกับมาตรฐานภายนอกและความคิดริเริ่มที่เกี่ยวข้อง แม้ว่าจะลดความสง่างามระดับโลกของ Schema.org ที่พิจารณาเพียงลำพังก็ตาม ตัวอย่างเช่น ในบริบทบรรณานุกรมหรือมรดกทางวัฒนธรรม เราอาจได้รับอิทธิพลจากโครงการริเริ่มต่างๆ เช่น MARC, BibFrame และ FRBR ในขณะที่สำหรับอีคอมเมิร์ซ เราร่วมมือกับ Good Relations และ GS1 ข้อกำหนดที่เกี่ยวข้องกับข่าวสารของ Schema.org ได้รับอิทธิพลอย่างมากจากการผสมผสานการออกแบบ rNews ของ IPTC ควบคู่ไปกับความร่วมมือกับผู้ตรวจสอบข้อเท็จจริง โครงการ Trust และอื่นๆ คำศัพท์ที่เกี่ยวข้องกับทีวีและดนตรีของเราได้รับอิทธิพลอย่างมากจากการทำงานร่วมกับ BBC และ European Broadcasting Union ควบคู่ไปกับ Music Ontology และ MusicBrainz สคีมาของเราสะท้อนการออกแบบก่อนหน้านี้เหล่านี้ เราต้องการทำงานร่วมกันในลักษณะนี้ โดยปรับปรุง Schema.org ทีละน้อย และทำงานเพื่อขัดเกลา ผสานรวม และผสมผสานการออกแบบดังกล่าว แทนที่จะสร้างแบบจำลองที่แท้จริงของเราเองโดยแยกจากกัน ผลลัพธ์อาจขาดความสง่างามระดับโลก แต่ทำให้งานของเราสอดคล้องกับความพยายามที่เกี่ยวข้องทั่วโลก
เรายินดีรับประเด็นที่ติดตามปัญหาด้านการใช้งานและความสามารถในการอ่านเสมอ แต่สนับสนุนให้มุ่งเน้นไปที่สถานการณ์ที่เป็นรูปธรรม (เช่น วิธีอธิบายเหตุการณ์ที่เกิดซ้ำ) แทนที่จะเป็นข้อกังวลทางปรัชญาระดับโลก (เช่น การจองหรือการดำเนินการนั้นเป็นเหตุการณ์ "จริงๆ" หรือไม่) เราให้ความสำคัญกับการเชื่อมโยงกันของท้องถิ่น (มีวิธีที่สมเหตุสมผลในการอธิบายสถานการณ์ทั่วไปหลายประการ) มากกว่าความสง่างามระดับโลก (มีทฤษฎีระดับโลกที่ทุกสิ่งมีที่ที่สมเหตุสมผล) นี่ไม่ได้หมายความว่าเราไม่เคยมีการล้างข้อมูลเลย แต่จะมีความสมดุลกับ (และมักจะมีน้ำหนักเกิน) ข้อควรพิจารณาอื่นๆ
เมื่อเราเพิ่มคำศัพท์ ซึ่งมักจะอยู่ในพื้นที่ "รอดำเนินการ" เราสนับสนุนข้อเสนอแนะที่มีมุมมองทั่วโลก: คำใหม่เกี่ยวข้องกับคำอื่นอย่างไร สามารถใช้ร่วมกับรูปแบบที่มีอยู่แล้วได้อย่างไร เป็นต้น การเปลี่ยนแปลงที่เราทำในระหว่าง ขั้นตอนการบูรณาการนี้สะท้อนถึงการพิจารณาดังกล่าว แต่โดยปกติจะแสดงออกผ่านการใช้ถ้อยคำ ตัวอย่าง หรือการปรับเปลี่ยนเอกสารประกอบของลิงก์ประเภท/ทรัพย์สิน แทนที่จะผ่านการปรับโครงสร้างใหม่ครั้งใหญ่
ดูเพิ่มเติมเกี่ยวกับ "วิธีการทำงานของเรา"
สำหรับผู้ทำงานร่วมกันส่วนใหญ่ สิ่งที่คุณต้องรู้เกี่ยวกับซอฟต์แวร์ก็คือวิธีใช้งาน วัตถุประสงค์ของซอฟต์แวร์คือการสร้างสำเนาคงที่ของไซต์ Schema.org รวมถึงการเปลี่ยนแปลงในเครื่องที่อาจเกิดขึ้น เพื่อตรวจสอบและรันหลังเว็บเซิร์ฟเวอร์ธรรมดาบนระบบในเครื่องเพื่อทำการทดสอบ ในลักษณะเดียวกับการนำเวอร์ชันที่ใช้งานจริงไปใช้กับเซิร์ฟเวอร์ระบบคลาวด์ เวอร์ชันภายในเครื่องของคุณก็จะนำไปใช้กับเครื่องเสมือนได้โดยใช้ gcloud เพื่อเปิดใช้การทำงานร่วมกันกับผู้อื่นได้
คำแนะนำแบบเต็มมีอยู่ใน SOFTWARE_README.md ซึ่งอธิบายวิธีสร้างสำเนาในเครื่องเริ่มต้นเพื่อใช้งาน จากนั้นจึงพัฒนาเพื่อทดสอบการเปลี่ยนแปลงใดๆ โดยพื้นฐานแล้ว คุณจะต้องมีสภาพแวดล้อมที่เหมือน Linux (inc Mac) ที่โหลดด้วย Python เวอร์ชัน 3.6 ขึ้นไป จากนั้น คุณสามารถสร้างรุ่นทดสอบของ schema.org ที่ทำงานบนเครื่องของคุณเองให้เข้าถึงได้ใน http://localhost:8080/ หรือโพสต์ไว้บน appspot.com เพื่อการทำงานร่วมกัน ดูเอกสารประกอบ Appengine สำหรับรายละเอียดของคำสั่ง gcloud ที่เกี่ยวข้อง
ข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับซอฟต์แวร์และการใช้งานมีอยู่ใน SOFTWARE_README.md ดูหมายเหตุในวิกิด้วย: https://github.com/schemaorg/schemaorg/wiki/Contributing
สคีมาและตัวอย่างทั้งหมดอยู่ใน data/ ในไฟล์ที่เข้ารหัส utf-8
ไฟล์สคีมาหลักคือ data/schema.ttl (utf-8)
ในขณะที่พัฒนาสคีมา การใช้ data/sdo-somethinghere-schema.ttl อาจมีประโยชน์ได้
รูปแบบนี้ยึดตาม W3C RDFS ในรูปแบบ RDF/Turtle
ตัวอย่างจะถูกจัดเก็บไว้ใน data/examples.txt (utf-8) และไฟล์ .txt อื่นๆ
เช่นเดียวกับสคีมา data/examples.txt จะถูกอ่านด้วย จะมีประโยชน์ในการพัฒนาโดยใช้ไฟล์แยกกัน
เมื่อคำศัพท์ถูกรวมเข้ากับพื้นที่เก็บข้อมูลหลักในที่สุด ข้อมูลสคีมาจะถูกรวมเข้ากับ schema.org อย่างไรก็ตาม ตัวอย่างจะยังคงอยู่ในไฟล์แยกกัน เนื่องจากวิธีนี้ทำงานได้ดีกว่ากับกลไกการเปรียบเทียบไฟล์ของ git
ลำดับชั้น data/releases/ สงวนไว้สำหรับสแนปช็อตการเปิดตัว (ดู https://schema.org/version/)
ลำดับชั้น ext// สงวนไว้สำหรับส่วนขยาย (ดู https://schema.org/docs/extension.html)
เราไม่ใช้สาขา GitHub สำหรับงานระหว่างดำเนินการอีกต่อไป หลัก/สาขาคือผู้สมัครคนล่าสุดของเรา ไม่รับประกันว่าจะอยู่ในสถานะที่สอดคล้องกันทางแนวคิด แต่ควรมีเสถียรภาพก่อนที่จะเผยแพร่ผู้สมัครรับเลือกตั้งเพื่อตรวจสอบ
เอกสารนี้เกี่ยวข้องกับซอฟต์แวร์โค้ดเบสมากกว่าตัว schema.org อย่างไรก็ตาม โปรดทราบว่าป้ายกำกับ ความคิดเห็น และเอกสารควรใช้ภาษาอังกฤษแบบสหรัฐอเมริกา (ในโค้ดและสคีมา) หากต้องการตัวเลือกระหว่างเวอร์ชันภาษาอังกฤษ โปรดมุ่งเป้าไปที่ภาษาอังกฤษสากลทุกครั้งที่เป็นไปได้
ดูเพิ่มเติม: https://twitter.com/schemaorg_dev
ตัวอย่าง:
-
ใบอนุญาต Apache-2.0
สารบัญ
กรอบการตรวจจับวัตถุ Darknet และ YOLO
เอกสาร
ข้อมูลทั่วไป
เวอร์ชันดาร์กเน็ต
MSCOCO ตุ้มน้ำหนักที่ผ่านการฝึกอบรมล่วงหน้า
อาคาร
Google Colab
วิธีการลินุกซ์ CMake
วิธี Windows CMake
การใช้ดาร์กเน็ต
คลีไอ
การฝึกอบรม
เครื่องมือและลิงค์อื่นๆ
แผนการทำงาน
เป้าหมายระยะสั้น
เป้าหมายระยะกลาง
เป้าหมายระยะยาว
กรอบการตรวจจับวัตถุ Darknet และ YOLO
โลโก้ darknet และ hank.ai
Darknet เป็นเฟรมเวิร์กโครงข่ายประสาทเทียมแบบโอเพ่นซอร์สที่เขียนด้วยภาษา C, C++ และ CUDA
YOLO (You Only Look Once) เป็นระบบตรวจจับวัตถุแบบเรียลไทม์ที่ล้ำสมัย ซึ่งทำงานในกรอบ Darknet
อ่านวิธีที่ Hank.ai ช่วยเหลือชุมชน Darknet/YOLO
ประกาศ Darknet V3 "Jazz"
ดูเว็บไซต์ Darknet/YOLO
โปรดอ่านคำถามที่พบบ่อยของ Darknet/YOLO
เข้าร่วมเซิร์ฟเวอร์ Discord ของ Darknet/YOLO
เอกสาร
กระดาษ YOLOv7
กระดาษปรับขนาด-YOLOv4
กระดาษ YOLOv4
กระดาษ YOLOv3
ข้อมูลทั่วไป
เฟรมเวิร์ก Darknet/YOLO ยังคงเร็วและแม่นยำมากกว่าเฟรมเวิร์กและเวอร์ชันอื่นๆ ของ YOLO
เฟรมเวิร์กนี้เป็นทั้งฟรีและโอเพ่นซอร์สโดยสมบูรณ์ คุณสามารถรวม Darknet/YOLO เข้ากับโปรเจ็กต์และผลิตภัณฑ์ที่มีอยู่ รวมถึงโปรเจ็กต์เชิงพาณิชย์ โดยไม่ต้องมีใบอนุญาตหรือจ่ายค่าธรรมเนียม
Darknet V3 ("Jazz") ที่เปิดตัวในเดือนตุลาคม 2024 สามารถรันวิดีโอชุดข้อมูล LEGO ได้อย่างแม่นยำที่สูงถึง 1,000 FPS เมื่อใช้ NVIDIA RTX 3090 GPU ซึ่งหมายความว่าแต่ละเฟรมวิดีโอจะถูกอ่าน ปรับขนาด และประมวลผลโดย Darknet/YOLO ใน 1 มิลลิวินาทีหรือ น้อย.
โปรดเข้าร่วมเซิร์ฟเวอร์ Darknet/YOLO Discord หากคุณต้องการความช่วยเหลือหรือต้องการหารือเกี่ยวกับ Darknet/YOLO: https://discord.gg/zSq8rtW
Darknet/YOLO เวอร์ชัน CPU สามารถทำงานบนอุปกรณ์ง่ายๆ เช่น Raspberry Pi, เซิร์ฟเวอร์คลาวด์และ colab, เดสก์ท็อป, แล็ปท็อป และอุปกรณ์ฝึกอบรมระดับไฮเอนด์ Darknet/YOLO เวอร์ชัน GPU ต้องใช้ GPU ที่รองรับ CUDA จาก NVIDIA
Darknet/YOLO เป็นที่รู้จักว่าทำงานบน Linux, Windows และ Mac ดูคำแนะนำการสร้างด้านล่าง
เวอร์ชันดาร์กเน็ต
เครื่องมือ Darknet ดั้งเดิมที่เขียนโดย Joseph Redmon ในปี 2556-2560 ไม่มีหมายเลขเวอร์ชัน เราพิจารณาเวอร์ชันนี้ 0.x
repo Darknet ยอดนิยมถัดไปที่ดูแลโดย Alexey Bochkovskiy ระหว่างปี 2560-2564 ยังไม่มีหมายเลขเวอร์ชันเช่นกัน เราพิจารณาเวอร์ชัน 1.x นี้
repo Darknet ที่สนับสนุนโดย Hank.ai และดูแลโดย Stéphane Charette ซึ่งเริ่มในปี 2023 เป็นรุ่นแรกที่มีคำสั่งเวอร์ชัน ตั้งแต่ปี 2023 จนถึงปลายปี 2024 ส่งคืนเวอร์ชัน 2.x "OAK"
เป้าหมายคือการพยายามทำลายฟังก์ชันการทำงานที่มีอยู่ให้เหลือเพียงเล็กน้อยในขณะที่ทำความคุ้นเคยกับโค้ดเบส
เขียนขั้นตอนการสร้างใหม่เพื่อให้เรามี 1 วิธีที่เป็นหนึ่งเดียวในการสร้างโดยใช้ CMake บนทั้ง Windows และ Linux
แปลง codebase เพื่อใช้คอมไพเลอร์ C++
ปรับปรุง Chart.png ขณะฝึกอบรม
การแก้ไขข้อบกพร่องและการเพิ่มประสิทธิภาพที่เกี่ยวข้องกับประสิทธิภาพ ส่วนใหญ่เกี่ยวข้องกับการลดเวลาที่ใช้ในการฝึกอบรมเครือข่าย
สาขาสุดท้ายของ codebase นี้คือเวอร์ชัน 2.1 ในสาขา v2
การพัฒนาระยะต่อไปเริ่มต้นในกลางปี 2024 และเปิดตัวในเดือนตุลาคม 2024 ขณะนี้คำสั่ง version ส่งคืน 3.x "JAZZ"
คุณสามารถชำระเงินสาขา v2 ก่อนหน้าได้ตลอดเวลา หากคุณต้องการรันคำสั่งใดคำสั่งหนึ่งเหล่านี้ แจ้งให้เราทราบเพื่อให้เราตรวจสอบการเพิ่มคำสั่งที่หายไปกลับเข้าไปได้
ลบคำสั่งเก่าและคำสั่งที่ไม่ได้รับการดูแลออกจำนวนมาก
การเพิ่มประสิทธิภาพการทำงานหลายอย่าง ทั้งในขณะฝึกอบรมและระหว่างการอนุมาน
Legacy C API ได้รับการแก้ไข แอปพลิเคชันที่ใช้ Darknet API ดั้งเดิมจะต้องมีการแก้ไขเล็กน้อย: https://darknetcv.ai/api/api.html
Darknet V3 C และ C++ API ใหม่: https://darknetcv.ai/api/api.html
แอพใหม่และโค้ดตัวอย่างใน src-examples: https://darknetcv.ai/api/files.html
MSCOCO ตุ้มน้ำหนักที่ผ่านการฝึกอบรมล่วงหน้า
YOLO เวอร์ชันยอดนิยมหลายเวอร์ชันได้รับการฝึกอบรมล่วงหน้าเพื่อความสะดวกในชุดข้อมูล MSCOCO ชุดข้อมูลนี้มี 80 คลาส ซึ่งสามารถดูได้ในไฟล์ข้อความ cfg/coco.names
มีชุดข้อมูลที่เรียบง่ายกว่าและตุ้มน้ำหนักที่ได้รับการฝึกล่วงหน้าอื่นๆ หลายชุดสำหรับการทดสอบ Darknet/YOLO เช่น LEGO Gears และ Rolodex ดูคำถามที่พบบ่อยของ Darknet/YOLO สำหรับรายละเอียด
ตุ้มน้ำหนักที่ฝึกล่วงหน้าของ MSCOCO สามารถดาวน์โหลดได้จากหลายตำแหน่ง และยังสามารถดาวน์โหลดได้จากที่เก็บนี้อีกด้วย:
YOLOv2 พฤศจิกายน 2559
YOLOv2-จิ๋ว
YOLOv2-เต็ม
YOLOv3 พฤษภาคม 2018
YOLOv3-จิ๋ว
YOLOv3-เต็ม
YOLOv4 พฤษภาคม 2020
YOLOv4-จิ๋ว
YOLOv4-เต็ม
YOLOv7 สิงหาคม 2022
YOLOv7-จิ๋ว
YOLOv7-เต็ม
ตุ้มน้ำหนักที่ได้รับการฝึกล่วงหน้าของ MSCOCO มีไว้เพื่อการสาธิตเท่านั้น ไฟล์ .cfg และ .names ที่เกี่ยวข้องสำหรับ MSCOCO อยู่ในไดเร็กทอรี cfg คำสั่งตัวอย่าง:
wget --no-clobber https://github.com/hank-ai/darknet/releases/download/v2.0/yolov4-tiny.weights darknet02displayannotatedimages coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg darknet03display_videos coco.names yolov4-tiny.cfg yolov4-tiny.weights video1.avi DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights วิดีโอ1. เอวี
โปรดทราบว่าผู้คนได้รับการคาดหวังให้ฝึกอบรมเครือข่ายของตนเอง โดยปกติแล้ว MSCOCO จะใช้เพื่อยืนยันว่าทุกอย่างทำงานได้อย่างถูกต้อง
อาคาร
วิธีการสร้างต่างๆ ที่มีอยู่ในอดีต (ก่อนปี 2023) ได้ถูกรวมเข้าด้วยกันเป็นโซลูชันแบบครบวงจรเดียว Darknet ต้องการ C++17 หรือใหม่กว่า OpenCV และใช้ CMake เพื่อสร้างไฟล์โปรเจ็กต์ที่จำเป็น
คุณไม่จำเป็นต้องรู้ C++ เพื่อสร้าง ติดตั้ง หรือรัน Darknet/YOLO เช่นเดียวกับที่คุณไม่จำเป็นต้องเป็นช่างเครื่องก็ขับรถได้
Google Colab
ลินุกซ์
หน้าต่าง
ระวังหากคุณกำลังติดตามบทช่วยสอนเก่าที่มีขั้นตอนการสร้างที่ซับซ้อนมากขึ้น หรือขั้นตอนการสร้างที่ไม่ตรงกับสิ่งที่อยู่ใน readme นี้ ขั้นตอนการสร้างใหม่ตามที่อธิบายไว้ด้านล่างเริ่มต้นในเดือนสิงหาคม 2023
นักพัฒนาซอฟต์แวร์ควรไปที่ https://darknetcv.ai/ เพื่อรับข้อมูลเกี่ยวกับภายในของเฟรมเวิร์กการตรวจจับวัตถุ Darknet/YOLO
Google Colab
วิธีการของ Google Colab เหมือนกับวิธีการของ Linux มีสมุดบันทึก Jupyter หลายเครื่องที่แสดงวิธีทำงานบางอย่าง เช่น การฝึกอบรมเครือข่ายใหม่
ดูสมุดบันทึกในไดเรกทอรีย่อย colab และ/หรือทำตามคำแนะนำของ Linux ด้านล่าง
วิธีการลินุกซ์ CMake
บทช่วยสอนการสร้าง Darknet สำหรับ Linux
ทางเลือก: หากคุณมี NVIDIA GPU ที่ทันสมัย คุณสามารถติดตั้ง CUDA หรือ CUDA+cuDNN ได้ ณ จุดนี้ หากติดตั้งแล้ว Darknet จะใช้ GPU ของคุณเพื่อเพิ่มความเร็วในการประมวลผลภาพ (และวิดีโอ)
คุณต้องลบไฟล์ CMakeCache.txt ออกจากไดเรกทอรีบิลด์ Darknet ของคุณเพื่อบังคับให้ CMake ค้นหาไฟล์ที่จำเป็นทั้งหมดอีกครั้ง
อย่าลืมสร้าง Darknet ขึ้นมาใหม่
Darknet สามารถทำงานได้โดยไม่ต้องใช้มัน แต่หากคุณต้องการฝึกเครือข่ายแบบกำหนดเอง จำเป็นต้องมี CUDA หรือ CUDA+cuDNN
ไปที่ https://developer.nvidia.com/cuda-downloads เพื่อดาวน์โหลดและติดตั้ง CUDA
ไปที่ https://developer.nvidia.com/rdp/cudnn-download หรือ https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager-installation-overview เพื่อดาวน์โหลด และติดตั้ง cuDNN
เมื่อคุณติดตั้ง CUDA แล้ว ตรวจสอบให้แน่ใจว่าคุณสามารถเรียกใช้ nvcc และ nvidia-smi ได้ คุณอาจต้องแก้ไขตัวแปร PATH ของคุณ
หากคุณติดตั้ง CUDA หรือ CUDA+cuDNN ในภายหลัง หรือคุณอัพเกรดเป็นซอฟต์แวร์ NVIDIA เวอร์ชันใหม่กว่า:
คำแนะนำเหล่านี้ถือว่า (แต่ไม่จำเป็นต้องใช้!) ระบบที่ใช้ Ubuntu 22.04 ปรับเปลี่ยนตามความจำเป็นหากคุณใช้การกระจายแบบอื่น
sudo apt-get ติดตั้ง build-essential git libopencv-dev cmake mkdir ~/srccd ~/src git clone https://github.com/hank-ai/darknetcd darknet mkdir buildcd build cmake -DCMAKEBUILDTYPE=Release .. make -j4 แพ็คเกจ sudo dpkg -i darknet-VERSION.deb
หากคุณใช้ CMake เวอร์ชันเก่า คุณจะต้องอัปเกรด CMake ก่อนจึงจะสามารถเรียกใช้คำสั่ง cmake ด้านบนได้ การอัพเกรด CMake บน Ubuntu สามารถทำได้ด้วยคำสั่งต่อไปนี้:
sudo apt-get ล้าง cmake sudo snap ติดตั้ง cmake --classic
หากใช้ bash เป็นเชลล์คำสั่ง คุณจะต้องรีสตาร์ทเชลล์ ณ จุดนี้ หากใช้ปลาควรเลือกเส้นทางใหม่ทันที
ผู้ใช้ขั้นสูง:
หากคุณต้องการสร้างไฟล์การติดตั้ง RPM แทนไฟล์ DEB โปรดดูบรรทัดที่เกี่ยวข้องใน CM_package.cmake ก่อนที่จะรันแพ็คเกจ make -j4 คุณจะต้องแก้ไขสองบรรทัดนี้:
SET (CPACKGENERATOR "DEB")# SET (CPACKGENERATOR "RPM")
สำหรับ distros เช่น Centos และ OpenSUSE คุณจะต้องสลับสองบรรทัดนั้นใน CM_package.cmake เป็น:
SET (CPACKGENERATOR "DEB") SET (CPACKGENERATOR "RPM")
หากต้องการติดตั้งแพ็คเกจการติดตั้งเมื่อสร้างเสร็จแล้ว ให้ใช้ตัวจัดการแพ็คเกจตามปกติสำหรับการแจกจ่ายของคุณ ตัวอย่างเช่น บนระบบที่ใช้ Debian เช่น Ubuntu:
sudo dpkg -i darknet-2.0.1-Linux.deb
การติดตั้งแพ็คเกจ .deb จะคัดลอกไฟล์ต่อไปนี้:
/usr/bin/darknet เป็นโปรแกรมปฏิบัติการ Darknet ปกติ เรียกใช้เวอร์ชัน darknet จาก CLI เพื่อยืนยันว่าติดตั้งอย่างถูกต้อง
/usr/include/darknet.h คือ Darknet API สำหรับนักพัฒนา C, C++ และ Python
/usr/include/darknet_version.h มีข้อมูลเวอร์ชันสำหรับนักพัฒนา
/usr/lib/libdarknet.so เป็นไลบรารีสำหรับลิงก์สำหรับนักพัฒนา C, C++ และ Python
/opt/darknet/cfg/... เป็นที่จัดเก็บเทมเพลต .cfg ทั้งหมด
ตอนนี้คุณทำเสร็จแล้ว! Darknet ถูกสร้างและติดตั้งลงใน /usr/bin/ เรียกใช้สิ่งนี้เพื่อทดสอบ: เวอร์ชัน darknet
หากคุณไม่มี /usr/bin/darknet นั่นหมายความว่าคุณไม่ได้ติดตั้ง คุณแค่สร้างมันขึ้นมาเท่านั้น! ตรวจสอบให้แน่ใจว่าคุณติดตั้งไฟล์ .deb หรือ .rpm ตามที่อธิบายไว้ข้างต้น
วิธี Windows CMake
คำแนะนำเหล่านี้ถือเป็นการติดตั้ง Windows 11 22H2 ใหม่
เปิดหน้าต่างพรอมต์คำสั่ง cmd.exe ปกติแล้วรันคำสั่งต่อไปนี้:
ติดตั้ง winget Git.Git ติดตั้ง winget Kitware.CMake ติดตั้ง winget nsis.nsis ติดตั้ง winget Microsoft.VisualStudio.2022.Community
ณ จุดนี้ เราจำเป็นต้องแก้ไขการติดตั้ง Visual Studio เพื่อรวมการรองรับแอปพลิเคชัน C ++:
คลิกที่เมนู "Windows Start" และเรียกใช้ "Visual Studio Installer"
คลิกที่แก้ไข
เลือกการพัฒนาเดสก์ท็อปด้วย C ++
คลิกที่ Modify ที่มุมขวาล่าง จากนั้นคลิกที่ Yes เมื่อดาวน์โหลดและติดตั้งทุกอย่างแล้ว ให้คลิกที่เมนู "Windows Start" อีกครั้ง และเลือก Developer Command Prompt สำหรับ VS 2022 อย่าใช้ PowerShell สำหรับขั้นตอนเหล่านี้ คุณจะเรียกใช้ เข้าสู่ปัญหา!
ผู้ใช้ขั้นสูง:
แทนที่จะเรียกใช้ Developer Command Prompt คุณสามารถใช้พรอมต์คำสั่งปกติหรือ ssh ลงในอุปกรณ์และเรียกใช้ "Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat" ด้วยตนเอง
เมื่อคุณมี Developer Command Prompt ทำงานตามที่อธิบายไว้ข้างต้น (ไม่ใช่ PowerShell!) ให้รันคำสั่งต่อไปนี้เพื่อติดตั้ง Microsoft VCPKG ซึ่งจะใช้ในการสร้าง OpenCV:
cd c:mkdir c:srccd c:src git clone https://github.com/microsoft/vcpkgcd vcpkg bootstrap-vcpkg.bat .vcpkg.exe รวมการติดตั้ง .vcpkg.exe รวม powershell.vcpkg.exe ติดตั้ง opencv [contrib, dnn,ชนิดฟรี,jpeg,openmp,png,webp,world]:x64-windows
อดทนในขั้นตอนสุดท้ายนี้เนื่องจากการวิ่งอาจใช้เวลานาน จำเป็นต้องดาวน์โหลดและสร้างหลายสิ่งหลายอย่าง
ผู้ใช้ขั้นสูง:
โปรดทราบว่ามีโมดูลเสริมอื่นๆ มากมายที่คุณอาจต้องการเพิ่มเมื่อสร้าง OpenCV เรียกใช้ .vcpkg.exe ค้นหา opencv เพื่อดูรายการทั้งหมด
ทางเลือก: หากคุณมี NVIDIA GPU ที่ทันสมัย คุณสามารถติดตั้ง CUDA หรือ CUDA+cuDNN ได้ ณ จุดนี้ หากติดตั้งแล้ว Darknet จะใช้ GPU ของคุณเพื่อเพิ่มความเร็วในการประมวลผลภาพ (และวิดีโอ)
คุณต้องลบไฟล์ CMakeCache.txt ออกจากไดเรกทอรีบิลด์ Darknet ของคุณเพื่อบังคับให้ CMake ค้นหาไฟล์ที่จำเป็นทั้งหมดอีกครั้ง
อย่าลืมสร้าง Darknet ขึ้นมาใหม่
Darknet สามารถทำงานได้โดยไม่ต้องใช้มัน แต่หากคุณต้องการฝึกเครือข่ายแบบกำหนดเอง จำเป็นต้องมี CUDA หรือ CUDA+cuDNN
ไปที่ https://developer.nvidia.com/cuda-downloads เพื่อดาวน์โหลดและติดตั้ง CUDA
ไปที่ https://developer.nvidia.com/rdp/cudnn-download หรือ https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows เพื่อดาวน์โหลดและติดตั้ง cuDNN
เมื่อคุณติดตั้ง CUDA แล้ว ตรวจสอบให้แน่ใจว่าคุณสามารถเรียกใช้ nvcc.exe และ nvidia-smi.exe ได้ คุณอาจต้องแก้ไขตัวแปร PATH ของคุณ
เมื่อคุณดาวน์โหลด cuDNN แล้ว ให้แตกไฟล์และคัดลอก bin รวม และไดเร็กทอรี lib ลงใน C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/[version]/. คุณอาจต้องเขียนทับไฟล์บางไฟล์
หากคุณติดตั้ง CUDA หรือ CUDA+cuDNN ในภายหลัง หรือคุณอัพเกรดเป็นซอฟต์แวร์ NVIDIA เวอร์ชันใหม่กว่า:
ต้องติดตั้ง CUDA หลังจาก Visual Studio หากคุณอัปเกรด Visual Studio อย่าลืมติดตั้ง CUDA อีกครั้ง
เมื่อขั้นตอนก่อนหน้านี้ทั้งหมดเสร็จสิ้นเรียบร้อยแล้ว คุณจะต้องโคลน Darknet และสร้างมันขึ้นมา ในระหว่างขั้นตอนนี้ เรายังต้องบอก CMake ด้วยว่า vcpkg อยู่ที่ไหน เพื่อให้สามารถค้นหา OpenCV และการอ้างอิงอื่นๆ ได้:
cd c:src git clone https://github.com/hank-ai/darknet.gitcd darknetmkdir buildcd build cmake -DCMAKEBUILDTYPE=Release -DCMAKETOOLCHAINFILE=C:/src/vcpkg/scripts/buildsystems/vcpkg.cmake .. msbuild exe /property:Platform=x64;Configuration=Release /target:Build -maxCpuCount -verbosity:normal -detailedSummary darknet.sln msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
หากคุณได้รับข้อผิดพลาดเกี่ยวกับ CUDA หรือ cuDNN DLLs ที่หายไป เช่น cublas64_12.dll ให้คัดลอกไฟล์ CUDA .dll ลงในไดเร็กทอรีเอาต์พุตเดียวกันกับ Darknet.exe ด้วยตนเอง ตัวอย่างเช่น:
คัดลอก "C: Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
(นั่นคือตัวอย่าง! ตรวจสอบเพื่อให้แน่ใจว่าคุณใช้งานเวอร์ชันใดอยู่ และเรียกใช้คำสั่งที่เหมาะสมกับสิ่งที่คุณได้ติดตั้ง)
เมื่อคัดลอกไฟล์แล้ว ให้รันคำสั่ง msbuild.exe สุดท้ายอีกครั้งเพื่อสร้างแพ็คเกจการติดตั้ง NSIS:
msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
ผู้ใช้ขั้นสูง:
โปรดทราบว่าเอาต์พุตของคำสั่ง cmake เป็นไฟล์โซลูชัน Visual Studio ปกติ Darknet.sln หากคุณเป็นนักพัฒนาซอฟต์แวร์ที่ใช้ Visual Studio GUI เป็นประจำแทน msbuild.exe เพื่อสร้างโครงการ คุณสามารถละเว้นบรรทัดคำสั่งและโหลดโครงการ Darknet ใน Visual Studio ได้
ตอนนี้คุณควรมีไฟล์นี้ที่คุณสามารถเรียกใช้ได้: C:srcDarknetbuildsrc-cliReleasedarknet.exe เรียกใช้สิ่งนี้เพื่อทดสอบ: เวอร์ชัน C:srcDarknetbuildsrc-cliReleasedarknet.exe
หากต้องการติดตั้ง Darknet, ไลบรารี, ไฟล์รวม และ DLL ที่จำเป็นอย่างถูกต้อง ให้เรียกใช้ตัวช่วยสร้างการติดตั้ง NSIS ที่สร้างขึ้นในขั้นตอนสุดท้าย ดูไฟล์ darknet-VERSION.exe ในไดเร็กทอรี build ตัวอย่างเช่น:
darknet-2.0.31-win64.exe
การติดตั้งแพ็คเกจการติดตั้ง NSIS จะ:
สร้างไดเร็กทอรีชื่อ Darknet เช่น C:Program FilesDarknet
ติดตั้งแอปพลิเคชัน CLI, darknet.exe และแอปตัวอย่างอื่นๆ
ติดตั้งไฟล์ .dll ของบริษัทอื่นที่จำเป็น เช่น ไฟล์จาก OpenCV
ติดตั้งไฟล์ Darknet .dll, .lib และ .h ที่จำเป็นเพื่อใช้ darknet.dll จากแอปพลิเคชันอื่น
ติดตั้งไฟล์เทมเพลต .cfg
ตอนนี้คุณทำเสร็จแล้ว! เมื่อวิซาร์ดการติดตั้งเสร็จสิ้น Darknet จะถูกติดตั้งลงใน C:Program FilesDarknet รันสิ่งนี้เพื่อทดสอบ: เวอร์ชัน C:Program FilesDarknetbindarknet.exe
หากคุณไม่มี C:/Program Files/darknet/bin/darknet.exe นั่นหมายความว่าคุณไม่ได้ติดตั้ง คุณแค่สร้างมันขึ้นมาเท่านั้น! ตรวจสอบให้แน่ใจว่าคุณได้อ่านแต่ละแผงของวิซาร์ดการติดตั้ง NSIS ในขั้นตอนก่อนหน้า
การใช้ดาร์กเน็ต
คลีไอ
ต่อไปนี้ไม่ใช่รายการคำสั่งทั้งหมดที่ Darknet รองรับ
นอกจาก Darknet CLI แล้ว ยังมี CLI ของโปรเจ็กต์ DarkHelp ซึ่งมอบ CLI ทางเลือกให้กับ Darknet/YOLO DarkHelp CLI ยังมีคุณสมบัติขั้นสูงหลายประการที่ไม่สามารถใช้งานได้โดยตรงใน Darknet คุณสามารถใช้ทั้ง Darknet CLI และ DarkHelp CLI ร่วมกันได้ โดยไม่ได้แยกจากกัน
สำหรับคำสั่งส่วนใหญ่ที่แสดงด้านล่าง คุณจะต้องมีไฟล์ .weights พร้อมด้วยไฟล์ .names และ .cfg ที่เกี่ยวข้อง คุณสามารถฝึกเครือข่ายของคุณเองได้ (แนะนำเป็นอย่างยิ่ง!) หรือดาวน์โหลดโครงข่ายประสาทเทียมที่ใครบางคนได้ฝึกฝนและเปิดให้ใช้งานได้ฟรีบนอินเทอร์เน็ต ตัวอย่างของชุดข้อมูลที่ได้รับการฝึกอบรมล่วงหน้า ได้แก่:
LEGO Gears (ค้นหาวัตถุในภาพ)
Rolodex (การค้นหาข้อความในรูปภาพ)
MSCOCO (การตรวจจับวัตถุมาตรฐาน 80 คลาส)
คำสั่งให้รันได้แก่:
แสดงรายการคำสั่งและตัวเลือกที่เป็นไปได้ในการรัน:
ความช่วยเหลือจาก Darknet
ตรวจสอบเวอร์ชั่น:
เวอร์ชันดาร์กเน็ต
ทำนายโดยใช้ภาพ:
V2: การทดสอบเครื่องตรวจจับ darknet cars.data cars.cfg cars_best.weights image1.jpg
V3: darknet02displayannotatedimages cars.cfg image1.jpg
DarkHelp: DarkHelp cars.cfg cars.cfg cars_best.weights image1.jpg
พิกัดขาออก:
V2: การทดสอบเครื่องตรวจจับ darknetanimals.dataanimals.cfganimalbest.weights -extoutput dog.jpg
V3: darknet01inference_images สัตว์ dog.jpg
DarkHelp: DarkHelp --jsonanimals.cfganimals.namesanimals_best.weights dog.jpg
การทำงานกับวิดีโอ:
V2: การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimalbest.weights -extoutput test.mp4
V3: darknet03display_videosanimals.cfg test.mp4
DarkHelp: DarkHelpanimals.cfganimals.namesanimals_best.weights test.mp4
อ่านจากเว็บแคม:
V2: การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimals_best.weights -c 0
V3: สัตว์ darknet08display_webcam
บันทึกผลลัพธ์ลงในวิดีโอ:
V2: การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimalbest.weights test.mp4 -outfilename res.avi
V3: darknet05processvideosmultithreadedanimals.cfganimals.namesanimals_best.weights test.mp4
DarkHelp: DarkHelpanimals.cfganimals.namesanimals_best.weights test.mp4
เจสัน:
V2: การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimalbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
V3: darknet06imagestojson สัตว์ image1.jpg
DarkHelp: DarkHelp --jsonanimals.namesanimals.cfganimals_best.weights image1.jpg
ทำงานบน GPU เฉพาะ:
V2: การสาธิตเครื่องตรวจจับ darknetanimals.dataanimals.cfganimals_best.weights -i 1 test.mp4
วิธีตรวจสอบความถูกต้องของโครงข่ายประสาทเทียม:
แผนที่เครื่องตรวจจับ darknet Driving.data Driving.cfg Driving_best.weights ... ชื่อรหัส AvgPrecision TP FN FP TN ความแม่นยำ อัตราข้อผิดพลาด ความแม่นยำในการเรียกคืน ความจำเพาะ FalsePosRate -- ---- ------------ ---- -------- ------ ------ -------- --------- --------- ---- ----------- ------------ 0 คัน 91.2495 32648 3903 5826 65129 0.9095 0.0905 0.8486 0.8932 0.9179 0.0821 1 รถจักรยานยนต์ 80.4499 2936 513 569 5393 0.11 50 0.8377 0.8513 0.9046 0.0954 จักรยาน 2 คัน 89.0912 570 124 104 3548 0.9475 0.0525 0.8457 0.8213 0.9715 0.0285 3 คน 76.7937 7072 1727 2574 27523 0.8894 0.7332 0.8037 0.9145 0.0855 4 คัน 64.3089 1068 509 733 11288 0.9087 0.0913 0.5930 0.6772 0.9390 0.0610 5 ไฟเขียว 86.8118 1969 239 5 10 4116 0.8904 0.1096 0.7943 0.8918 0.8898 0.1102 6 ไฟเหลือง 82.0390 126 38 30 1239 0.9525 0.0475 0.8077 0.7683 0.9764 0.0236 7 ไฟแดง 94.1033 3449 17 451 4643 0.9237 0.0763 0.8844 0.9408 0.9115 0.0885
วิธีตรวจสอบความแม่นยำ mAP@IoU=75:
แผนที่เครื่องตรวจจับ darknet Animals.data Animals.cfg Animalsbest.weights -iouthresh 0.75
การคำนวณจุดยึดใหม่ทำได้ดีที่สุดใน DarkMark เนื่องจากจะทำงาน 100 ครั้งติดต่อกัน และเลือกจุดยึดที่ดีที่สุดจากทั้งหมดที่คำนวณไว้ แต่ถ้าคุณต้องการใช้งานเวอร์ชันเก่าใน Darknet:
เครื่องตรวจจับ darknet calcanchors Animals.data -numof_clusters 6 - กว้าง 320 - สูง 256
ฝึกอบรมเครือข่ายใหม่:
เครื่องตรวจจับ darknet -map -dont_show รถไฟanimals.dataanimals.cfg (ดูหัวข้อการฝึกอบรมด้านล่าง)
การฝึกอบรม
ลิงก์ด่วนไปยังส่วนที่เกี่ยวข้องของคำถามที่พบบ่อยเกี่ยวกับ Darknet/YOLO:
ฉันจะตั้งค่าไฟล์และไดเร็กทอรีของฉันได้อย่างไร?
ฉันควรใช้ไฟล์การกำหนดค่าใด
ฉันควรใช้คำสั่งใดในการฝึกเครือข่ายของตัวเอง?
วิธีที่ง่ายที่สุดในการใส่คำอธิบายประกอบและฝึกฝนคือการใช้ DarkMark เพื่อสร้างไฟล์ Darknet ที่จำเป็นทั้งหมด นี่เป็นวิธีที่แนะนำในการฝึกโครงข่ายประสาทเทียมใหม่อย่างแน่นอน
หากคุณต้องการตั้งค่าไฟล์ต่างๆ ด้วยตนเองเพื่อฝึกเครือข่ายที่กำหนดเอง:
สร้างโฟลเดอร์ใหม่ที่จะเก็บไฟล์ต่างๆ สำหรับตัวอย่างนี้ โครงข่ายประสาทเทียมจะถูกสร้างขึ้นเพื่อตรวจจับสัตว์ ดังนั้นไดเร็กทอรีต่อไปนี้จะถูกสร้างขึ้น: ~/nn/animals/
คัดลอกไฟล์การกำหนดค่า Darknet ไฟล์ใดไฟล์หนึ่งที่คุณต้องการใช้เป็นเทมเพลต ตัวอย่างเช่น ดูที่ cfg/yolov4-tiny.cfg วางสิ่งนี้ไว้ในโฟลเดอร์ที่คุณสร้างขึ้น สำหรับตัวอย่างนี้ ตอนนี้เรามี ~/nn/animals/animals.cfg
สร้างไฟล์ข้อความanimals.namesในโฟลเดอร์เดียวกับที่คุณวางไฟล์การกำหนดค่า สำหรับตัวอย่างนี้ ตอนนี้เรามี ~/nn/animals/animals.names
แก้ไขไฟล์animals.namesด้วยโปรแกรมแก้ไขข้อความของคุณ รายชื่อชั้นเรียนที่คุณต้องการใช้ คุณต้องมี 1 รายการต่อบรรทัด โดยไม่มีบรรทัดว่างและไม่มีความคิดเห็น สำหรับตัวอย่างนี้ ไฟล์ .names จะมี 4 บรรทัดพอดี:
หมา แมว นก ม้า
สร้างไฟล์ข้อความanimals.dataในโฟลเดอร์เดียวกัน สำหรับตัวอย่างนี้ ไฟล์ .data จะประกอบด้วย:
คลาส = 4 รถไฟ = /home/username/nn/animals/animalstrain.txt valid = /home/username/nn/animals/animalsvalid.txtnames = /home/username/nn/animals/animals.names backup = /home/ ชื่อผู้ใช้/nn/สัตว์
สร้างโฟลเดอร์ที่คุณจะจัดเก็บรูปภาพและคำอธิบายประกอบ ตัวอย่างเช่น อาจเป็น ~/nn/animals/dataset รูปภาพแต่ละรูปจะต้องมีไฟล์ .txt ที่สอดคล้องซึ่งอธิบายคำอธิบายประกอบสำหรับรูปภาพนั้น รูปแบบของไฟล์คำอธิบายประกอบ .txt มีความเฉพาะเจาะจงมาก คุณไม่สามารถสร้างไฟล์เหล่านี้ด้วยตนเองได้ เนื่องจากคำอธิบายประกอบแต่ละรายการจำเป็นต้องมีพิกัดที่แน่นอนสำหรับคำอธิบายประกอบ ดู DarkMark หรือซอฟต์แวร์อื่นที่คล้ายคลึงกันเพื่อใส่คำอธิบายประกอบภาพของคุณ รูปแบบคำอธิบายประกอบ YOLO มีอธิบายอยู่ใน Darknet/YOLO FAQ
สร้างไฟล์ข้อความ "train" และ "valid" ที่มีชื่ออยู่ในไฟล์ .data ไฟล์ข้อความทั้งสองนี้จำเป็นต้องแสดงรายการรูปภาพทั้งหมดที่ Darknet ต้องใช้ในการฝึกและเพื่อตรวจสอบความถูกต้องเมื่อคำนวณ mAP% หนึ่งภาพต่อบรรทัด เส้นทางและชื่อไฟล์อาจเป็นแบบสัมพัทธ์หรือแบบสัมบูรณ์
แก้ไขไฟล์ .cfg ของคุณด้วยโปรแกรมแก้ไขข้อความ
ตรวจสอบให้แน่ใจว่าชุด = 64
หมายเหตุเขตการปกครอง ขึ้นอยู่กับขนาดเครือข่ายและจำนวนหน่วยความจำที่มีอยู่ใน GPU ของคุณ คุณอาจต้องเพิ่มการแบ่งย่อย ความคุ้มค่าที่สุดที่จะใช้คือ 1 ดังนั้นให้เริ่มจากสิ่งนั้นเลย ดูคำถามที่พบบ่อยของ Darknet/YOLO หาก 1 ไม่ได้ผลสำหรับคุณ
หมายเหตุ maxbatches=.... ค่าที่ดีที่จะใช้เมื่อเริ่มต้นคือ 2,000 x จำนวนคลาส สำหรับตัวอย่างนี้ เรามีสัตว์ 4 ตัว ดังนั้น 4 * 2000 = 8000 หมายความว่าเราจะใช้ maxbatches=8000
หมายเหตุขั้นตอน=.... ควรตั้งค่าเป็น 80% และ 90% ของ maxbatches สำหรับตัวอย่างนี้ เราจะใช้ขั้นตอน = 6400,7200 เนื่องจากตั้งค่า maxbatches เป็น 8000
หมายเหตุ width=... และ height=.... นี่คือมิติเครือข่าย คำถามที่พบบ่อยเกี่ยวกับ Darknet/YOLO อธิบายวิธีคำนวณขนาดที่ดีที่สุดที่จะใช้
ค้นหาอินสแตนซ์ทั้งหมดของบรรทัด class=... และแก้ไขด้วยจำนวนคลาสในไฟล์ .names ของคุณ สำหรับตัวอย่างนี้ เราจะใช้ class=4
ค้นหาอินสแตนซ์ทั้งหมดของบรรทัด filter=... ในส่วน [convolutional] ก่อนแต่ละส่วน [yolo] ค่าที่จะใช้คือ (numberofclasses + 5) 3 ความหมายสำหรับตัวอย่างนี้คือ (4 + 5) 3 = 27 ดังนั้น เราจะใช้ตัวกรอง=27 ในบรรทัดที่เหมาะสม
เริ่มฝึก! รันคำสั่งต่อไปนี้:
cd ~/nn/animals/ darknet detector -map -dont_show รถไฟanimals.dataanimals.cfg
จงอดทน ตุ้มน้ำหนักที่ดีที่สุดจะถูกบันทึกเป็นanimals_best.weights และความคืบหน้าของการฝึกสามารถติดตามชมได้ที่