Rumah > pembangunan bahagian belakang > Tutorial Python > Membina Pengesanan Objek Masa Nyata Dikuasakan AI dengan OpenCV, Flask, Gemini Vision dan GitHub Actions CI/CD pada AWS EC2

Membina Pengesanan Objek Masa Nyata Dikuasakan AI dengan OpenCV, Flask, Gemini Vision dan GitHub Actions CI/CD pada AWS EC2

Mary-Kate Olsen
Lepaskan: 2024-12-22 19:36:12
asal
556 orang telah melayarinya

PENGENALAN:

Bayangkan sistem yang boleh menganalisis suapan video langsung dalam masa nyata, mentafsir adegan dan bertindak balas dengan bijak kepada soalan tentang persekitaran—sama seperti pembantu maya yang mempunyai mata. Ini adalah potensi untuk menggabungkan teknologi canggih seperti OpenCV untuk pemprosesan video dan model visi Gemini Google, memanfaatkan model "gemini-1.5-flash-latest" terbaharunya.

Dalam artikel ini, saya akan membimbing anda membina Sistem Pengesanan Objek Masa Nyata yang menggunakan penstriman video langsung dan analisis adegan dikuasakan AI untuk menyampaikan respons yang berwawasan dan menyedari konteks. Kami akan menggunakan aplikasi pada AWS EC2, menetapkan peringkat untuk skalabiliti dan penggunaan dunia sebenar sambil menggunakan Github Actions untuk CI/CD automatik, memastikan saluran kemas kini yang lancar.

Menjelang akhir tutorial ini, anda akan mempunyai sistem berkuasa AI yang berfungsi sepenuhnya sedia untuk digunakan, dengan keyakinan untuk mengembangkan dan menyesuaikannya untuk pelbagai kes penggunaan.


STRUKTUR PROJEK

project/
├── app.py              # Flask application code
├── requirements.txt    # Python dependencies
├── templates/
│   └── index.html     # Frontend UI
└── .env               # Environment variables (API keys, etc.)

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Komponen Teras

  1. Tangkapan Video Masa Nyata (OpenCV) Kelas WebcamCapture dalam app.py mengendalikan penstriman video:
self.stream = cv2.VideoCapture(0)  # Open the default webcam
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Ini memastikan penangkapan dan pemprosesan bingkai selamat benang yang cekap.

  1. Pengesanan Objek Dikuasakan AI (Google Gemini) Menggunakan model Gemini, kami menganalisis bingkai untuk pemahaman adegan masa nyata:
self.model = ChatGoogleGenerativeAI(model="gemini-1.5-flash-latest")
response = self.chain.invoke({"prompt": prompt, "image_base64": image_base64})

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
  1. Ujung Belakang Kelalang Aplikasi Flask menyediakan titik akhir untuk penstriman video, pertanyaan AI dan semakan status sistem:

/video_feed: Menstrim video langsung.

/process_query: Mengendalikan analisis dikuasakan AI berdasarkan input pengguna dan bingkai video.

  1. UI Depan

    Fail index.html menyediakan antara muka web responsif untuk berinteraksi dengan sistem. Ia menangkap pertanyaan pengguna dan memaparkan respons AI masa nyata.

    PRASYARAT

  2. Akaun AWS.

  3. Nama domain berdaftar (cth., example.com).

  4. Akaun Google Cloud atau akaun Open AI

  5. Tindakan GitHub dikonfigurasikan dalam repositori anda.

4. Pengetahuan asas tentang alat baris arahan SSH dan Linux.

PENGKlonan & PENGGUNAAN PERMOHONAN

Langkah 1: Klon Repositori, Jana API & Tolak fail aplikasi ke Github

A. Klon repositori

$ git clone https://github.com/Abunuman/Real-Time-ODS.git
$ cd Real-Time-ODS
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

B. Hasilkan kunci API anda dan tambahkan pada fail .env
i. Cipta fail .env sama ada secara manual daripada pilihan yang tersedia di sebelah kiri editor teks anda (saya menggunakan VScode)
ATAU
Di terminal, jalankan:
$ sentuh .env

Kemudian tambahkan ini dalam .env

GOOGLE_API_KEY=your_google_api_key
OPENAI_API_KEY=your_openai_api_key
FLASK_DEBUG=True
Salin selepas log masuk
Salin selepas log masuk

ii. Log masuk ke Google Cloud dan ikuti langkah ini untuk menjana kunci API anda.

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

a. Navigasi ke Bahagian API & Perkhidmatan

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

b. Klik pada Kredensial kemudian ikuti langkah lain di bawah

Buat Bukti Kelayakan > Kunci API , kemudian Kunci API dijana. Ingat untuk ambil perhatian nama kunci API anda. Anda juga boleh memberi nama semasa proses.

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

Salin Kunci API yang dijana, kembali ke fail .env anda dan gantikan kunci_google_api_anda dengan kunci yang baru anda salin.

c. Dayakan Gemini API
Cari API Gemini dan klik pada DAYAKAN

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

Sahkan bahawa Kunci API anda berada di bawah bahagian METRICS dan Bukti Kelayakan di bawah API Gemini Didayakan.

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

iii. Cipta fail .gitignore dan tambahkan .env pada fail supaya ia tidak ditolak ke github.

N.B.: Amalan standard adalah untuk memastikan rahsia dan pembolehubah persekitaran tidak didedahkan kepada umum. Oleh itu, keperluan untuk .gitignore untuk mengabaikan fail yang ditambahkan di dalamnya sambil menolak ke Github.

B. Tekan ke Repositori.
i. Buat repositori Github dengan nama aplikasi dan ikut arahan di bawah untuk menolak ke github

project/
├── app.py              # Flask application code
├── requirements.txt    # Python dependencies
├── templates/
│   └── index.html     # Frontend UI
└── .env               # Environment variables (API keys, etc.)

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

N.B: tukar nama repositori kepada nama repositori anda

Langkah 2: Sediakan Rahsia Persekitaran Tindakan Github

Konfigurasikan rahsia pengguna AWS IAM anda dan pembolehubah persekitaran yang diperlukan untuk projek.

Menempatkan projek melalui AWS memerlukan rahsia AWS serta pembolehubah persekitaran yang ditambahkan secara setempat pada .env anda ditambahkan pada persekitaran Github Actions. Ini adalah untuk memastikan akses kepada akaun AWS khusus yang dimaksudkan untuk penggunaan dan juga memastikan pembolehubah persekitaran yang diperlukan tersedia dalam persekitaran penggunaan.

i. Navigasi ke Tetapan dalam repositori anda

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

ii. Klik pada Rahsia dan Pembolehubah > Tindakan

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

iii. Tambah Rahsia dan Pembolehubah anda seperti di bawah

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

![Rahsia](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7t6vyolkj2jyq85oswh7.png

Langkah 3: Menyediakan Instance AWS EC2

i. Lancarkan Instance EC2

  • Gunakan Konsol Pengurusan AWS untuk melancarkan tika EC2 (cth., Ubuntu 22.04).

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

  • Pilih jenis tika (cth., t2.micro untuk pengguna peringkat percuma).

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

  • Buat dan muat turun pasangan kunci (fail.pem) untuk akses SSH.

Buat pasangan kunci baharu atau gunakan yang sedia ada.

Jika anda mencipta pasangan kunci baharu, klik pada buat pasangan kunci dan berikan nama pilihan anda.

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

Pilih jenis Pasangan Kunci sebagai RSA

Format fail sebagai .pem

Pasangan kunci dimuat turun secara automatik ke sistem anda.

  • Konfigurasikan Kumpulan Keselamatan

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

Benarkan peraturan masuk berikut:
i. HTTP (port 80): Untuk menyampaikan aplikasi anda.
ii. HTTPS (port 443): Untuk akses selamat.
iii. SSH (port 22): Untuk akses pengurusan.

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

  • Klik pada contoh Pelancaran dan benarkan contoh itu dilancarkan sepenuhnya.

Kini tika anda sedia untuk digunakan sebaik sahaja status menunjukkan "Berjalan".

ii. Konfigurasikan pasangan kunci (.pem key) untuk akses SSH

Untuk pengguna buku Mac atau pengguna Linux dengan terminal bash, konfigurasikan pasangan kunci anda untuk akses SSH demikian:

a. Buka kunci .pem yang dimuat turun menggunakan VScode atau Xcode

b. Pada terminal anda, navigasi ke direktori .ssh dari direktori akar(~)

project/
├── app.py              # Flask application code
├── requirements.txt    # Python dependencies
├── templates/
│   └── index.html     # Frontend UI
└── .env               # Environment variables (API keys, etc.)

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

c. Cipta fail .pem dalam direktori .ssh menggunakan penyunting teks nano atau vim; Saya akan menggunakan nano dalam tutorial ini.

Pasang nano jika anda belum memasangnya.

Untuk pengguna macbook

self.stream = cv2.VideoCapture(0)  # Open the default webcam
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Untuk pengguna linux

self.model = ChatGoogleGenerativeAI(model="gemini-1.5-flash-latest")
response = self.chain.invoke({"prompt": prompt, "image_base64": image_base64})

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Setelah memasangnya, buat fail .pem dalam direktori .ssh menggunakan nano.

Pastikan fail yang akan dibuat mengandungi nama sebenar fail .pem anda.

$ git clone https://github.com/Abunuman/Real-Time-ODS.git
$ cd Real-Time-ODS
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kemudian salin fail .pem yang telah dibuka dan tampal dalam .pem untuk dibuat dalam direktori .ssh.

Tekan Ctrl X, kemudian Y , kemudian Enter untuk menyimpan.

d. Tukar kebenaran fail .pem

GOOGLE_API_KEY=your_google_api_key
OPENAI_API_KEY=your_openai_api_key
FLASK_DEBUG=True
Salin selepas log masuk
Salin selepas log masuk

iii. Akses Instance - SSH ke dalam contoh EC2 anda:

Klik pada ID Instance . Setelah contoh berada dalam keadaan berjalan, pilih pada pilihan sambung

Sebaik sahaja anda berada di halaman Connect , Pergi ke SSH Client

Building AI-Powered Real-Time Object Detection with OpenCV, Flask, Gemini Vision, and GitHub Actions CI/CD on AWS EC2

Kemudian salin arahan terakhir pada halaman yang kelihatan seperti ini:

$ git init
$ git add .
$ git commit -m "first commit"
$ git branch -M main
$ git remote add origin https://github.com/Abunuman/repository-name.git
git push -u origin main
Salin selepas log masuk

Tampal ini pada terminal anda dan tekan enter. Anda harus menyambung dengan lancar.

Untuk Pengguna Windows

  • Persediaan Windows

Buka CMD pada mesin tingkap anda

Cari direktori yang dikehendaki di mana fail .pim disimpan

Sebaik-baiknya daripada direktori ini, kita boleh menjalankan arahan ssh yang disalin dan kita sepatutnya boleh menyambung ke EC2. Walau bagaimanapun, kadangkala kami mendapat ralat kebenaran keselamatan apabila kami menjalankan arahan ssh.

Kami perlu menukar kebenaran kepada fail .pem.

Untuk itu ikuti langkah di bawah.

  1. Cari folder fail .pem , klik kanan pada fail dan pilih sifat

  2. Pergi ke tab Keselamatan

  3. Pergi ke tab Lanjutan

  4. Klik Lumpuhkan warisan

  5. Pilihan Pendahuluan ini juga menunjukkan pengguna lain mempunyai semua kebenaran untuk fail .pem. Alih keluar kebenaran untuk semua pengguna lain

  6. Tambah pengguna yang anda cuba sambungkan ke EC2 jika belum ada dalam senarai pengguna.

  7. Dayakan semua kebenaran untuk pengguna ini.

Sebaik-baiknya dengan langkah ini, anda tidak sepatutnya menghadapi ralat.

Jalankan arahan SSH daripada gesaan CMD

Setelah kebenaran dibetulkan , gesaan akan berjaya disambungkan ke EC2

Sekarang anda berjaya menyelesaikan langkah-langkah tersebut dan anda boleh menjalankan arahan daripada windows CMD pada contoh EC2.

iv.Pasang Ketergantungan - Kemas kini senarai pakej dan pasang pakej yang diperlukan:

Setelah disambungkan ke tika EC2 anda melalui SSH, pasang kebergantungan pada EC2.

Pada terminal anda yang disambungkan, jalankan arahan berikut:

project/
├── app.py              # Flask application code
├── requirements.txt    # Python dependencies
├── templates/
│   └── index.html     # Frontend UI
└── .env               # Environment variables (API keys, etc.)

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Semak versi python3 yang dipasang, pastikan 3.12

self.stream = cv2.VideoCapture(0)  # Open the default webcam
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Langkah 2: Meletakkan Aplikasi

Sediakan Aplikasi

Pindahkan app.py, index.html dan requirements.txt ke contoh EC2:

self.model = ChatGoogleGenerativeAI(model="gemini-1.5-flash-latest")
response = self.chain.invoke({"prompt": prompt, "image_base64": image_base64})

Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Langkah 3: Mengkonfigurasi Tindakan GitHub untuk CI/CD

Buat Fail Aliran Kerja dalam repositori anda, tambahkan fail .github/workflows/main.yml:

$ git clone https://github.com/Abunuman/Real-Time-ODS.git
$ cd Real-Time-ODS
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

KESIMPULAN

Dalam tutorial ini, kami memulakan perjalanan yang komprehensif untuk membina dan menggunakan sistem pengesanan objek masa nyata yang menyepadukan dengan lancar OpenCV untuk tangkapan video langsung dan ChatGoogleGenerativeAI Google untuk analisis adegan pintar. Daripada mengkonfigurasi aplikasi secara setempat hingga menggunakan aplikasi tersebut dengan selamat pada AWS EC2 dengan domain tersuai dan SSL, kami merangkumi setiap langkah penting untuk mengubah idea anda menjadi penyelesaian yang berfungsi dan berskala.

Projek ini menyerlahkan kuasa menggabungkan teknologi termaju seperti Flask, OpenCV dan AI untuk menyelesaikan masalah dunia sebenar sambil memastikan amalan terbaik untuk penggunaan awan. Dengan mengikut langkah ini, anda bukan sahaja menggunakan sistem berkuasa AI yang mantap tetapi juga memastikan kebolehskalaan, keselamatan dan saluran paip CI/CD yang cekap.

Atas ialah kandungan terperinci Membina Pengesanan Objek Masa Nyata Dikuasakan AI dengan OpenCV, Flask, Gemini Vision dan GitHub Actions CI/CD pada AWS EC2. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan