눈을 가진 가상 비서처럼 라이브 비디오 피드를 실시간으로 분석하고, 장면을 해석하고, 환경에 대한 질문에 지능적으로 응답할 수 있는 시스템을 상상해 보세요. 이는 최신 "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.)
self.stream = cv2.VideoCapture(0) # Open the default webcam
이렇게 하면 효율적이고 스레드로부터 안전한 프레임 캡처 및 처리가 보장됩니다.
self.model = ChatGoogleGenerativeAI(model="gemini-1.5-flash-latest") response = self.chain.invoke({"prompt": prompt, "image_base64": image_base64})
/video_feed: 라이브 비디오를 스트리밍합니다.
/process_query: 사용자 입력 및 비디오 프레임을 기반으로 AI 기반 분석을 처리합니다.
프런트엔드 UI
AWS 계정.
등록된 도메인 이름(예: example.com).
Google Cloud 계정 또는 Open AI 계정
저장소에 구성된 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 키를 생성하세요.
아. API 및 서비스 섹션으로 이동
ㄴ. 자격 증명을 클릭한 후 아래의 다른 단계를 따르세요
자격증명 만들기 > API Key 를 선택하면 API Key가 생성됩니다. API 키의 이름을 기억해 두십시오. 프로세스 중에 이름을 지정할 수도 있습니다.
생성된 API 키를 복사하고 .env 파일로 돌아가서 your_google_api_key를 방금 복사한 키로 바꾸세요.
ㄷ. Gemini API 활성화
Gemini API를 검색하고 활성화
API 키가 활성화된 Gemini API의 METRICS and Credentials 섹션에 있는지 확인하세요.
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.)
주의: 저장소 이름을 저장소 이름으로 변경하세요
프로젝트에 필요한 AWS IAM 사용자 암호와 환경 변수를 구성합니다.
AWS를 통해 프로젝트를 배포하려면 AWS 암호와 .env에 로컬로 추가된 환경 변수가 Github Actions 환경에 추가되어야 합니다. 이는 배포를 위한 특정 AWS 계정에 대한 액세스를 보장하고 배포 환경 내에서 필요한 환경 변수를 사용할 수 있는지 확인하기 위한 것입니다.
나. 저장소의 설정으로 이동하세요
ii. 비밀 및 변수 > 조치
iii. 아래와 같이 비밀과 변수를 추가하세요
![비밀](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7t6vyolkj2jyq85oswh7.png
나. EC2 인스턴스 시작
새 키 쌍을 생성하거나 기존 키 쌍을 사용하세요.
새 키 쌍을 생성하는 경우 키 쌍 생성을 클릭하고 원하는 이름을 지정합니다.
키 쌍 유형을 RSA로 선택
.pem 파일 형식
키 쌍이 시스템에 자동으로 다운로드됩니다.
다음 인바운드 규칙을 허용합니다:
나. HTTP(포트 80): 애플리케이션 제공을 위해.
ii. HTTPS(포트 443): 보안 액세스용.
iii. SSH(포트 22): 관리 액세스용.
이제 상태가 "실행 중"으로 표시되면 인스턴스를 사용할 준비가 된 것입니다.
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 클라이언트로 이동하세요
그런 다음 페이지에서 다음과 같은 마지막 명령을 복사하세요.
$ 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 파일에 대한 권한을 변경해야 합니다.
아래 단계를 따르세요.
.pem 파일 폴더를 찾아 파일을 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하세요
보안 탭으로 이동
고급 탭으로 이동
상속 비활성화를 클릭하세요
이 고급 옵션은 다른 사용자가 .pem 파일에 대한 모든 권한을 갖고 있음을 보여줍니다. 다른 모든 사용자의 권한 제거
사용자 목록에 아직 없는 경우 EC2에 연결하려는 사용자를 추가하세요.
이 사용자에 대한 모든 권한을 활성화합니다.
이러한 단계를 수행하면 오류가 발생하지 않는 것이 이상적입니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!