ไลบรารี Python

10 ไลบรารีประมวลผลภาพใน Python ที่ดีที่สุด

mm
เพิ่ม Unite.AI ลงในแหล่งข้อมูลที่คุณต้องการบน Google

การประมวลผลภาพด้วย Python ครอบคลุมตั้งแต่งานแก้ไขภาพทั่วไป การวัดผลทางวิทยาศาสตร์ การวิเคราะห์วิดีโอ การเพิ่มข้อมูลสำหรับฝึกโมเดล ไปจนถึงกระบวนการทำงานกับภาพขนาดใหญ่ งานแต่ละประเภทต้องใช้เครื่องมือแตกต่างกัน ไลบรารีที่เหมาะกับการสร้างภาพขนาดย่ออาจไม่สามารถรักษาข้อมูลเชิงพื้นที่ที่จำเป็นต่อข้อมูลภาพปริมาตรที่ใช้ในงานวิจัยไว้ได้ ขณะที่ไลบรารีแปลงภาพที่ใช้ GPU อาจเพิ่มความซับซ้อนโดยไม่จำเป็นให้กับบริการเว็บขนาดเล็ก

เราได้ประเมินไลบรารีทั้ง 10 รายการนี้อย่างเป็นอิสระ โดยพิจารณาความสามารถ รูปแบบการจัดเก็บข้อมูล ข้อกำหนดในการผสานการทำงาน และข้อจำกัดในการใช้งานจริง พร้อมตรวจสอบเอกสารทางการฉบับปัจจุบัน OpenCV โดดเด่นด้านการมองเห็นด้วยคอมพิวเตอร์ที่ครอบคลุม Pillow เหมาะกับการแก้ไขภาพแรสเตอร์ทั่วไป และ scikit-image เหมาะกับการวิเคราะห์ทางวิทยาศาสตร์ การจัดอันดับนี้เป็นผลจากการพิจารณาเชิงบรรณาธิการในบริบทการใช้งานเหล่านี้ ไม่ใช่ผลการทดสอบความเร็วภาคปฏิบัติครั้งใหม่

หลายรายการทำงานร่วมกันได้ดีที่สุด โดย ImageIO จัดการทรัพยากร, SciPy จัดเตรียมการดำเนินการเชิงตัวเลข และไลบรารีระดับสูงกว่าจะทำหน้าที่วิเคราะห์ เลือกใช้เครื่องมือร่วมกันเพียงไม่กี่ตัว โดยต้องรักษาความหมายของภาพตั้งแต่ขั้นตอนนำเข้าจนถึงส่งออก

เปรียบเทียบไลบรารีประมวลผลภาพที่ดีที่สุดสำหรับ Python

เครื่องมือ AIเหมาะที่สุดสำหรับฟีเจอร์
OpenCVงานด้านการมองเห็นด้วยคอมพิวเตอร์ทั่วไปและกระบวนการทำงานกับวิดีโอการกรอง; เรขาคณิต; คุณลักษณะ; การปรับเทียบ; การวิเคราะห์วิดีโอ
Pillowการแก้ไขภาพและจัดการไฟล์ในชีวิตประจำวันครอบตัด; ปรับขนาด; ผสานภาพ; วาด; โหมดภาพ; รองรับรูปแบบไฟล์
scikit-imageการวิเคราะห์และการวัดภาพทางวิทยาศาสตร์การแบ่งส่วน; สัณฐานวิทยา; การฟื้นฟูภาพ; คุณลักษณะ; การวัดบริเวณ
torchvisionการประมวลผลภาพเบื้องต้นในกระบวนการทำงานของ PyTorchTransforms v2; ภาพ; มาสก์; กรอบล้อมวัตถุ; วิดีโอ; จุดสำคัญ
Korniaการมองเห็นด้วยคอมพิวเตอร์แบบหาอนุพันธ์ได้และการประมวลผลเทนเซอร์แบบแบตช์ตัวดำเนินการ PyTorch; เรขาคณิต; ฟิลเตอร์; สี; การเพิ่มข้อมูล
AlbumentationsXการเพิ่มข้อมูลที่หลากหลาย พร้อมซิงก์เป้าหมายสำหรับการฝึกให้สอดคล้องกันการแปลงที่นำมาประกอบกันได้; ภาพ; มาสก์; กรอบล้อมวัตถุ; จุดสำคัญ; ปริมาตร
SciPy ndimageการกรองข้อมูลหลายมิติและการดำเนินการระดับอาร์เรย์ฟิลเตอร์; สัณฐานวิทยา; การประมาณค่าแทรก; การกำหนดป้ายกำกับ; การวัด
ImageIOอ่านและเขียนทรัพยากรภาพในรูปแบบอาร์เรย์API v3; ปลั๊กอิน; ลำดับข้อมูล; เมทาดาทา; การตรวจสอบทรัพยากร
SimpleITKปริมาตรภาพที่คำนึงถึงตำแหน่งเชิงพื้นที่และกระบวนการทำงานด้านการจัดแนวภาพเรขาคณิตของภาพ; ระยะห่าง; จุดกำเนิด; ทิศทาง; การแปลงเชิงพื้นที่
pyvipsกระบวนการทำงานกับภาพขนาดใหญ่ที่ควบคุมการใช้หน่วยความจำได้ไบนดิงสำหรับ libvips; กระบวนการทำงานแบบประเมินผลเมื่อจำเป็น; การเข้าถึงตามลำดับ; การดำเนินการกับภาพ

1. OpenCV

เราขอแนะนำ OpenCV เป็นอันดับแรกเมื่อการประมวลผลภาพเป็นส่วนหนึ่งของแอปพลิเคชันด้านการมองเห็นด้วยคอมพิวเตอร์ที่มีขอบเขตกว้างกว่า อินเทอร์เฟซ Python ของไลบรารีนี้รองรับการกรอง การแปลงทางเรขาคณิต การตรวจจับคุณลักษณะ การปรับเทียบกล้อง และการวิเคราะห์วิดีโอ ความสามารถที่ครอบคลุมนี้ทำให้ OpenCV มีประโยชน์กับโครงการที่ต้องทำความสะอาดภาพ ระบุตำแหน่งโครงสร้าง และประมวลผลสตรีมของเฟรมในงานเดียวกัน แทนที่จะใช้เพียงแปลงไฟล์เดียว

รายละเอียดสำคัญในการผสานการทำงานคือรูปแบบการแทนค่าภาพ วิธีโหลดภาพสีที่ใช้กันทั่วไปใน OpenCV จะเรียงช่องสีแบบ BGR ขณะที่เครื่องมือโดยรอบจำนวนมากคาดว่าจะได้รับข้อมูลแบบ RGB การแปลงรูปแบบอย่างชัดเจนตรงจุดเชื่อมต่อระหว่างไลบรารีจะช่วยป้องกันผลลัพธ์ที่ดูน่าเชื่อถือแต่ไม่ถูกต้อง นอกจากนี้ ควรตรวจสอบด้วยว่าค่าเป็นจำนวนเต็มหรือเลขทศนิยม และฟังก์ชันต้องการภาพระดับเทาหรือหลายช่องสี อาร์เรย์ที่มีมิติถูกต้องไม่ได้หมายความว่าข้อมูลจะมีความหมายถูกต้องเสมอไป

เราแนะนำ OpenCV สำหรับกระบวนการทำงานกับกล้องและงานวิศวกรรมด้านการมองเห็นทั่วไป ส่วน Pillow มักใช้งานง่ายกว่าสำหรับการแก้ไขภาพพื้นฐาน ก่อนนำไปใช้งานจริง ให้ทดสอบบิลด์ที่ติดตั้งกับแหล่งวิดีโอ โคเดก และฟังก์ชันเสริมที่จำเป็น การทำงานสำเร็จกับไฟล์ JPEG ในเครื่องไม่ได้ยืนยันว่ากล้องที่ใช้ในการผลิตหรือสตรีมที่เข้ารหัสจะทำงานในลักษณะเดียวกัน เมื่อต้องประเมินประสิทธิภาพแบบเรียลไทม์ ให้จับเวลาทั้งการถอดรหัส การประมวลผล และการส่งออก

ข้อดีและข้อเสีย

  • ชุดเครื่องมือด้านการมองเห็นแบบดั้งเดิมที่ครอบคลุม
  • รองรับกระบวนการทำงานกับภาพและวิดีโอในระบบนิเวศเดียวกัน
  • เข้าถึงการทำงานที่พัฒนาด้วยภาษาเนทีฟผ่าน Python
  • ต้องใส่ใจกับรูปแบบการเรียงสีและชนิดข้อมูล
  • ความพร้อมใช้งานของโคเดกและฟีเจอร์เสริมขึ้นอยู่กับบิลด์

ดูข้อมูลเพิ่มเติมเกี่ยวกับ OpenCV

2. Pillow

Pillow เป็นจุดเริ่มต้นที่ใช้งานได้จริงสำหรับงานทั่วไปเกี่ยวกับภาพแรสเตอร์ เช่น การสร้างภาพขนาดย่อ การครอบตัด การแปลงรูปแบบ การผสานภาพ และการเพิ่มข้อความ โดยมีอินเทอร์เฟซสำหรับจัดการวัตถุภาพที่ตรงไปตรงมาและทำความเข้าใจได้ง่ายกว่าชุดเครื่องมือด้านคอมพิวเตอร์วิทัศน์แบบครบชุด สำหรับสคริปต์และบริการเว็บหลายประเภท เมื่อโจทย์คือต้องเตรียมหรือส่งมอบภาพ ความเรียบง่ายของ Pillow มักเป็นข้อได้เปรียบหลัก

โหมดภาพและข้อมูลเมตาควรได้รับความใส่ใจไม่น้อยไปกว่าการปรับขนาดภาพ ภาพแบบ RGB ภาพระดับสีเทา ภาพแบบพาเลต และภาพที่มีช่องอัลฟาอาจต้องจัดการแตกต่างกัน อีกทั้งข้อมูลเมตาเกี่ยวกับการวางแนวก็อาจส่งผลต่อลักษณะที่ภาพถ่ายควรปรากฏได้ ควรกำหนดวิธีที่ไปป์ไลน์จะจัดการความโปร่งใส โปรไฟล์สี และคุณภาพของผลลัพธ์ ไฟล์ที่เปิดได้สำเร็จอาจยังดูผิดเพี้ยนได้ หากแปลงไฟล์ไม่ครบถ้วน

เราแนะนำ Pillow สำหรับเวิร์กโฟลว์การแก้ไขภาพทั่วไปที่มีขนาดไฟล์จัดการได้ เมื่อตรวจสอบผลลัพธ์ ให้ใช้ไฟล์ตัวอย่างที่เป็นตัวแทนของงานจริง รวมถึงภาพที่มีพื้นหลังโปร่งใสและภาพถ่ายที่มีข้อมูลเมตาเกี่ยวกับการวางแนว คำนึงถึงขีดจำกัดในการคลายการบีบอัดและตัวแปลงรหัสที่รองรับสำหรับไฟล์ที่ผู้ใช้อัปโหลด และอย่าคิดว่าทุกรูปแบบจะเก็บรักษาข้อมูลเมตาไว้ได้ทุกส่วน สำหรับงานวัดผลทางวิทยาศาสตร์ที่หนักหน่วง การติดตามแบบเรียลไทม์ หรือการประมวลผลภาพขนาดใหญ่มากภายใต้ข้อจำกัดด้านหน่วยความจำที่เข้มงวด ไลบรารีอื่นด้านล่างอาจเหมาะที่จะใช้เป็นองค์ประกอบหลักมากกว่า

ข้อดีและข้อเสีย

  • อินเทอร์เฟซแก้ไขภาพที่ใช้งานง่าย
  • เครื่องมือจัดการรูปแบบ วาดภาพ และผสานภาพที่มีประโยชน์
  • เหมาะสำหรับสคริปต์และไฟล์ภาพบนเว็บ
  • ไม่ใช่ระบบวิเคราะห์ภาพอย่างครบวงจร
  • ต้องจัดการโหมดภาพ ข้อมูลเมตา และไฟล์ขนาดใหญ่อย่างรอบคอบ

ดู Pillow เพิ่มเติม

3. scikit-image

scikit-image เป็นจุดเริ่มต้นทั่วไปที่เราแนะนำสำหรับการวิเคราะห์ภาพทางวิทยาศาสตร์ในระบบนิเวศของ NumPy โดยมีอัลกอริทึมสำหรับการแบ่งส่วนภาพ สัณฐานวิทยา การคืนสภาพภาพ การสกัดคุณลักษณะ และการวัดผล จุดเด่นคือเวิร์กโฟลว์การวิเคราะห์ที่อ่านเข้าใจง่ายและตรวจสอบอาร์เรย์ระหว่างทางได้ จึงมีประโยชน์กับงานกล้องจุลทรรศน์ ภาพจากการทดลอง และโครงการที่การทำความเข้าใจผลลัพธ์สำคัญพอ ๆ กับการสร้างผลลัพธ์

หลักการใช้ชนิดข้อมูลของไลบรารีเป็นสิ่งสำคัญต่อการใช้งานให้ถูกต้อง การแปลงภาพจำนวนเต็มเป็นเลขทศนิยมไม่ได้เทียบเท่ากับการปรับสเกลค่าความเข้มให้อยู่ในช่วงที่อัลกอริทึมคาดหวังเสมอไป ตรวจสอบสมมติฐานที่ระบุไว้ในเอกสารของแต่ละฟังก์ชัน และใช้เครื่องมือแปลงข้อมูลที่เหมาะสม ผลลัพธ์ที่ดูสมเหตุสมผลเมื่อมองด้วยตาอาจซ่อนข้อผิดพลาดทางตัวเลข ซึ่งทำให้ค่าเกณฑ์ ระยะทาง หรือการวัดผลในขั้นถัดไปเปลี่ยนไป

เลือก scikit-image เมื่อต้องการสร้างและอธิบายไปป์ไลน์การวิเคราะห์จากการดำเนินการที่ผ่านการพิสูจน์แล้ว ตรวจสอบการแบ่งส่วนภาพและการวัดผลกับตัวอย่างที่เป็นตัวแทนของงานจริง แทนที่จะพิจารณาเฉพาะภาพแสดงผลที่ผ่านการปรับแต่งแล้ว ไลบรารีนี้ไม่ใช่ระบบบันทึกภาพจากกล้องและใช้แทนโมเดลภาพเฉพาะทางที่อิงพิกัดทางกายภาพไม่ได้ สำหรับข้อมูลแบบปริมาตร ให้ระบุว่าแกนใดเป็นแกนเชิงพื้นที่ และแกนใดแทนช่องสัญญาณหรือเวลา ก่อนใช้การดำเนินการกับอาร์เรย์

ข้อดีและข้อเสีย

  • เวิร์กโฟลว์วิเคราะห์ทางวิทยาศาสตร์ที่อ่านเข้าใจง่าย
  • รองรับงานแบ่งส่วนภาพและการวัดผลได้ครอบคลุม
  • ทำงานร่วมกับอาร์เรย์ NumPy ได้อย่างเป็นธรรมชาติ
  • หลักการกำหนดช่วงค่าความเข้มอาจทำให้เกิดข้อผิดพลาดที่สังเกตได้ยาก
  • การบันทึกภาพจากกล้องและข้อมูลเมตาทางกายภาพต้องใช้เครื่องมืออื่น

ดู scikit-image เพิ่มเติม

4. torchvision

torchvision เป็นตัวเลือกแรกที่เหมาะสมเมื่อการประมวลผลภาพเป็นส่วนหนึ่งของการป้อนข้อมูลให้โมเดลวิทัศน์ PyTorch การแปลงข้อมูลของไลบรารีช่วยเตรียมภาพและข้อมูลกำกับที่เกี่ยวข้องภายในไปป์ไลน์การฝึกเดียวกัน จึงลดความจำเป็นในการเขียนโค้ดประมวลผลล่วงหน้าแยกต่างหาก ไลบรารีโดยรวมยังมีชุดข้อมูลและโมเดลวิทัศน์ให้ใช้ด้วย แต่ส่วนที่เกี่ยวข้องที่สุดในที่นี้คือชั้นการแปลงข้อมูลสำหรับอินพุตของโมเดล

เอกสารประกอบฉบับปัจจุบันแนะนำ torchvision.transforms.v2 การแปลงข้อมูลเหล่านี้รองรับทั้งภาพและข้อมูลเป้าหมาย เช่น กรอบล้อมรอบ มาสก์ วิดีโอ และจุดสำคัญ ซึ่งสำคัญเมื่อต้องให้การครอบตัดหรือการพลิกภาพส่งผลต่อทั้งพิกเซลและป้ายกำกับ ใช้ชนิดอินพุตที่เหมาะสมและตรวจสอบข้อมูลกำกับที่ผ่านการแปลงด้วยภาพ การสุ่มการแปลงแบบสุ่มแยกกันให้ภาพกับมาสก์จะทำให้ข้อมูลฝึกขาดความสอดคล้อง

เราแนะนำ torchvision เมื่องานนั้นรองรับด้วยการแปลงข้อมูลที่มีให้ และโครงการใช้ PyTorch อยู่แล้ว ตรวจสอบรูปร่างเทนเซอร์ ชนิดข้อมูล ช่วงค่า และการประมวลผลล่วงหน้าที่น้ำหนักของโมเดลที่เลือกกำหนดไว้ ให้การแปลงข้อมูลสำหรับการตรวจสอบความถูกต้องเป็นแบบกำหนดผลลัพธ์แน่นอน เว้นแต่การประเมินจะกำหนดนโยบายอื่นไว้โดยชัดเจน การจัดอันดับนี้สะท้อนความสะดวกในการผสานรวม ไม่ได้หมายความว่าจะทำงานได้เร็วกว่าในทุกกรณี ประสิทธิภาพขึ้นอยู่กับขนาดภาพ รูปแบบการจัดวางข้อมูลในหน่วยความจำ การโหลดข้อมูล และตำแหน่งที่เรียกใช้การแปลงข้อมูล

ข้อดีและข้อเสีย

  • ผสานเข้ากับโครงการ PyTorch ได้อย่างเป็นธรรมชาติ
  • API v2 ที่แนะนำรองรับข้อมูลเป้าหมายได้หลายประเภท
  • ช่วยให้การแปลงเชิงพื้นที่สอดคล้องกับข้อมูลกำกับ
  • ต้องจัดการหลักการใช้ข้อมูลเป้าหมายและเทนเซอร์อย่างรอบคอบ
  • ประสิทธิภาพขึ้นอยู่กับเส้นทางการโหลดข้อมูลทั้งหมด

ดู torchvision เพิ่มเติม

5. Kornia

Kornia มีประโยชน์เป็นพิเศษเมื่อต้องการให้การประมวลผลภาพเป็นส่วนหนึ่งของการคำนวณใน PyTorch แทนที่จะเรียกใช้เป็นสคริปต์เตรียมข้อมูลแยกต่างหาก ไลบรารีนี้มีฟังก์ชันด้านการมองเห็นที่ทำงานกับเทนเซอร์ ครอบคลุมทั้งเรขาคณิต การกรอง สี การจับคู่คุณลักษณะ และการเพิ่มข้อมูล หลายฟังก์ชันรองรับการหาอนุพันธ์ จึงทำให้ฟังก์ชันวัตถุประสงค์สำหรับการหาค่าเหมาะที่สุดอาศัยภาพที่ผ่านการแปลงแล้วได้ แทนที่จะถือว่าการเตรียมข้อมูลเป็นขั้นตอนภายนอกที่ตายตัว

รูปแบบการประมวลผลแบบแบ่งชุดของไลบรารีนี้ยังมีประโยชน์เมื่อข้อมูลอยู่บนตัวเร่งความเร็วอยู่แล้ว อย่างไรก็ตาม การย้ายการประมวลผลไปทำบน GPU ไม่ได้ให้ประโยชน์เสมอไป เพราะการถ่ายโอนข้อมูล ขนาดชุดข้อมูล การจัดสรรหน่วยความจำ และงานส่วนอื่นที่เกี่ยวข้องล้วนส่งผลต่อเวลาประมวลผลโดยรวม ควรเปรียบเทียบไปป์ไลน์ทั้งหมดด้วยภาระงานที่ใกล้เคียงกับการใช้งานจริง ตรวจสอบพฤติกรรมด้านการหาอนุพันธ์ของฟังก์ชันและพารามิเตอร์เฉพาะที่การหาค่าเหมาะที่สุดของคุณต้องใช้จริง

เราแนะนำ Kornia สำหรับงานด้านเรขาคณิตที่หาอนุพันธ์ได้ ระบบการเรียนรู้ และเวิร์กโฟลว์ด้านการมองเห็นที่ทำงานกับเทนเซอร์โดยตรง แต่สำหรับสคริปต์ที่สร้างภาพขนาดย่อเพียงไม่กี่ภาพ ไลบรารีนี้มักเพิ่มภาระโดยไม่จำเป็น เมื่อนำไปใช้ร่วมกับไลบรารีอื่น ควรตรวจสอบการจัดวางเทนเซอร์ ช่วงค่าความเข้ม และรูปแบบพิกัด แม้จะหาเกรเดียนต์ได้ การหาค่าเหมาะที่สุดก็อาจล้มเหลวได้หากฟังก์ชันวัตถุประสงค์หรือค่าเริ่มต้นไม่เหมาะสม ความสามารถในการหาอนุพันธ์ได้จึงเป็นคุณสมบัติที่มีประโยชน์ ไม่ใช่หลักประกันว่าการลงทะเบียนภาพหรือการแปลงที่เรียนรู้จะถูกต้อง

ข้อดีและข้อเสีย

  • การประมวลผลด้านการมองเห็นสามารถทำงานร่วมกับ autograd ได้
  • รองรับเวิร์กโฟลว์แบบแบ่งชุดด้วยเทนเซอร์และตัวเร่งความเร็ว
  • มีองค์ประกอบด้านเรขาคณิตและการเพิ่มข้อมูลที่เป็นประโยชน์
  • ต้องใช้ PyTorch และรูปแบบการทำงานกับเทนเซอร์ของ PyTorch
  • ประโยชน์ด้าน GPU และพฤติกรรมของเกรเดียนต์ขึ้นอยู่กับแต่ละฟังก์ชัน

ดู Kornia เพิ่มเติม

6. AlbumentationsX

AlbumentationsX เป็นตัวเลือกเฉพาะทางที่โดดเด่นสำหรับสร้างนโยบายการเพิ่มข้อมูลที่หลากหลายให้กับข้อมูลฝึกสำหรับงานคอมพิวเตอร์วิทัศน์ การแปลงแบบประกอบเข้าด้วยกันได้ของไลบรารีนี้สามารถปรับเปลี่ยนตำแหน่งเชิงพื้นที่ให้สอดคล้องกันทั้งในภาพและข้อมูลเป้าหมายที่เกี่ยวข้อง เช่น มาสก์ กรอบวัตถุ และจุดสำคัญ การประสานข้อมูลเหล่านี้ให้ตรงกันสำคัญกว่าการมีเอฟเฟกต์ภาพมากมายเพียงอย่างเดียว เพราะตัวอย่างฝึกต้องยังคงมีป้ายกำกับที่ถูกต้องหลังการครอบตัด การหมุน หรือการเปลี่ยนแปลงทางเรขาคณิตอื่น ๆ

เริ่มจากการเพิ่มข้อมูลที่สะท้อนความแปรผันที่เป็นไปได้ในสภาพแวดล้อมเป้าหมาย ตรวจดูตัวอย่างหลังการแปลง และตรวจสอบว่าระบบจัดการวัตถุที่ถูกครอบตัด มาสก์ที่ไม่มีข้อมูล และคำกำกับที่มองเห็นเพียงบางส่วนอย่างไร การเพิ่มข้อมูลให้หนักขึ้นไม่ได้ดีกว่าเสมอไป การดำเนินการบางอย่างอาจลบสัญญาณสำคัญ เปลี่ยนความหมายของป้ายกำกับ หรือสร้างตัวอย่างที่ไม่เหมือนสิ่งใดที่โมเดลจะพบเจอ ควรวัดผลของนโยบายดังกล่าวด้วยชุดตรวจสอบความถูกต้องที่เป็นอิสระ

แพ็กเกจที่มีการดูแลและพัฒนาอยู่ในปัจจุบันมีเงื่อนไขด้านใบอนุญาตต่างจาก Albumentations รุ่นเดิม เอกสารทางการล่าสุดระบุว่า AlbumentationsX ใช้ได้ภายใต้ AGPL-3.0-only หรือข้อตกลงเชิงพาณิชย์แยกต่างหาก อย่าคิดว่าคำอธิบายใบอนุญาต MIT เก่ายังคงใช้กับการติดตั้งเวอร์ชันใหม่ได้ ควรตรวจสอบแพ็กเกจและเวอร์ชันที่แน่นอนก่อนนำไปใช้ เรายังคงแนะนำไลบรารีนี้เพราะประโยชน์ด้านเทคนิค แต่หากความสามารถหรือเงื่อนไขใบอนุญาตของ torchvision หรือตัวเลือกอื่นเหมาะกับโครงการมากกว่า ก็ควรพิจารณาใช้ตัวเลือกเหล่านั้น

ข้อดีและข้อเสีย

  • เวิร์กโฟลว์การเพิ่มข้อมูลที่หลากหลายและประกอบเข้าด้วยกันได้
  • ปรับภาพและข้อมูลเป้าหมายที่เกี่ยวข้องให้สอดคล้องกัน
  • มีประโยชน์กับงานฝึกด้านการมองเห็นหลายประเภท
  • เงื่อนไขใบอนุญาตปัจจุบันต่างจากคำอธิบายของรุ่นเดิม
  • การเลือกนโยบายที่ไม่เหมาะสมอาจทำให้ตัวอย่างฝึกเสียหาย

ดู AlbumentationsX เพิ่มเติม

7. SciPy ndimage

โมดูล ndimage ของ SciPy ควรเป็นส่วนหนึ่งของชุดเครื่องมือประมวลผลภาพทั่วไป เพราะงานจำนวนมากเริ่มจากการดำเนินการกับอาร์เรย์หลายมิติ โมดูลนี้มีฟังก์ชันการกรอง สัณฐานวิทยาทางคณิตศาสตร์ การประมาณค่าแทรก การติดป้ายกำกับ และการวัดผล โดยไม่ต้องใช้เฟรมเวิร์กสำหรับฝึกโมเดล จึงเหมาะอย่างยิ่งเมื่อภาพเป็นส่วนหนึ่งของการคำนวณทางวิทยาศาสตร์ที่ใหญ่กว่า ซึ่งใช้ NumPy และ SciPy อยู่แล้ว

แนวทางระดับล่างช่วยให้นักพัฒนาควบคุมรายละเอียดเชิงตัวเลขที่อินเทอร์เฟซระดับสูงอาจซ่อนไว้ได้ วิธีจัดการขอบ อันดับของการประมาณค่าแทรก ชนิดข้อมูลเอาต์พุต และแกนที่ประมวลผล ล้วนเปลี่ยนความหมายของผลลัพธ์ได้ สำหรับเวิร์กโฟลว์สำคัญควรกำหนดค่าเหล่านี้อย่างชัดเจน อย่าปล่อยให้ช่องสีหรือแกนเวลาได้รับการปรับให้เรียบโดยไม่ตั้งใจเสมือนเป็นมิติเชิงพื้นที่อีกมิติหนึ่ง

เราแนะนำ ndimage สำหรับองค์ประกอบพื้นฐานด้านการคำนวณเชิงตัวเลขที่นำกลับมาใช้ซ้ำได้ รวมถึงการประมวลผลข้อมูลเชิงปริมาตร และแนะนำ scikit-image สำหรับเวิร์กโฟลว์วิเคราะห์ระดับสูงหลายประเภท ทั้งสองไลบรารีสามารถใช้เสริมกันได้ ไม่จำเป็นต้องเลือกใช้เพียงตัวใดตัวหนึ่ง โมดูลนี้ไม่มีระบบจัดการไฟล์ภาพหรือข้อมูลเมตาเชิงพื้นที่แบบครบวงจร จึงควรจัดการข้อกำหนดเหล่านั้นไว้ที่ส่วนอื่นของแอปพลิเคชัน ก่อนขยายการประมวลผลไปยังชุดข้อมูลขนาดใหญ่ ควรทดสอบกับอาร์เรย์ขนาดเล็กที่ทราบผลลัพธ์ที่คาดหวัง โดยเฉพาะเมื่อลักษณะการจัดการขอบหรือการเชื่อมต่อของป้ายกำกับมีผลต่อการวัด

ข้อดีและข้อเสีย

  • มีฟังก์ชันพื้นฐานสำหรับประมวลผลข้อมูลหลายมิติอย่างครอบคลุม
  • เข้ากับเวิร์กโฟลว์ NumPy และ SciPy ที่มีอยู่ได้ดี
  • ควบคุมค่าตัวเลขได้อย่างชัดเจน
  • API ระดับล่างต้องเลือกพารามิเตอร์อย่างระมัดระวัง
  • ต้องจัดการการอ่านและเขียนไฟล์กับข้อมูลเมตาทางกายภาพแยกกัน

สำรวจ SciPy ndimage

8. ImageIO

ImageIO มีบทบาทสำคัญในการสนับสนุนการทำงาน โดยช่วยนำข้อมูลภาพเข้าและออกจากเวิร์กโฟลว์ที่ใช้แถวลำดับ v3 มีฟังก์ชันสำหรับอ่าน เขียน วนทำงาน และตรวจสอบข้อมูล โดยมีปลั๊กอินจัดการทรัพยากรและรูปแบบไฟล์ที่เกี่ยวข้อง ช่วยเชื่อมข้อมูลนำเข้าจากไฟล์เข้ากับการวิเคราะห์ใน NumPy หรือ scikit-image ได้ โดยไม่ต้องให้โค้ดวิเคราะห์รับผิดชอบรายละเอียดของตัวถอดรหัสทุกรูปแบบ

การมีอินเทอร์เฟซเดียวกันไม่ได้หมายความว่าปลั๊กอินทุกตัวจะทำงานเหมือนกัน การรองรับรูปแบบไฟล์ ข้อมูลเมตา การเลือกเฟรม และส่วนประกอบที่ต้องติดตั้งเพิ่มเติมอาจแตกต่างกัน หากต้องการให้ทำซ้ำผลลัพธ์ได้ ควรระบุและทดสอบปลั๊กอินที่ใช้ พร้อมแยกให้ออกว่าข้อมูลเป็นภาพเดี่ยว ลำดับภาพ หรือภาพสามมิติ การวนอ่านทีละเฟรมอาจเหมาะกว่าการโหลดทรัพยากรทั้งหมดไว้ในหน่วยความจำ ทั้งนี้ขึ้นอยู่กับรูปแบบไฟล์และการทำงานขั้นถัดไป

เราแนะนำให้ใช้ ImageIO เป็นเครื่องมือเสริมด้านการอ่านและเขียนข้อมูล ไม่ใช่ใช้แทนไลบรารีสำหรับการแบ่งส่วนภาพ การกรอง หรือเรขาคณิต ควรตรวจสอบไฟล์ตัวอย่างที่เป็นตัวแทน รวมถึงไฟล์ที่มีความลึกบิตผิดปกติและไฟล์หลายหน้า ในสภาพแวดล้อมที่จะนำไปใช้งานจริง ตรวจสอบว่าการเขียนและเปิดไฟล์ผลลัพธ์อีกครั้งยังคงรักษาค่าและข้อมูลเมตาที่แอปพลิเคชันต้องใช้ไว้ได้ การถอดรหัสสำเร็จเพียงอย่างเดียวไม่ได้ยืนยันว่าขั้นตอนอื่น ๆ ในไปป์ไลน์ทางวิทยาศาสตร์หรือแมชชีนเลิร์นนิงได้รับข้อมูลในรูปแบบที่ต้องการ

ข้อดีและข้อเสีย

  • อินเทอร์เฟซอ่านและเขียนข้อมูลที่ใช้งานสะดวกและออกแบบมาสำหรับแถวลำดับ
  • รองรับทรัพยากรผ่านระบบปลั๊กอิน
  • มีประโยชน์สำหรับการวนอ่านข้อมูลและตรวจสอบข้อมูลเมตา
  • ความสามารถแตกต่างกันไปตามปลั๊กอินและส่วนประกอบที่ติดตั้ง
  • ให้บริการด้านการอ่านและเขียนข้อมูล ไม่ใช่ชุดเครื่องมือวิเคราะห์แบบครบวงจร

สำรวจ ImageIO

9. SimpleITK

SimpleITK เป็นตัวเลือกเฉพาะทางที่เราแนะนำเมื่อภาพแทนบริเวณทางกายภาพ ไม่ใช่เพียงตารางพิกเซลสำหรับแสดงผล โมเดลภาพของไลบรารีนี้ประกอบด้วยจุดกำเนิด ระยะห่าง และทิศทาง ตลอดจนขนาดและค่าพิกเซล คุณสมบัตินี้สำคัญอย่างยิ่งกับภาพสามมิติทางการแพทย์และวิทยาศาสตร์ ซึ่งระยะทางและการวางแนวมีผลต่อการจัดแนว การสุ่มตัวอย่างใหม่ และการวัดภาพ

แถวลำดับสองชุดที่มีรูปร่างเหมือนกันอาจระบุตำแหน่งทางกายภาพคนละแห่งได้ ดังนั้น การรักษาเรขาคณิตระหว่างประมวลผลจึงสำคัญพอ ๆ กับการรักษาค่าข้อมูล การแปลงระหว่างภาพ SimpleITK กับแถวลำดับ NumPy ต้องคำนึงถึงรูปแบบการเรียงแกนและข้อมูลเมตา การทำงานที่ดูถูกต้องในโปรแกรมดูภาพตัดขวางก็ยังอาจทำให้ภาพสามมิติมีตำแหน่งหรือมาตราส่วนผิดพลาดได้ หากข้อมูลเชิงพื้นที่สูญหาย

เราแนะนำ SimpleITK สำหรับเวิร์กโฟลว์การลงทะเบียนภาพและการวิเคราะห์เชิงพื้นที่ที่ได้ประโยชน์จากโมเดลภาพซึ่งระบุข้อมูลไว้อย่างชัดเจน ไลบรารีนี้มีความเฉพาะทางเกินความจำเป็นสำหรับภาพเว็บทั่วไป ควรกำหนดหน่วยให้สอดคล้องกัน ตรวจสอบเรขาคณิตหลังการแปลง และทดสอบการสุ่มตัวอย่างใหม่ด้วยจุดสังเกตที่ทราบตำแหน่งหรือข้อมูลอ้างอิงอื่นที่เหมาะสม ไลบรารีนี้มีเครื่องมือสำหรับประมวลผลภาพ แต่ไม่ได้ยืนยันความถูกต้องของข้อสรุปทางวิทยาศาสตร์ และไม่ได้ทำให้ไปป์ไลน์การประมวลผลเหมาะสำหรับใช้ทางคลินิกโดยปราศจากการตรวจสอบความถูกต้องเฉพาะทางของตนเอง

ข้อดีและข้อเสีย

  • แสดงภาพในปริภูมิทางกายภาพได้อย่างชัดเจน
  • เป็นพื้นฐานที่มีประโยชน์สำหรับการลงทะเบียนภาพและการสุ่มตัวอย่างใหม่
  • เหมาะสำหรับเวิร์กโฟลว์ทางวิทยาศาสตร์ที่ใช้ข้อมูลภาพสามมิติ
  • ต้องระมัดระวังในการจัดการเรขาคณิตและการแปลงเป็นแถวลำดับ
  • มีความเฉพาะทางมากกว่าการแก้ไขภาพแรสเตอร์ทั่วไป

สำรวจ SimpleITK

10. pyvips

ควรพิจารณา pyvips เมื่อขนาดภาพหรือปริมาณงานประมวลผลทำให้การโหลด แก้ไข และบันทึกภาพตามขั้นตอนทั่วไปมีต้นทุนสูงเกินไป ไลบรารีนี้เปิดให้ใช้ libvips ผ่าน Python และสร้างไปป์ไลน์ที่ประมวลผลพิกเซลเมื่อมีการเรียกขอผลลัพธ์ วิธีนี้ช่วยลดความจำเป็นในการสร้างภาพระหว่างทางทุกภาพขึ้นมาไว้ในหน่วยความจำ จึงเหมาะกับงานให้บริการภาพหรือประมวลผลแบบกลุ่มในปริมาณมาก

รูปแบบการเข้าถึงเป็นปัจจัยสำคัญต่อการทำงาน เอกสารประกอบแยกการเข้าถึงแบบลำดับออกจากการเข้าถึงแบบสุ่ม และอธิบายว่าเมื่อโหลดไฟล์ ระบบจะอ่านส่วนหัวก่อน ไม่ได้ถอดรหัสพิกเซลทุกจุดทันที ควรเลือกโหมดการเข้าถึงให้เหมาะกับการทำงานที่จะตามมา การแปลงภาพขนาดใหญ่เป็นแถวลำดับ NumPy ทั้งชุดอาจทำให้สูญเสียข้อได้เปรียบด้านการใช้หน่วยความจำ ซึ่งเป็นเหตุผลที่เลือกใช้ไปป์ไลน์แบบประมวลผลเมื่อเรียกใช้ตั้งแต่แรก

เราแนะนำ pyvips เมื่อผลการวัดชี้ว่าการถอดรหัส แรงกดดันต่อหน่วยความจำ หรือการทำงานกับภาพซ้ำ ๆ เป็นคอขวด ตรวจสอบว่าฟีเจอร์ของ libvips ที่ติดตั้งและการรองรับรูปแบบไฟล์ที่จำเป็นพร้อมใช้งานบนเครื่องจริง จากนั้นวัดการใช้หน่วยความจำสูงสุดและเวลาประมวลผลทั้งหมด ไลบรารีนี้ไม่ได้เป็นตัวเลือกที่ดีที่สุดโดยอัตโนมัติสำหรับทุกอัลกอริทึม โดยเฉพาะอัลกอริทึมที่ต้องเข้าถึงแถวลำดับได้อย่างอิสระ การเพิ่มไลบรารีนี้ไว้ในรายการตัวเลือกช่วยขยายขอบเขตให้ครอบคลุมทั้งต้นทุนจริงของการใช้งานไปป์ไลน์ภาพในระดับใหญ่ ไม่ได้จำกัดอยู่แค่การฝึกโมเดลและภาพขนาดเล็ก

ข้อดีและข้อเสีย

  • การประมวลผลเมื่อเรียกใช้ช่วยลดการใช้หน่วยความจำสำหรับข้อมูลระหว่างทางได้
  • เวิร์กโฟลว์ที่เข้าถึงข้อมูลตามลำดับเหมาะกับภาพขนาดใหญ่
  • เข้าถึงการทำงานของ libvips ผ่าน Python
  • ประโยชน์ที่ได้รับขึ้นอยู่กับรูปแบบการเข้าถึงและการทำงานที่ใช้
  • ควรตรวจสอบไลบรารีเนทีฟและการรองรับรูปแบบไฟล์ในสภาพแวดล้อมที่จะนำไปใช้งาน

ดูรายละเอียดเกี่ยวกับ pyvips

แนวทางจัดการภาพที่อาจทำให้ไปป์ไลน์มีปัญหา

  • สีและแชนเนล: ระบุให้ชัดเจนว่าใช้ RGB หรือ BGR ภาพระดับสีเทาหรือภาพสี และแสดงค่าอัลฟาในรูปแบบใด แปลงข้อมูลอย่างตั้งใจเมื่อเปลี่ยนขอบเขตระหว่างไลบรารี
  • ชนิดข้อมูลและช่วงค่า: การแปลงอาร์เรย์เป็นเลขทศนิยมไม่ได้ปรับช่วงค่าข้อมูลให้เป็นมาตรฐานเสมอไป คงค่าทางวิทยาศาสตร์ที่มีความหมายไว้ และทำตามข้อกำหนดของฟังก์ชันปลายทาง
  • แกนและเรขาคณิต: แยกความสูง ความกว้าง แชนเนล เวลา และความลึกออกจากกัน สำหรับภาพเชิงพื้นที่ ให้คงค่าระยะห่าง จุดกำเนิด ทิศทาง และหน่วยที่สอดคล้องกันไว้
  • การประมาณค่าแทรก: จัดการมาสก์แบบจัดหมวดหมู่ต่างจากภาพความเข้มต่อเนื่อง วิธีประมาณค่าแทรกที่เหมาะกับภาพถ่ายอาจทำให้ค่าป้ายกำกับในมาสก์การแบ่งส่วนไม่ถูกต้อง
  • เมทาดาทาและการวางแนว: ทดสอบโปรไฟล์สี แท็กการวางแนว และความโปร่งใสตลอดกระบวนการอ่าน-ประมวลผล-เขียนไฟล์ให้ครบถ้วน พร้อมกำหนดว่าเอาต์พุตต้องเก็บเมทาดาทาใดไว้บ้าง
  • ข้อมูลเป้าหมายสำหรับการฝึก: แสดงกรอบ มาสก์ และจุดสำคัญหลังการเพิ่มข้อมูล แม้การแปลงภาพจะสอดคล้องกันในเชิงพื้นที่ แต่ก็อาจทำให้ตัวอย่างไม่เหมาะสมได้ หากนโยบายการแปลงเปลี่ยนความหมายของป้ายกำกับ

วิธีเปรียบเทียบประสิทธิภาพและการดูแลรักษา

ทดสอบประสิทธิภาพของเวิร์กโฟลว์ทั้งหมดกับภาพที่มีขนาดและรูปแบบไฟล์ซึ่งเป็นตัวแทนของการใช้งานจริง ให้ครอบคลุมการถอดรหัส การคัดลอก การโอนย้ายข้อมูลระหว่างอุปกรณ์ การประมวลผล และการเข้ารหัส พร้อมบันทึกทั้งการใช้หน่วยความจำสูงสุดและเวลาที่ใช้ ตัวกรองที่ทำงานเร็วอาจแทบไม่ช่วยให้เร็วขึ้น หากการถอดรหัสไฟล์เป็นขั้นตอนที่ใช้เวลาส่วนใหญ่ และการแปลงภาพแบบประเมินผลเมื่อจำเป็นให้เป็นอาร์เรย์เต็มรูปแบบอาจเปลี่ยนรูปแบบการใช้หน่วยความจำได้อย่างมาก

กำหนดเวอร์ชันที่เข้ากันได้ให้แน่นอน และตรวจสอบตัวแปลงรหัสหรือปลั๊กอินเสริมบนเครื่องที่จะนำไปใช้งาน สำหรับการเพิ่มข้อมูล คู่มือใบอนุญาตอย่างเป็นทางการของ AlbumentationsX เป็นจุดเริ่มต้นที่เหมาะสมสำหรับตรวจสอบเงื่อนไขปัจจุบันของแพ็กเกจ อย่าอ้างอิงข้อความเกี่ยวกับใบอนุญาตที่คัดลอกมาจากแพ็กเกจหรือบทช่วยสอนเวอร์ชันเก่า

หากการประมวลผลภาพเป็นขั้นตอนป้อนข้อมูลให้โมเดล โปรดอ่านคู่มือไลบรารีแมชชีนเลิร์นนิงสำหรับ Pythonของเราเพื่อเลือกเลเยอร์สำหรับสร้างโมเดล หรือดูการเปรียบเทียบไลบรารีดีปเลิร์นนิงสำหรับเวิร์กโฟลว์ที่ใช้โครงข่ายประสาทเทียม ควรประมวลผลภาพล่วงหน้าให้สอดคล้องกันทั้งระหว่างการฝึกและการอนุมาน

ควรเลือกไลบรารีประมวลผลภาพใด

เริ่มต้นด้วย OpenCV สำหรับงานด้านคอมพิวเตอร์วิทัศน์และวิดีโอทั่วไป ใช้ Pillow สำหรับการแก้ไขภาพในชีวิตประจำวัน หรือเลือก scikit-image สำหรับการวิเคราะห์ทางวิทยาศาสตร์ เพิ่ม SciPy ndimage เมื่อต้องการการทำงานเชิงตัวเลขหลายมิติที่ระบุได้อย่างชัดเจน และใช้ ImageIO เมื่อยังขาดเครื่องมือสำหรับโหลดและเขียนทรัพยากร

สำหรับโปรเจ็กต์ PyTorch ให้ลองใช้ torchvision สำหรับการประมวลผลล่วงหน้าทั่วไปและเป้าหมายที่ซิงโครไนซ์กัน และใช้ Kornia เมื่อต้องการการทำงานกับเทนเซอร์แบบหาอนุพันธ์ได้หรือแบบเป็นชุด พิจารณาใช้ AlbumentationsX เมื่อต้องการนโยบายการเพิ่มข้อมูลที่หลากหลายขึ้น หลังจากตรวจสอบเงื่อนไขของแพ็กเกจและยืนยันความถูกต้องของตัวอย่างที่ได้แล้ว

ใช้ SimpleITK เมื่อเรขาคณิตทางกายภาพเป็นองค์ประกอบสำคัญของภาพ และใช้ pyvips เมื่อต้องการแนวทางจัดการหน่วยความจำแบบอื่นสำหรับประมวลผลภาพขนาดใหญ่ ตัวเลือกที่ดีที่สุดคือไลบรารีที่เก็บรักษาข้อมูลซึ่งแอปพลิเคชันของคุณต้องใช้ พร้อมทั้งทำให้เข้าใจต้นทุนด้านการประมวลผลและการนำไปใช้งานได้ง่าย

Alex เป็นผู้นำการดำเนินงานข่าวที่ใช้ AI ของ Unite.AI โดยผสานงานวารสารศาสตร์ การวิจัย และระบบอัตโนมัติ เพื่อสนับสนุนการรายงานข่าวด้านปัญญาประดิษฐ์อย่างทันท่วงทีและรองรับการขยายงาน งานของเขาช่วยให้ความก้าวหน้าใหม่ ๆ ด้าน AI ได้รับการนำเสนออย่างมีประสิทธิภาพ พร้อมรักษามาตรฐานบรรณาธิการของสำนักพิมพ์