


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.)
Komponen Teras
- Tangkapan Video Masa Nyata (OpenCV) Kelas WebcamCapture dalam app.py mengendalikan penstriman video:
self.stream = cv2.VideoCapture(0) # Open the default webcam
Ini memastikan penangkapan dan pemprosesan bingkai selamat benang yang cekap.
- 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})
- 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.
-
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
Akaun AWS.
Nama domain berdaftar (cth., example.com).
Akaun Google Cloud atau akaun Open AI
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
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
ii. Log masuk ke Google Cloud dan ikuti langkah ini untuk menjana kunci API anda.
a. Navigasi ke Bahagian API & Perkhidmatan
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.
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
Sahkan bahawa Kunci API anda berada di bawah bahagian METRICS dan Bukti Kelayakan di bawah API Gemini Didayakan.
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.)
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
ii. Klik pada Rahsia dan Pembolehubah > Tindakan
iii. Tambah Rahsia dan Pembolehubah anda seperti di bawah
.
- Pilih jenis tika (cth., t2.micro untuk pengguna peringkat percuma).
- 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.
Pilih jenis Pasangan Kunci sebagai RSA
Format fail sebagai .pem
Pasangan kunci dimuat turun secara automatik ke sistem anda.
- Konfigurasikan Kumpulan Keselamatan
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.
- 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.)
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
Untuk pengguna linux
self.model = ChatGoogleGenerativeAI(model="gemini-1.5-flash-latest") response = self.chain.invoke({"prompt": prompt, "image_base64": image_base64})
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
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
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
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
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.
Cari folder fail .pem , klik kanan pada fail dan pilih sifat
Pergi ke tab Keselamatan
Pergi ke tab Lanjutan
Klik Lumpuhkan warisan
Pilihan Pendahuluan ini juga menunjukkan pengguna lain mempunyai semua kebenaran untuk fail .pem. Alih keluar kebenaran untuk semua pengguna lain
Tambah pengguna yang anda cuba sambungkan ke EC2 jika belum ada dalam senarai pengguna.
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.)
Semak versi python3 yang dipasang, pastikan 3.12
self.stream = cv2.VideoCapture(0) # Open the default webcam
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})
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
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!

ArraysareGenerallymorememememory-efficientthanlistsforstoringnumericaldataduetotheirfixed-sizenatureanddirectmemoryaccess.1) arraysstoreelementsinacontiguousblock, reducingoverheadfrointersormetadata.2)

ToConvertapythonlisttoanarray, usetheArraymodule: 1) importThearraymodule, 2) createalist, 3) UseArray (typecode, list) toConvertit, spesifyingthetypecodelike'i'forintegers.ThisconversionOptimizesMogenhomogeneousdata, enHomerMogeneShomogeneousdata, enHomerMogeneousdata, enhomoMogenerDataShomaSdata, enhomoMogenhomogeneousdata,

Senarai Python boleh menyimpan pelbagai jenis data. Senarai contoh mengandungi integer, rentetan, nombor titik terapung, boolean, senarai bersarang, dan kamus. Senarai fleksibiliti adalah berharga dalam pemprosesan data dan prototaip, tetapi ia perlu digunakan dengan berhati -hati untuk memastikan kebolehbacaan dan pemeliharaan kod.

Pythondoesnothavebuilt-inarrays;usethearraymoduleformemory-efficienthomogeneousdatastorage,whilelistsareversatileformixeddatatypes.Arraysareefficientforlargedatasetsofthesametype,whereaslistsofferflexibilityandareeasiertouseformixedorsmallerdatasets.

Themostcomonlyedmoduleforcreatingarraysinpythonisnumpy.1) numpyprovidesefficienttoolsforarrayoperations, idealfornumericaldata.2) arrayscanbecreatedingingnp.array () for1dand2dstructures

ToAppendElementStoapyThonList, useTheAppend () methodforsingleelements, extend () formultipleelements, andInsert () forspecificposition.1) useAppend () foraddingOneElementAttheend.2)

TOCREATEAPYTHONLIST, USESQUAREBRACKETS [] danSeparatateItemSwithCommas.1) listsaredynamicandCanHoldMixedDatypes.2) UseAppend (), mengalih keluar (), danSlicingFormApulation.3)

Dalam bidang kewangan, penyelidikan saintifik, penjagaan perubatan dan AI, adalah penting untuk menyimpan dan memproses data berangka dengan cekap. 1) Dalam Kewangan, menggunakan memori yang dipetakan fail dan perpustakaan Numpy dapat meningkatkan kelajuan pemprosesan data dengan ketara. 2) Dalam bidang penyelidikan saintifik, fail HDF5 dioptimumkan untuk penyimpanan data dan pengambilan semula. 3) Dalam penjagaan perubatan, teknologi pengoptimuman pangkalan data seperti pengindeksan dan pembahagian meningkatkan prestasi pertanyaan data. 4) Dalam AI, data sharding dan diedarkan latihan mempercepatkan latihan model. Prestasi dan skalabiliti sistem dapat ditingkatkan dengan ketara dengan memilih alat dan teknologi yang tepat dan menimbang perdagangan antara kelajuan penyimpanan dan pemprosesan.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.
