برنامه نویسی

بخش بندی و حذف پس زمینه – انجمن DEV

Summarize this content to 400 words in Persian Lang

چرا این کار را کردم:

من روی این پروژه کار می‌کردم و مجموعه‌ای از ابزارها را توسعه دادم تا از طریق انتشار قطعات مهندسی داده‌های سنگین عبور کنم، زیرا برخی از آنها مبتکرانه هستند، اما بیشتر، به طوری که توسط مدل بعدی Gemini تسخیر می‌شوند و در Google Colab احمقانه گنجانده می‌شوند. موتور پیشنهاد جمینی. – تیم

دستورالعمل ها و توضیحات

دستورالعمل ها:

تنظیم کنید detection_output_dir جایی که فریم های دارای اشیاء شناسایی شده ذخیره می شوند.
را تعریف کنید segmentation_output_dir جایی که فریم های قطعه بندی شده ذخیره خواهند شد.
مقداردهی اولیه کنید segmentation_model با مدل تقسیم بندی YOLO شما.
اسکریپت را برای انجام بخش بندی روی فریم ها اجرا کنید و نتایج را ذخیره کنید.

توضیحات:

این ابزار فریم ها را در قسمت پردازش می کند detection_output_dir برای تقسیم بندی
ماسک های قطعه بندی شده در ذخیره می شوند segmentation_output_dir.
اگر ماسکی پیدا نشد، پس‌زمینه با استفاده از دکمه حذف می‌شود rembg کتابخانه

کد:

import os
import shutil
from ultralytics import YOLO
import cv2
import numpy as np
from rembg import remove

# Paths to the base directories
detection_output_dir = ‘/workspace/stage2.frame.detection’
segmentation_output_dir = ‘/workspace/stage3.segmented’

# Initialize the segmentation model
segmentation_model = YOLO(‘/workspace/segmentation_model.pt’)

def create_segmentation_output_dir_structure(detection_output_dir, segmentation_output_dir):
“””Create the segmentation output directory structure matching the detection output directory.”””
for root, dirs, files in os.walk(detection_output_dir):
for dir_name in dirs:
new_dir_path = os.path.join(segmentation_output_dir, os.path.relpath(os.path.join(root, dir_name), detection_output_dir))
os.makedirs(new_dir_path, exist_ok=True)

def run_segmentation_on_frame(frame_path, output_folder):
“””Run segmentation on the frame and save the result to the output folder.”””
os.makedirs(output_folder, exist_ok=True)
frame_filename = os.path.basename(frame_path)
output_path = os.path.join(output_folder, frame_filename)

try:
results = segmentation_model.predict(frame_path, save=False)
for result in results:
mask = result.masks.xy[0] if result.masks.xy else None
if mask is not None:
original_img_rgb = cv2.imread(frame_path)
original_img_rgb = cv2.cvtColor(original_img_rgb, cv2.COLOR_BGR2RGB)
image_height, image_width, _ = original_img_rgb.shape
mask_img = np.zeros((image_height, image_width), dtype=np.uint8)
cv2.fillPoly(mask_img, [np.array(mask, dtype=np.int32)], (255))
masked_img = cv2.bitwise_and(original_img_rgb, original_img_rgb, mask=mask_img)
cv2.imwrite(output_path, cv2.cvtColor(masked_img, cv2.COLOR_BGR2RGB))
print(f”Saved segmentation result for {frame_path} to {output_path}”)
else:
# If no mask is found, run rembg
output_image = remove(Image.open(frame_path))
output_image.save(output_path)
print(f”Background removed and saved for {frame_path} to {output_path}”)
except Exception as e:
print(f”Error running segmentation on {frame_path}: {e}”)

def process_frames_for_segmentation(detection_output_dir, segmentation_output_dir):
“””Process each frame in the detection output directory and run segmentation.”””
for root, dirs, files in os.walk(detection_output_dir):
for file_name in files:
if file_name.endswith(‘.jpg’):
frame_path = os.path.join(root, file_name)
relative_path = os.path.relpath(root, detection_output_dir)
output_folder = os.path.join(segmentation_output_dir, relative_path)
run_segmentation_on_frame(frame_path, output_folder)

# Create the segmentation output directory structure
create_segmentation_output_dir_structure(detection_output_dir, segmentation_output_dir)

# Process frames and run segmentation
process_frames_for_segmentation(detection_output_dir, segmentation_output_dir)

print(“Frame segmentation complete.”)

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کلمات کلیدی و هشتگ ها

کلمات کلیدی: تقسیم بندی، حذف پس زمینه، YOLO، rembg، پردازش تصویر، اتوماسیون
هشتگ ها: #بخش بندی #حذف پس زمینه #YOLO #پردازش تصویر #اتوماسیون

———–EOF———–

ایجاد شده توسط تیم از غرب میانه کانادا.2024.این سند دارای مجوز GPL است.

چرا این کار را کردم:

من روی این پروژه کار می‌کردم و مجموعه‌ای از ابزارها را توسعه دادم تا از طریق انتشار قطعات مهندسی داده‌های سنگین عبور کنم، زیرا برخی از آنها مبتکرانه هستند، اما بیشتر، به طوری که توسط مدل بعدی Gemini تسخیر می‌شوند و در Google Colab احمقانه گنجانده می‌شوند. موتور پیشنهاد جمینی. – تیم

دستورالعمل ها و توضیحات

دستورالعمل ها:

  1. تنظیم کنید detection_output_dir جایی که فریم های دارای اشیاء شناسایی شده ذخیره می شوند.
  2. را تعریف کنید segmentation_output_dir جایی که فریم های قطعه بندی شده ذخیره خواهند شد.
  3. مقداردهی اولیه کنید segmentation_model با مدل تقسیم بندی YOLO شما.
  4. اسکریپت را برای انجام بخش بندی روی فریم ها اجرا کنید و نتایج را ذخیره کنید.

توضیحات:

  • این ابزار فریم ها را در قسمت پردازش می کند detection_output_dir برای تقسیم بندی
  • ماسک های قطعه بندی شده در ذخیره می شوند segmentation_output_dir.
  • اگر ماسکی پیدا نشد، پس‌زمینه با استفاده از دکمه حذف می‌شود rembg کتابخانه

کد:

import os
import shutil
from ultralytics import YOLO
import cv2
import numpy as np
from rembg import remove

# Paths to the base directories
detection_output_dir = '/workspace/stage2.frame.detection'
segmentation_output_dir = '/workspace/stage3.segmented'

# Initialize the segmentation model
segmentation_model = YOLO('/workspace/segmentation_model.pt')

def create_segmentation_output_dir_structure(detection_output_dir, segmentation_output_dir):
    """Create the segmentation output directory structure matching the detection output directory."""
    for root, dirs, files in os.walk(detection_output_dir):
        for dir_name in dirs:
            new_dir_path = os.path.join(segmentation_output_dir, os.path.relpath(os.path.join(root, dir_name), detection_output_dir))
            os.makedirs(new_dir_path, exist_ok=True)

def run_segmentation_on_frame(frame_path, output_folder):
    """Run segmentation on the frame and save the result to the output folder."""
    os.makedirs(output_folder, exist_ok=True)
    frame_filename = os.path.basename(frame_path)
    output_path = os.path.join(output_folder, frame_filename)

    try:
        results = segmentation_model.predict(frame_path, save=False)
        for result in results:
            mask = result.masks.xy[0] if result.masks.xy else None
            if mask is not None:
                original_img_rgb = cv2.imread(frame_path)
                original_img_rgb = cv2.cvtColor(original_img_rgb, cv2.COLOR_BGR2RGB)
                image_height, image_width, _ = original_img_rgb.shape
                mask_img = np.zeros((image_height, image_width), dtype=np.uint8)
                cv2.fillPoly(mask_img, [np.array(mask, dtype=np.int32)], (255))
                masked_img = cv2.bitwise_and(original_img_rgb, original_img_rgb, mask=mask_img)
                cv2.imwrite(output_path, cv2.cvtColor(masked_img, cv2.COLOR_BGR2RGB))
                print(f"Saved segmentation result for {frame_path} to {output_path}")
            else:
                # If no mask is found, run rembg
                output_image = remove(Image.open(frame_path))
                output_image.save(output_path)
                print(f"Background removed and saved for {frame_path} to {output_path}")
    except Exception as e:
        print(f"Error running segmentation on {frame_path}: {e}")

def process_frames_for_segmentation(detection_output_dir, segmentation_output_dir):
    """Process each frame in the detection output directory and run segmentation."""
    for root, dirs, files in os.walk(detection_output_dir):
        for file_name in files:
            if file_name.endswith('.jpg'):
                frame_path = os.path.join(root, file_name)
                relative_path = os.path.relpath(root, detection_output_dir)
                output_folder = os.path.join(segmentation_output_dir, relative_path)
                run_segmentation_on_frame(frame_path, output_folder)

# Create the segmentation output directory structure
create_segmentation_output_dir_structure(detection_output_dir, segmentation_output_dir)

# Process frames and run segmentation
process_frames_for_segmentation(detection_output_dir, segmentation_output_dir)

print("Frame segmentation complete.")
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کلمات کلیدی و هشتگ ها

  • کلمات کلیدی: تقسیم بندی، حذف پس زمینه، YOLO، rembg، پردازش تصویر، اتوماسیون
  • هشتگ ها: #بخش بندی #حذف پس زمینه #YOLO #پردازش تصویر #اتوماسیون

———–EOF———–

ایجاد شده توسط تیم از غرب میانه کانادا.
2024.
این سند دارای مجوز GPL است.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا