با اتوماسیون هوش مصنوعی VisualInsight داده های تصویر را به بینش تبدیل کنید


نویسنده(های): یوتم براون

در ابتدا منتشر شد به سمت هوش مصنوعی.

استخراج بینش از تصاویر اغلب می تواند چالش برانگیز باشد. این که آیا شما یک محقق، یک تحلیلگر، یا به سادگی کنجکاو هستید، تجزیه و تحلیل و درک موثر تصاویر بسیار مهم است اما همیشه ساده نیست. اینجاست که VisualInsight وارد می شود

شکل 1: https://developers.googleblog.com/en/gemini-15-flash-updates-google-ai-studio-gemini-api/

GitHub – yotambraun/VisualInsight

با ایجاد یک حساب کاربری در GitHub به توسعه yotambraun/VisualInsight کمک کنید.

github.com

چالش ها با روش های سنتی تجزیه و تحلیل تصویر

  • تلاش دستی: یافتن ابزار مناسب، نوشتن اسکریپت های سفارشی و کار با بزرگ مجموعه داده ها اغلب شامل کار دستی قابل توجهی است.
  • پیچیدگی: پیمایش الگوریتم های پیشرفته، ML چارچوب‌ها یا پروژه‌های منبع باز می‌توانند بسیار زیاد باشند، به‌ویژه برای تیم‌های کوچک‌تر.
  • ذخیره سازی و امنیت: اطمینان از اینکه داده ها به صورت ایمن ذخیره شده و به راحتی قابل بازیابی هستند لایه دیگری از پیچیدگی را اضافه می کند.
  • مقیاس بندی: مدیریت مجموعه داده های بزرگتر به زیرساخت های مقیاس پذیر نیاز دارد که اغلب شامل هزینه های بالا می شود.

VisualInsight این چالش ها را با یک راه حل بدون درز و خودکار برای تجزیه و تحلیل تصویر برطرف می کند.

شکل 2: نمونه ای از رابط کاربری که در آن می توانید تصاویر را آپلود کنید

همانطور که می بینید، UI به ساده سازی فرآیند کمک می کند. شما فقط تصویر خود را بکشید و رها کنید – بدون نیاز به اسکریپت پیچیده.

معرفی VisualInsight

ایده اصلی

VisualInsight یک است Streamlitبرنامه وب مبتنی بر وب که تجزیه و تحلیل تصویر را با استفاده از آن ساده می کند گوگل هوش مصنوعی مولد (جوزا). شامل می شود AWS S3 برای ذخیره ایمن تصاویر و نتایج اصلی

شکل 3: نتایج تجزیه و تحلیل در برنامه Streamlit نمایش داده می شود

VisualInsight با خودکار کردن بیشتر کارهای سنگین، تضمین می‌کند که زمان کمتری را برای پیکربندی و زمان بیشتری را صرف کنید. نوآوری.

اجزای کلیدی

  • رابط کاربری ساده: یک رابط کاربر پسند برای آپلود، مشاهده و تجزیه و تحلیل تصاویر.
  • LLM خدمات (گوگل جمینی): بینش‌های مبتنی بر متن پیشرفته که از تصاویر به دست می‌آیند.
  • ذخیره سازی AWS S3: ذخیره سازی امن برای فایل ها و تجزیه و تحلیل های تولید شده توسط هوش مصنوعی.
  • Docker & Terraform: زیرساخت برای استقرار سریع و تکرارپذیری.
  • CI/CD از طریق GitHub Actions: ساخت‌ها، آزمایش‌ها و استقرارهای خودکار برای قابلیت اطمینان.

VisualInsight چگونه کار می کند

  1. یک تصویر آپلود کنید
    یک فایل JPG یا PNG را بکشید و روی برنامه رها کنید.
  2. تجزیه و تحلیل هوش مصنوعی با گوگل جمینی
    سپس تصویر آپلود شده به سایت ارسال می شود LLMService کلاس، که از هوش مصنوعی (Gemini) گوگل برای ایجاد بینش توصیفی در مورد محتوای تصویر استفاده می کند.

شکل 4: جزئیات تجزیه و تحلیل بیشتر به کاربر نمایش داده می شود

3. ذخیره سازی در AWS S3 پس از تجزیه و تحلیل، برنامه هم تصویر اصلی و هم نتایج تجزیه و تحلیل را برای نگهداری ایمن در یک سطل S3 آپلود می کند.

4. نمایش نتایج بینش در رابط برنامه برای بازخورد فوری نمایش داده می شود.

شکل 5: نمای دیگری از رابط تجزیه و تحلیل

نکات برجسته کد

در زیر برخی از خدمات اصلی که VisualInsight را تقویت می کنند آورده شده است.

  1. خدمات LLM (app/services/llm_service.py)

تعامل با Google Gemini را برای تجزیه و تحلیل تصویر مدیریت می کند.

import google.generativeai as genai
import os
from datetime import datetime
from PIL import Image
from utils.logger import setup_logger

logger = setup_logger()

class LLMService:
def __init__(self):
genai.configure(api_key=os.getenv('GOOGLE_API_KEY'))
self.model = genai.GenerativeModel('gemini-1.5-flash-002')

self.prompt = """
Analyze this Image and provide:
1. Image type
2. Key information
3. Important details
4. Notable observations
"""

def analyze_document(self, image: Image.Image) -> dict:
try:
logger.info("Sending request to LLM")
# Generate content directly with the PIL image
response = self.model.generate_content([
self.prompt,
image
])

return {
"analysis": response.text,
"timestamp": datetime.now().isoformat()
}

except Exception as e:
logger.error(f"LLM analysis failed: {str(e)}")
raise Exception(f"Failed to analyze document: {str(e)}")

اینجا چه خبر است؟

  • من هوش مصنوعی Google Generative (Gemini) خود را با یک کلید API پیکربندی می‌کنم.
  • یک اعلان پیش‌فرض، نوع تحلیلی را که می‌خواهیم مشخص می‌کند.
  • را analyze_document متد تصویر را به Gemini ارسال می کند و تجزیه و تحلیل مبتنی بر متن آن را برمی گرداند.

2. سرویس S3 (app/services/s3_service.py)

فایل‌ها را با کلیدهای مهر زمانی در AWS S3 آپلود می‌کند و URLهای تعیین‌شده را برای دسترسی خصوصی ایجاد می‌کند.

import boto3
import os
from datetime import datetime
from utils.logger import setup_logger

logger = setup_logger()

class S3Service:
def __init__(self):
self.s3_client = boto3.client(
's3',
aws_access_key_id=os.getenv('AWS_ACCESS_KEY_ID'),
aws_secret_access_key=os.getenv('AWS_SECRET_ACCESS_KEY'),
region_name=os.getenv('AWS_REGION', 'us-east-1')
)
self.bucket_name = os.getenv('S3_BUCKET_NAME')

def upload_file(self, file):
"""Upload file to S3 and return the URL"""
try:
# Generate unique filename
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
file_key = f"uploads/{timestamp}_{file.name}"

# Upload to S3
self.s3_client.upload_fileobj(
file,
self.bucket_name,
file_key
)

# Generate presigned URL that expires in 1 hour
url = self.s3_client.generate_presigned_url(
'get_object',
Params={
'Bucket': self.bucket_name,
'Key': file_key
},
ExpiresIn=3600
)

logger.info(f"File uploaded successfully: {url}")
return url

except Exception as e:
logger.error(f"S3 upload failed: {str(e)}")
raise Exception(f"Failed to upload file to S3: {str(e)}")

شکل 6: سطل AWS S3 که تصاویر آپلود شده و نتایج تجزیه و تحلیل را ذخیره می کند

ویژگی های اصلی:

  • استفاده می کند boto3 برای تعامل با AWS S3.
  • برای هر فایل یک کلید با مهر زمانی ایجاد می کند.
  • الف را ایجاد می کند URL تعیین شده برای دسترسی به فایل خصوصی بدون نیاز به باز کردن کل سطل.

3. برنامه Streamlit (app/main.py)

رابط کاربری را برای آپلود فایل، شروع تجزیه و تحلیل و نمایش نتایج فراهم می کند.

import streamlit as st
import os
from dotenv import load_dotenv
from services.s3_service import S3Service
from services.llm_service import LLMService
from utils.logger import setup_logger
from PIL import Image

# Load environment variables
load_dotenv()

# Setup logging
logger = setup_logger()

# Initialize services
s3_service = S3Service()
llm_service = LLMService()

def main():
st.title("Document Analyzer")

uploaded_file = st.file_uploader("Upload a document", type=['png', 'jpg', 'jpeg'])

if uploaded_file:
# Display image
image = Image.open(uploaded_file)
st.image(image, caption='Uploaded Document', use_column_width=True)

if st.button('Analyze Document'):
with st.spinner('Processing...'):
try:
# Analyze with LLM directly
logger.info("Starting document analysis")
analysis = llm_service.analyze_document(image)

# Upload to S3 for storage
logger.info(f"Uploading file: {uploaded_file.name}")
s3_url = s3_service.upload_file(uploaded_file)

# Display results
st.success("Analysis Complete!")
st.json(analysis)

except Exception as e:
logger.error(f"Error processing document: {str(e)}")
st.error(f"Error: {str(e)}")

if __name__ == "__main__":
main()

  • Streamlit رابط کاربری را مدیریت می کند: آپلود فایل، نمایش، محرک های دکمه.
  • LLMS Service و S3Service برای رسیدگی به پرس و جوی هوش مصنوعی و آپلود فایل با هم هماهنگ شده اند.
  • گزارش‌های بی‌درنگ وضعیت را به شما اطلاع می‌دهند و هر مشکلی را برجسته می‌کنند.

اجرای VisualInsight به صورت محلی

  1. Repository را شبیه سازی کنید
git clone https://github.com/yotambraun/VisualInsight.git
cd VisualInsight

2. تنظیم محیط

ایجاد یک .env فایل در ریشه پروژه:

AWS_ACCESS_KEY_ID=YOUR_AWS_KEY
AWS_SECRET_ACCESS_KEY=YOUR_AWS_SECRET
AWS_REGION=us-east-1
S3_BUCKET_NAME=YOUR_BUCKET_NAME
GOOGLE_API_KEY=YOUR_GOOGLE_GENAI_KEY

3. Dependencies را نصب کنید

pip install -r requirements.txt

4. برنامه را اجرا کنید

streamlit run app/main.py

حرکت به http://localhost:8501 در مرورگر خود برای شروع استفاده از VisualInsight!

Containerization با Docker

از Docker برای عملکرد ثابت برنامه در همه محیط ها استفاده کنید.

شکل 7: AWS ECS مورد استفاده برای ارکستراسیون کانتینر

Dockerfile (گزیده):

FROM python:3.9-slim

WORKDIR /app

# Install dependencies
COPY requirements.txt .
RUN pip install -r requirements.txt

# Copy application code
COPY app/ .

EXPOSE 8501

ENTRYPOINT ["streamlit", "run", "main.py", "--server.port=8501", "--server.address=0.0.0.0"]

مراحل:

docker build -t visualinsight:latest .
docker run -p 8501:8501 visualinsight:latest

بازدید کنید http://localhost:8501 برای استفاده از برنامه

زیرساخت به عنوان کد با Terraform

شکل 8: AWS ECR، تصاویر Docker را برای برنامه ذخیره می کند

استفاده می کنم Terraform برای ایجاد و مدیریت منابع AWS: S3، ECR، ECS، و موارد دیگر برای استقرار برنامه.

چرا Terraform؟

Terraform به شما اجازه می دهد تا خود را تعریف کنید زیرساخت ابری به عنوان کد. به جای ایجاد دستی منابع AWS از طریق کنسول یا CLI، شما به سادگی یک فایل پیکربندی می نویسید. این تضمین می کند که زیرساخت شما وجود دارد سازگار، نسخه کنترل شده، و به راحتی قابل تکرار در چندین محیط

مزایای کلیدی استفاده از Terraform:

  • تکرارپذیری: تنظیمات مشابه را می توان چندین بار بدون دریفت اجرا کرد.
  • همکاری: تیم‌ها می‌توانند فایل‌های Terraform را در Git بررسی کنند و امکان بررسی کد بهتر و اشتباهات کمتر را فراهم کنند.
  • مقیاس پذیری: در صورت افزایش استفاده شما، منابع اضافی را به سرعت چرخش کنید.
  1. متغیرهای مثال (infrastructure/terraform/variables.tf)
variable "aws_region" {
description = "AWS region"
type = string
default = "us-east-1"
}

variable "bucket_name" {
description = "Name of the S3 bucket"
type = string
}

2. پیکربندی اصلی (infrastructure/terraform/main.tf)

terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.0"
}
}
}

provider "aws" {
region = var.aws_region
}

resource "aws_s3_bucket" "documents" {
bucket = var.bucket_name
}

resource "aws_ecr_repository" "app" {
name = "document-analyzer"
}

resource "aws_ecs_cluster" "main" {
name = "document-analyzer-cluster"
}
# ... ECS Service, Security Groups, Task Definition, etc.

چرا ECR و ECS؟

  • Amazon ECR (رجیستری ظروف الاستیک): یک رجیستری خصوصی برای ذخیره تصاویر Docker شما. به جای تکیه بر Docker Hub یا سایر اشخاص ثالث، ECR تصاویر شما را در حساب AWS شما ایمن نگه می دارد.
  • Amazon ECS (سرویس کانتینر الاستیک): یک سرویس ارکستراسیون کانتینر بومی AWS. مقیاس بندی و استقرار برنامه کانتینری شما را به صورت خودکار مدیریت می کند. با Fargate (موتور محاسباتی بدون سرور برای کانتینرها)، لازم نیست نگران تهیه یا مدیریت نمونه های EC2 باشید. تمام کارهای سنگین را از بین می برد.

به طور خلاصه:

  • ECR تصاویر Docker ساخته شده شما را ذخیره می کند.
  • ECS آن تصاویر را از ECR می کشد و آنها را به صورت کانتینر به صورت مقیاس پذیر اجرا می کند.

3. استقرار از طریق Terraform

cd infrastructure/terraform
terraform init
terraform plan -var="bucket_name=my-visualinsight-bucket"
terraform apply -var="bucket_name=my-visualinsight-bucket"

Terraform خواهد کرد:

  • یک سطل S3 ایجاد کنید.
  • یک مخزن ECR ایجاد کنید.
  • یک خوشه ECS، وظایف، خدمات، نقش های IAM و موارد دیگر را تنظیم کنید.

CI/CD خودکار با GitHub Actions

فرآیند ساخت، تست و استقرار را به صورت خودکار انجام دهید تا اطمینان حاصل کنید که به‌روزرسانی‌های مداوم را تضمین می‌کنید.

شما .github/workflows/deploy.yml مراقبت می کند:

  1. ورود به سیستم AWS: با حساب AWS شما با استفاده از Secrets احراز هویت می شود.
  2. Docker Build & Push: تصویر Docker را می سازد و آن را فشار می دهد آمازون ECR.
  3. به روز رسانی ECS: یک استقرار جدید در ECS را مجبور می کند تا آخرین تصویر را بکشد.

شکل 9: اقدامات GitHub

شکل 10: خط لوله اقدامات GitHub برای CI/CD

نمونه استقرار گردش کار:

name: Deploy to AWS

on:
push:
branches: [ main ]

jobs:
deploy:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2

- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1

- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1

- name: Build and push Docker image
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPOSITORY: document-analyzer
IMAGE_TAG: ${{ github.sha }}
run: |
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG

- name: Deploy to ECS
run: |
aws ecs update-service --cluster document-analyzer-cluster --service document-analyzer --force-new-deployment

هر زمان که فشار می دهید به main، GitHub Actions آخرین تغییرات شما را به صورت خودکار ساخته و اجرا می کند.

تاثیر دنیای واقعی

  1. بهره وری زمان
    با تجزیه و تحلیل مبتنی بر هوش مصنوعی، نیازی به برچسب‌گذاری دستی یا پیشرفته نیست ML راه اندازی خط لوله
  2. مقیاس پذیری
    AWS S3 + ECS به این معنی است که می‌توانید مجموعه داده‌های تصویر و ترافیک در حال رشد را بدون معماری مجدد مدیریت کنید.
  3. قابلیت اطمینان
    Docker محیط های سازگار را تضمین می کند. Terraform زیرساخت را استاندارد می کند و GitHub Actions تست و استقرار را خودکار می کند.
  4. کاربر پسند
    رابط کاربری بصری Streamlit به این معنی است که غیر توسعه دهندگان می توانند تصاویر را آپلود کنند و اطلاعات بینش را در زمان واقعی مشاهده کنند.

نتیجه گیری

VisualInsight حدس و گمان را از تحلیل تصویر حذف می کند. با ترکیب کردن Streamlit، هوش مصنوعی Google Generative (Gemini)، AWS S3، Terraform و CI/CD، راه حلی قوی و مقیاس پذیر ارائه می دهد که استفاده و نگهداری آن آسان است. VisualInsight کل گردش کار را ساده می کند – بنابراین می توانید روی آن تمرکز کنید انجام اکتشافات، نه با زیرساخت ها دست و پنجه نرم می کنیم.

خوراکی های کلیدی

  • اتوماسیون کار دستی را کاهش می دهد و فرآیندها را ساده می کند.
  • زیرساخت همانطور که کد همکاری و تکرارپذیری را ترویج می کند.
  • داکر سازگاری در محیط های توسعه و تولید را تضمین می کند.
  • CI/CD به روز رسانی سریع و قابل اعتماد را فعال می کند.

با خیال راحت شبیه سازی کنید مخزن GitHub و آن را برای نیازهای پروژه خود سفارشی کنید. اگر از این کار لذت بردید، در نظر بگیرید کف زدن در رسانه، اشتراک گذاری با دیگران، یا دنبال کردن من برای بررسی عمیق تر در راه حل های هوش مصنوعی و ابری!

با تشکر برای خواندن!

اگر از این پست لذت بردیدلطفا یک کف بزنید. با خیال راحت دنبال کردن من در متوسط برای مقالات بیشتر!

مراجع

گوگل جمینی: مدل پیشرفته هوش مصنوعی گوگل که برای پردازش داده های چندوجهی از جمله متن، تصویر و صدا طراحی شده است.

Streamlit: یک چارچوب برنامه منبع باز برای ایجاد و اشتراک گذاری برنامه های داده با استفاده از پایتون.

AWS S3: Amazon Simple Storage Service (S3) یک سرویس ذخیره سازی اشیا است که مقیاس پذیری، در دسترس بودن داده ها، امنیت و عملکرد را ارائه می دهد.

داکر: یک پلتفرم برای توسعه، حمل و نقل و اجرای برنامه‌های کاربردی در داخل کانتینرها، تضمین ثبات در چرخه‌های توسعه و انتشار چندگانه.

Terraform: یک زیرساخت منبع باز به عنوان ابزار نرم افزار کد که شما را قادر می سازد تا به طور ایمن و قابل پیش بینی زیرساخت را ایجاد، تغییر و بهبود دهید.

اقدامات GitHub: یک پلت فرم CI/CD که به شما امکان می دهد خط لوله ساخت، آزمایش و استقرار خود را خودکار کنید.

AWS ECR (رجیستری کانتینر الاستیک): یک رجیستری کانتینر کاملاً مدیریت شده که ذخیره، مدیریت و استقرار تصاویر ظرف Docker را برای توسعه دهندگان آسان می کند.

AWS ECS (سرویس کانتینر الاستیک): یک سرویس هماهنگ‌سازی کانتینر بسیار مقیاس‌پذیر و با کارایی بالا که از کانتینرهای Docker پشتیبانی می‌کند و به شما امکان می‌دهد به راحتی برنامه‌های کانتینری را روی AWS اجرا و مقیاس‌بندی کنید.

این مراجع اطلاعات دقیقی در مورد هر مؤلفه مورد استفاده در برنامه VisualInsight ارائه می دهد.

منتشر شده از طریق به سمت هوش مصنوعی



منبع: https://towardsai.net/p/machine-learning/transform-image-data-into-insights-with-visualinsights-ai-automation