> 백엔드 개발 > 파이썬 튜토리얼 > AWS EC2에서 OpenCV, Flask, Gemini Vision 및 GitHub Actions CI/CD를 사용하여 AI 기반 실시간 객체 감지 구축

AWS EC2에서 OpenCV, Flask, Gemini Vision 및 GitHub Actions CI/CD를 사용하여 AI 기반 실시간 객체 감지 구축

Mary-Kate Olsen
풀어 주다: 2024-12-22 19:36:12
원래의
555명이 탐색했습니다.

소개:

눈을 가진 가상 비서처럼 라이브 비디오 피드를 실시간으로 분석하고, 장면을 해석하고, 환경에 대한 질문에 지능적으로 응답할 수 있는 시스템을 상상해 보세요. 이는 최신 "gemini-1.5-flash-latest" 모델을 활용하여 비디오 처리를 위한 OpenCV와 Google의 Gemini 비전 모델과 같은 최첨단 기술을 결합할 수 있는 잠재력입니다.

이 기사에서는 라이브 비디오 스트리밍과 AI 기반 장면 분석을 사용하여 통찰력 있는 상황 인식 응답을 제공하는 실시간 객체 감지 시스템을 구축하는 방법을 안내하겠습니다. AWS EC2에 애플리케이션을 배포하여 확장성과 실제 사용을 위한 기반을 마련하는 동시에 자동화된 CI/CD용 Github Actions를 사용하여 원활한 업데이트 파이프라인을 보장할 것입니다.

이 튜토리얼이 끝나면 배포 가능한 모든 기능을 갖춘 AI 기반 시스템을 갖추게 되며 다양한 사용 사례에 맞게 확장하고 사용자 정의할 수 있게 됩니다.


프로젝트 구조

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

로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

핵심 구성요소

  1. 실시간 영상 캡쳐(OpenCV) app.py의 WebcamCapture 클래스는 비디오 스트리밍을 처리합니다.
self.stream = cv2.VideoCapture(0)  # Open the default webcam
로그인 후 복사
로그인 후 복사
로그인 후 복사

이렇게 하면 효율적이고 스레드로부터 안전한 프레임 캡처 및 처리가 보장됩니다.

  1. AI 기반 객체 감지(Google Gemini) Gemini 모델을 사용하여 실시간 장면 이해를 위해 프레임을 분석합니다.
self.model = ChatGoogleGenerativeAI(model="gemini-1.5-flash-latest")
response = self.chain.invoke({"prompt": prompt, "image_base64": image_base64})

로그인 후 복사
로그인 후 복사
로그인 후 복사
  1. Flask 백엔드 Flask 애플리케이션은 비디오 스트리밍, AI 쿼리 및 시스템 상태 확인을 위한 엔드포인트를 제공합니다.

/video_feed: 라이브 비디오를 스트리밍합니다.

/process_query: 사용자 입력 및 비디오 프레임을 기반으로 AI 기반 분석을 처리합니다.

  1. 프런트엔드 UI

    index.html 파일은 시스템과 상호 작용하기 위한 반응형 웹 인터페이스를 제공합니다. 사용자 쿼리를 캡처하고 실시간 AI 응답을 표시합니다.

    전제 조건

  2. AWS 계정.

  3. 등록된 도메인 이름(예: example.com).

  4. Google Cloud 계정 또는 Open AI 계정

  5. 저장소에 구성된 GitHub 작업.

4. SSH 및 Linux 명령줄 도구에 대한 기본 지식.

애플리케이션 복제 및 배포

1단계: 리포지토리 복제, API 생성 및 Github에 애플리케이션 파일 푸시

아. 저장소 복제

$ git clone https://github.com/Abunuman/Real-Time-ODS.git
$ cd Real-Time-ODS
로그인 후 복사
로그인 후 복사
로그인 후 복사

베. API 키를 생성하고 .env 파일에 추가
나. 텍스트 편집기 왼쪽에 있는 옵션을 사용하여 수동으로 .env 파일을 만듭니다(저는 VScode를 사용했습니다)
또는
터미널에서 다음을 실행하세요.
$터치 .env

그런 다음 .env에 추가하세요

GOOGLE_API_KEY=your_google_api_key
OPENAI_API_KEY=your_openai_api_key
FLASK_DEBUG=True
로그인 후 복사
로그인 후 복사

ii. Google Cloud에 로그인하고 다음 단계에 따라 API 키를 생성하세요.

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

아. API 및 서비스 섹션으로 이동

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

ㄴ. 자격 증명을 클릭한 후 아래의 다른 단계를 따르세요

자격증명 만들기 > API Key 를 선택하면 API Key가 생성됩니다. API 키의 이름을 기억해 두십시오. 프로세스 중에 이름을 지정할 수도 있습니다.

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

생성된 API 키를 복사하고 .env 파일로 돌아가서 your_google_api_key를 방금 복사한 키로 바꾸세요.

ㄷ. Gemini API 활성화
Gemini API를 검색하고 활성화

를 클릭하세요.

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

API 키가 활성화된 Gemini API의 METRICS and Credentials 섹션에 있는지 확인하세요.

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

iii. .gitignore 파일을 생성하고 github에 푸시되지 않도록 파일에 .env를 추가합니다.

주의: 표준 관행은 비밀과 환경 변수가 대중에게 노출되지 않도록 하는 것입니다. 따라서 Github에 푸시하는 동안 추가된 파일을 무시하려면 .gitignore가 필요합니다.

베. 저장소로 푸시합니다.
나. 애플리케이션 이름으로 Github 저장소를 생성하고 아래 명령을 따라 github에 푸시하세요

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

로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

주의: 저장소 이름을 저장소 이름으로 변경하세요

2단계: Github Actions 환경 비밀 설정

프로젝트에 필요한 AWS IAM 사용자 암호와 환경 변수를 구성합니다.

AWS를 통해 프로젝트를 배포하려면 AWS 암호와 .env에 로컬로 추가된 환경 변수가 Github Actions 환경에 추가되어야 합니다. 이는 배포를 위한 특정 AWS 계정에 대한 액세스를 보장하고 배포 환경 내에서 필요한 환경 변수를 사용할 수 있는지 확인하기 위한 것입니다.

나. 저장소의 설정으로 이동하세요

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

ii. 비밀 및 변수 > 조치

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

iii. 아래와 같이 비밀과 변수를 추가하세요

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

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

3단계: AWS EC2 인스턴스 설정

나. EC2 인스턴스 시작

  • AWS Management Console을 사용하여 EC2 인스턴스(예: 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

  • 인스턴스 유형을 선택합니다(예: 무료 등급 사용자의 경우 t2.micro).

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

  • SSH 액세스를 위한 키 쌍(.pem 파일)을 생성하고 다운로드하세요.

새 키 쌍을 생성하거나 기존 키 쌍을 사용하세요.

새 키 쌍을 생성하는 경우 키 쌍 생성을 클릭하고 원하는 이름을 지정합니다.

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

키 쌍 유형을 RSA로 선택

.pem 파일 형식

키 쌍이 시스템에 자동으로 다운로드됩니다.

  • 보안 그룹 구성

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

다음 인바운드 규칙을 허용합니다:
나. HTTP(포트 80): 애플리케이션 제공을 위해.
ii. HTTPS(포트 443): 보안 액세스용.
iii. SSH(포트 22): 관리 액세스용.

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

  • 인스턴스 시작을 클릭하고 인스턴스가 완전히 시작되도록 하세요.

이제 상태가 "실행 중"으로 표시되면 인스턴스를 사용할 준비가 된 것입니다.

ii. SSH 액세스를 위한 키 쌍(.pem 키) 구성

Bash 터미널을 사용하는 Mac 북 사용자 또는 Linux 사용자의 경우 SSH 액세스용 키 쌍을 다음과 같이 구성하세요.

아. VScode 또는 Xcode를 사용하여 다운로드한 .pem 키를 엽니다

ㄴ. 터미널에서 루트 디렉터리(~)
에서 .ssh 디렉터리로 이동합니다.

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

로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

ㄷ. nano 또는 vim 텍스트 편집기를 사용하여 .ssh 디렉터리에 .pem 파일을 만듭니다. 이 튜토리얼에서는 nano를 사용할 것입니다.

nano가 설치되어 있지 않다면 설치하세요.

맥북 사용자의 경우

self.stream = cv2.VideoCapture(0)  # Open the default webcam
로그인 후 복사
로그인 후 복사
로그인 후 복사

Linux 사용자의 경우

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

로그인 후 복사
로그인 후 복사
로그인 후 복사

설치가 완료되면 nano를 사용하여 .ssh 디렉토리에 .pem 파일을 생성하세요.

생성할 파일이 .pem 파일의 정확한 이름을 가지고 있는지 확인하세요.

$ git clone https://github.com/Abunuman/Real-Time-ODS.git
$ cd Real-Time-ODS
로그인 후 복사
로그인 후 복사
로그인 후 복사

그런 다음 이미 열려 있는 .pem 파일을 복사하고 .ssh 디렉터리에 생성할 .pem을 붙여넣습니다.

Ctrl X, Y, Enter를 차례로 눌러 저장하세요.

디. .pem 파일 권한 변경

GOOGLE_API_KEY=your_google_api_key
OPENAI_API_KEY=your_openai_api_key
FLASK_DEBUG=True
로그인 후 복사
로그인 후 복사

iii. 인스턴스에 액세스 - EC2 인스턴스에 SSH로 연결:

인스턴스 ID를 클릭하세요. 인스턴스가 실행 상태가 되면 연결 옵션을 선택하세요

Connect 페이지에서 SSH 클라이언트로 이동하세요

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

그런 다음 페이지에서 다음과 같은 마지막 명령을 복사하세요.

$ 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
로그인 후 복사

이 내용을 터미널에 붙여넣고 Enter 키를 누르세요. 원활하게 연결되어야 합니다.

Windows 사용자의 경우

  • 윈도우 설정

Windows 컴퓨터에서 CMD를 엽니다

.pim 파일이 저장된 원하는 디렉토리를 찾으세요

이상적으로는 이 디렉터리에서 복사된 ssh 명령을 실행할 수 있고 EC2에 연결할 수 있어야 합니다. 하지만 ssh 명령을 실행할 때 보안 권한 오류가 발생하는 경우가 있습니다.

.pem 파일에 대한 권한을 변경해야 합니다.

아래 단계를 따르세요.

  1. .pem 파일 폴더를 찾아 파일을 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하세요

  2. 보안 탭으로 이동

  3. 고급 탭으로 이동

  4. 상속 비활성화를 클릭하세요

  5. 이 고급 옵션은 다른 사용자가 .pem 파일에 대한 모든 권한을 갖고 있음을 보여줍니다. 다른 모든 사용자의 권한 제거

  6. 사용자 목록에 아직 없는 경우 EC2에 연결하려는 사용자를 추가하세요.

  7. 이 사용자에 대한 모든 권한을 활성화합니다.

이러한 단계를 수행하면 오류가 발생하지 않는 것이 이상적입니다.

CMD 프롬프트에서 SSH 명령 실행

권한이 수정되면 프롬프트가 EC2에 성공적으로 연결됩니다

이제 단계가 성공적으로 완료되었으며 EC2 인스턴스의 Windows CMD에서 명령을 실행할 수 있습니다.

iv.종속성 설치 - 패키지 목록을 업데이트하고 필요한 패키지를 설치합니다.

SSH를 통해 EC2 인스턴스에 연결한 후 EC2에 종속성을 설치합니다.

연결된 터미널에서 다음 명령을 실행하세요.

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

로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

설치된 Python3 버전을 확인하고 3.12인지 확인하세요

self.stream = cv2.VideoCapture(0)  # Open the default webcam
로그인 후 복사
로그인 후 복사
로그인 후 복사

2단계: 애플리케이션 배포

애플리케이션 설정

app.py, index.html 및 요구사항.txt를 EC2 인스턴스로 전송:

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

로그인 후 복사
로그인 후 복사
로그인 후 복사

3단계: CI/CD용 GitHub Action 구성

저장소에 워크플로 파일을 생성하고 .github/workflows/main.yml 파일을 추가합니다.

$ git clone https://github.com/Abunuman/Real-Time-ODS.git
$ cd Real-Time-ODS
로그인 후 복사
로그인 후 복사
로그인 후 복사

결론

이 튜토리얼에서 우리는 라이브 비디오 캡처를 위한 OpenCV와 지능형 장면 분석을 위한 Google의 ChatGoogleGenerativeAI를 원활하게 통합하는 실시간 객체 감지 시스템을 구축하고 배포하기 위한 포괄적인 여정을 시작했습니다. 애플리케이션을 로컬로 구성하는 것부터 사용자 지정 도메인과 SSL을 사용하여 AWS EC2에 안전하게 배포하는 것까지, 아이디어를 기능적이고 확장 가능한 솔루션으로 전환하는 데 필요한 모든 필수 단계를 다뤘습니다.

이 프로젝트는 Flask, OpenCV, AI와 같은 최첨단 기술을 결합하여 실제 문제를 해결하는 동시에 클라우드 배포 모범 사례를 보장하는 힘을 강조합니다. 이러한 단계를 따르면 강력한 AI 기반 시스템을 배포했을 뿐만 아니라 확장성, 보안 및 효율적인 CI/CD 파이프라인도 보장할 수 있습니다.

위 내용은 AWS EC2에서 OpenCV, Flask, Gemini Vision 및 GitHub Actions CI/CD를 사용하여 AI 기반 실시간 객체 감지 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿