Streamlight를 사용하여 웹 기반의 실시간 컴퓨터 시각 응용 프로그램 구축
보이다✌️
Streamlit는 데이터 과학자, 기계 학습 연구원과 개발자에게 좋은 구조이고
streamlit-webrtc
실시간 영상(과 오디오) 흐름을 처리할 수 있도록 확장되었다.이는 서버에서 파이톤으로만 컴퓨터 시각 알고리즘을 실현할 수 있다는 뜻이다. 사용자는 이를 인터넷 애플리케이션으로 사용하고 인터넷 카메라나 스마트폰에서 실시간으로 동영상을 입력할 수 있다.
본고는 이 라이브러리를 어떻게 사용해서 이런 응용 프로그램을 개발하는지 설명하는 간단한 강좌이다.
선결 조건
설치streamlit
.
$ pip install streamlit
만약 Streamlight에 익숙하지 않다면, 나는 네가 좀 보라고 건의한다. its tutorial몇 분밖에 안 걸려요.
Streamlight webrtc 사용
필요한 패키지 설치
설치streamlit-webrtc
.본 강좌는 버전0.6.3
을 바탕으로 한다.API는 향후 릴리즈에서 변경될 수 있습니다.
$ pip install streamlit-webrtc
$ # pip install streamlit-webrtc==0.6.3 # Specify the exact version if necessary
동시에 설치opencv-python
.
$ pip install opencv-python
첫 번째 예
우선, streamlit_webrtc
의 사용자 정의 구성 요소를 페이지에 간단하게 놓고, 아래의 예로 삼자.
# simple_loopback.py
import streamlit as st
from streamlit_webrtc import webrtc_streamer
webrtc_streamer(key="example")
key
매개 변수는 다른 Streamlight 구성 요소와 다르므로 선택할 수 없습니다.고유 문자열을 설정해야 합니다.
그리고 streamlit run
명령을 사용하여 프로그램을 실행합니다. 아래와 같습니다.
$ streamlit run simple_loopback.py
브라우저에서 응용 프로그램을 연 후 시작 버튼을 클릭합니다.
그리고 인터넷 카메라에서 온 영상이 나온다.
(웹캠 및 마이크에 대한 액세스 권한이 필요할 수 있습니다.해당되는 경우 허용합니다.)
이것은 streamlit-webrtc
의 가장 간단한 예이다. 로컬 인터넷 카메라에서 영상을 포획하여 파이톤 프로세스에 보내고, 이를 앞쪽으로 보내서 미리 보기를 표시한다.
단순 프레임 필터
다음에 우리는 컴퓨터 시각 코드를 어떻게 이 과정에 주입하는지 보게 될 것이다.
다음은 OpenCV의 Canny 필터를 사용한 다음 예입니다.
# canny_filter.py
import cv2
from streamlit_webrtc import VideoTransformerBase, webrtc_streamer
class VideoTransformer(VideoTransformerBase):
def transform(self, frame):
img = frame.to_ndarray(format="bgr24")
img = cv2.cvtColor(cv2.Canny(img, 100, 200), cv2.COLOR_GRAY2BGR)
return img
webrtc_streamer(key="example", video_transformer_factory=VideoTransformer)
이 코드를 실행하고 결과를 보십시오.
$ streamlit run canny_filter.py
비디오 스트림에 실시간으로 적용되는 Canny 필터를 볼 수 있습니다.
webrtc_streamer
는 video_transformer_factory
파라미터를 받아들일 수 있다. 이것은 Callable
파라미터로 transform(self, frame)
방법이 있는 종류의 실례를 되돌려준다.
유형 주석을 좋아한다면 ABC (추상 기류) VideoTransformerBase
를 사용하면 이 인터페이스를 정의할 수 있습니다. 위의 예시와 같습니다.
어쨌든, 위의 예시와 같이, 당신은 transform()
방법에서 임의의 프레임 필터를 실현할 수 있으며, 이 방법은 영상 흐름의 모든 프레임을 변환할 수 있습니다.transform()
매개 변수frame
를 받아들이고numpy 수조img
를 되돌려줍니다.
매개 변수frame
는 av.VideoFrame
from av
package의 실례이고, 반환값img
은 출력 프레임 그림을 나타내는numpy 수조이다.
영상 흐름은 분기 라인에서 처리되며, 주 라인에서streamlit의 스크립트 실행 흐름과 무관하며, transform()
는 분기 라인에서 호출됩니다.
대화형 컨트롤
Streamlight를 사용하는 가장 큰 장점 중 하나는 슬라이더와 선택 단추와 같은 상호작용 컨트롤러입니다.streamlit-webrtc
그것들과 결합하여 사용하면 효과가 좋다.
다음 예제를 참조하십시오.
# interactive.py
import cv2
import streamlit as st
from streamlit_webrtc import VideoTransformerBase, webrtc_streamer
class VideoTransformer(VideoTransformerBase):
def __init__(self):
self.threshold1 = 100
self.threshold2 = 200
def transform(self, frame):
img = frame.to_ndarray(format="bgr24")
img = cv2.cvtColor(
cv2.Canny(img, self.threshold1, self.threshold2), cv2.COLOR_GRAY2BGR
)
return img
ctx = webrtc_streamer(key="example", video_transformer_factory=VideoTransformer)
if ctx.video_transformer:
ctx.video_transformer.threshold1 = st.slider("Threshold1", 0, 1000, 100)
ctx.video_transformer.threshold2 = st.slider("Threshold2", 0, 1000, 200)
그리고 이 코드를 실행합니다.
$ streamlit run interactive.py
이 예는 이전 예제에 기반하고 슬라이더를 사용하여 Canny 필터 매개변수를 제어하는 것으로 확장됩니다.ctx
에서 되돌아오는 webrtc_streamer()
대상은 여기에서 인용.video_transformer
속성에 사용됩니다.이 속성은 VideoTransformer
실례화video_transformer_factory
의 실례이다.
그리고 실례 속성transform()
과 ctx.video_transformer.threshold1
을 통해 슬라이더의 값을 ctx.video_transformer.threshold2
에 전달한다.
이것은 transform()
가 호출되었고 상기 비동기적인 방식이 다른 라인에서 운행되기 때문이다.
이 값의 전달이 라인이 안전한지 확인하십시오. 특히 복잡한 대상을 전달할 때 조심해야 합니다.
추가 예제 및 정보
이 글은 캔니 필터의 간단한 예시 하나만 보여 주지만,
너는 더욱 재미있는 어떤 종류의 컴퓨터 시각 응용 프로그램을 개발할 수 있다.
예를 들어, MobileNet SSD는
https://share.streamlit.io/whitphx/streamlit-webrtc-example/main/app.py(유선형 공유)
및
https://streamlit-webrtc-example.herokuapp.com/(Heroku자유계획).
https://github.com/whitphx/streamlit-webrtc-example는 이 애플리케이션의 저장소입니다.
다음 명령을 사용하여 로컬 환경에서 이 적용을 시도할 수도 있습니다.
$ pip install streamlit-webrtc opencv-python
$ streamlit run https://raw.githubusercontent.com/whitphx/streamlit-webrtc-example/main/app.py
앞에서 말한 바와 같이 streamlit-webrtc
's README.
This forum topic는 이 라이브러리에 대한 이해에 도움이 될 수 있습니다.
원격 서버에서 호스팅
우리는 원격 호스트에 응용 프로그램을 배치할 수 있도록localhost를 연구해 왔다.
이것은 streamlit
과 streamlit-webrtc
의 좋은 방법이다. 왜냐하면 사용자가 로컬 인터넷 카메라나 스마트폰으로 쉽게 원격으로 응용 프로그램을 시도할 수 있기 때문이다.
이 점을 하려면, 특히 사용하는 것에 주의해야 한다. streamlit-webrtc
네트워크 연결성
일부 네트워크 환경에서는 비디오 스트리밍이 작동하지 않습니다.
예를 들어, 일부 사무실 네트워크에서는 방화벽이 WebRTC 패킷을 폐기합니다.
HTTPS
streamlit-webrtc
API를 사용하여 로컬 웹캠에 액세스하는 방법은 안전하지 않은 환경에서는 작동하지 않습니다.
getUserMedia()
표시
A secure context is, in short, a page loaded using HTTPS or the file:/// URL scheme, or a page loaded from localhost.
따라서 원격 서버에서 어플리케이션을 호스팅할 때는 HTTPS를 통해 서비스를 제공해야 합니다.
가장 간단한 방법 중 하나는 Heroku와 같은 위탁 관리 서비스를 사용하는 것이다. 이것은 기본적으로 HTTPS 서비스를 제공한다.특히 streamlit
를 사용하는 응용 프로그램에 대해서는 This document를 선택할 수 있다.
위에 표시된 객체 검사 예제 응용 프로그램은 실제로 Heroku와 Streamlight 공유를 사용합니다.Streamlit Sharing에서 이 서비스의 이 프로그램의 배치 설정을 볼 수 있습니다.
만약 로컬 네트워크 내의 호스트에 응용 프로그램을 제공해야 한다면, 예를 들어nginx와 같은 역방향 프록시 소프트웨어를 사용할 수 있다.
원형 단계the repository는 간단하지만 유용한 옵션일 수 있습니다.
Reference
이 문제에 관하여(Streamlight를 사용하여 웹 기반의 실시간 컴퓨터 시각 응용 프로그램 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/whitphx/build-a-web-based-real-time-computer-vision-app-with-streamlit-57l2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ pip install streamlit
필요한 패키지 설치
설치
streamlit-webrtc
.본 강좌는 버전0.6.3
을 바탕으로 한다.API는 향후 릴리즈에서 변경될 수 있습니다.$ pip install streamlit-webrtc
$ # pip install streamlit-webrtc==0.6.3 # Specify the exact version if necessary
동시에 설치opencv-python
.$ pip install opencv-python
첫 번째 예
우선,
streamlit_webrtc
의 사용자 정의 구성 요소를 페이지에 간단하게 놓고, 아래의 예로 삼자.# simple_loopback.py
import streamlit as st
from streamlit_webrtc import webrtc_streamer
webrtc_streamer(key="example")
key
매개 변수는 다른 Streamlight 구성 요소와 다르므로 선택할 수 없습니다.고유 문자열을 설정해야 합니다.그리고
streamlit run
명령을 사용하여 프로그램을 실행합니다. 아래와 같습니다.$ streamlit run simple_loopback.py
브라우저에서 응용 프로그램을 연 후 시작 버튼을 클릭합니다.그리고 인터넷 카메라에서 온 영상이 나온다.
(웹캠 및 마이크에 대한 액세스 권한이 필요할 수 있습니다.해당되는 경우 허용합니다.)
이것은
streamlit-webrtc
의 가장 간단한 예이다. 로컬 인터넷 카메라에서 영상을 포획하여 파이톤 프로세스에 보내고, 이를 앞쪽으로 보내서 미리 보기를 표시한다.단순 프레임 필터
다음에 우리는 컴퓨터 시각 코드를 어떻게 이 과정에 주입하는지 보게 될 것이다.
다음은 OpenCV의 Canny 필터를 사용한 다음 예입니다.
# canny_filter.py
import cv2
from streamlit_webrtc import VideoTransformerBase, webrtc_streamer
class VideoTransformer(VideoTransformerBase):
def transform(self, frame):
img = frame.to_ndarray(format="bgr24")
img = cv2.cvtColor(cv2.Canny(img, 100, 200), cv2.COLOR_GRAY2BGR)
return img
webrtc_streamer(key="example", video_transformer_factory=VideoTransformer)
이 코드를 실행하고 결과를 보십시오.$ streamlit run canny_filter.py
비디오 스트림에 실시간으로 적용되는 Canny 필터를 볼 수 있습니다.webrtc_streamer
는 video_transformer_factory
파라미터를 받아들일 수 있다. 이것은 Callable
파라미터로 transform(self, frame)
방법이 있는 종류의 실례를 되돌려준다.유형 주석을 좋아한다면 ABC (추상 기류)
VideoTransformerBase
를 사용하면 이 인터페이스를 정의할 수 있습니다. 위의 예시와 같습니다.어쨌든, 위의 예시와 같이, 당신은
transform()
방법에서 임의의 프레임 필터를 실현할 수 있으며, 이 방법은 영상 흐름의 모든 프레임을 변환할 수 있습니다.transform()
매개 변수frame
를 받아들이고numpy 수조img
를 되돌려줍니다.매개 변수
frame
는 av.VideoFrame
from av
package의 실례이고, 반환값img
은 출력 프레임 그림을 나타내는numpy 수조이다.영상 흐름은 분기 라인에서 처리되며, 주 라인에서streamlit의 스크립트 실행 흐름과 무관하며,
transform()
는 분기 라인에서 호출됩니다.대화형 컨트롤
Streamlight를 사용하는 가장 큰 장점 중 하나는 슬라이더와 선택 단추와 같은 상호작용 컨트롤러입니다.
streamlit-webrtc
그것들과 결합하여 사용하면 효과가 좋다.다음 예제를 참조하십시오.
# interactive.py
import cv2
import streamlit as st
from streamlit_webrtc import VideoTransformerBase, webrtc_streamer
class VideoTransformer(VideoTransformerBase):
def __init__(self):
self.threshold1 = 100
self.threshold2 = 200
def transform(self, frame):
img = frame.to_ndarray(format="bgr24")
img = cv2.cvtColor(
cv2.Canny(img, self.threshold1, self.threshold2), cv2.COLOR_GRAY2BGR
)
return img
ctx = webrtc_streamer(key="example", video_transformer_factory=VideoTransformer)
if ctx.video_transformer:
ctx.video_transformer.threshold1 = st.slider("Threshold1", 0, 1000, 100)
ctx.video_transformer.threshold2 = st.slider("Threshold2", 0, 1000, 200)
그리고 이 코드를 실행합니다.$ streamlit run interactive.py
이 예는 이전 예제에 기반하고 슬라이더를 사용하여 Canny 필터 매개변수를 제어하는 것으로 확장됩니다.
ctx
에서 되돌아오는 webrtc_streamer()
대상은 여기에서 인용.video_transformer
속성에 사용됩니다.이 속성은 VideoTransformer
실례화video_transformer_factory
의 실례이다.그리고 실례 속성
transform()
과 ctx.video_transformer.threshold1
을 통해 슬라이더의 값을 ctx.video_transformer.threshold2
에 전달한다.이것은
transform()
가 호출되었고 상기 비동기적인 방식이 다른 라인에서 운행되기 때문이다.이 값의 전달이 라인이 안전한지 확인하십시오. 특히 복잡한 대상을 전달할 때 조심해야 합니다.
추가 예제 및 정보
이 글은 캔니 필터의 간단한 예시 하나만 보여 주지만,
너는 더욱 재미있는 어떤 종류의 컴퓨터 시각 응용 프로그램을 개발할 수 있다.
예를 들어, MobileNet SSD는
https://share.streamlit.io/whitphx/streamlit-webrtc-example/main/app.py(유선형 공유)
및
https://streamlit-webrtc-example.herokuapp.com/(Heroku자유계획).
https://github.com/whitphx/streamlit-webrtc-example는 이 애플리케이션의 저장소입니다.
다음 명령을 사용하여 로컬 환경에서 이 적용을 시도할 수도 있습니다.
$ pip install streamlit-webrtc opencv-python
$ streamlit run https://raw.githubusercontent.com/whitphx/streamlit-webrtc-example/main/app.py
앞에서 말한 바와 같이 streamlit-webrtc
's README.
This forum topic는 이 라이브러리에 대한 이해에 도움이 될 수 있습니다.
원격 서버에서 호스팅
우리는 원격 호스트에 응용 프로그램을 배치할 수 있도록localhost를 연구해 왔다.
이것은 streamlit
과 streamlit-webrtc
의 좋은 방법이다. 왜냐하면 사용자가 로컬 인터넷 카메라나 스마트폰으로 쉽게 원격으로 응용 프로그램을 시도할 수 있기 때문이다.
이 점을 하려면, 특히 사용하는 것에 주의해야 한다. streamlit-webrtc
네트워크 연결성
일부 네트워크 환경에서는 비디오 스트리밍이 작동하지 않습니다.
예를 들어, 일부 사무실 네트워크에서는 방화벽이 WebRTC 패킷을 폐기합니다.
HTTPS
streamlit-webrtc
API를 사용하여 로컬 웹캠에 액세스하는 방법은 안전하지 않은 환경에서는 작동하지 않습니다.
getUserMedia()
표시
A secure context is, in short, a page loaded using HTTPS or the file:/// URL scheme, or a page loaded from localhost.
따라서 원격 서버에서 어플리케이션을 호스팅할 때는 HTTPS를 통해 서비스를 제공해야 합니다.
가장 간단한 방법 중 하나는 Heroku와 같은 위탁 관리 서비스를 사용하는 것이다. 이것은 기본적으로 HTTPS 서비스를 제공한다.특히 streamlit
를 사용하는 응용 프로그램에 대해서는 This document를 선택할 수 있다.
위에 표시된 객체 검사 예제 응용 프로그램은 실제로 Heroku와 Streamlight 공유를 사용합니다.Streamlit Sharing에서 이 서비스의 이 프로그램의 배치 설정을 볼 수 있습니다.
만약 로컬 네트워크 내의 호스트에 응용 프로그램을 제공해야 한다면, 예를 들어nginx와 같은 역방향 프록시 소프트웨어를 사용할 수 있다.
원형 단계the repository는 간단하지만 유용한 옵션일 수 있습니다.
Reference
이 문제에 관하여(Streamlight를 사용하여 웹 기반의 실시간 컴퓨터 시각 응용 프로그램 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/whitphx/build-a-web-based-real-time-computer-vision-app-with-streamlit-57l2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ pip install streamlit-webrtc opencv-python
$ streamlit run https://raw.githubusercontent.com/whitphx/streamlit-webrtc-example/main/app.py
우리는 원격 호스트에 응용 프로그램을 배치할 수 있도록localhost를 연구해 왔다.
이것은
streamlit
과 streamlit-webrtc
의 좋은 방법이다. 왜냐하면 사용자가 로컬 인터넷 카메라나 스마트폰으로 쉽게 원격으로 응용 프로그램을 시도할 수 있기 때문이다.이 점을 하려면, 특히 사용하는 것에 주의해야 한다.
streamlit-webrtc
네트워크 연결성
일부 네트워크 환경에서는 비디오 스트리밍이 작동하지 않습니다.
예를 들어, 일부 사무실 네트워크에서는 방화벽이 WebRTC 패킷을 폐기합니다.
HTTPS
streamlit-webrtc
API를 사용하여 로컬 웹캠에 액세스하는 방법은 안전하지 않은 환경에서는 작동하지 않습니다.getUserMedia()
표시A secure context is, in short, a page loaded using HTTPS or the file:/// URL scheme, or a page loaded from localhost.
따라서 원격 서버에서 어플리케이션을 호스팅할 때는 HTTPS를 통해 서비스를 제공해야 합니다.
가장 간단한 방법 중 하나는 Heroku와 같은 위탁 관리 서비스를 사용하는 것이다. 이것은 기본적으로 HTTPS 서비스를 제공한다.특히
streamlit
를 사용하는 응용 프로그램에 대해서는 This document를 선택할 수 있다.위에 표시된 객체 검사 예제 응용 프로그램은 실제로 Heroku와 Streamlight 공유를 사용합니다.Streamlit Sharing에서 이 서비스의 이 프로그램의 배치 설정을 볼 수 있습니다.
만약 로컬 네트워크 내의 호스트에 응용 프로그램을 제공해야 한다면, 예를 들어nginx와 같은 역방향 프록시 소프트웨어를 사용할 수 있다.
원형 단계the repository는 간단하지만 유용한 옵션일 수 있습니다.
Reference
이 문제에 관하여(Streamlight를 사용하여 웹 기반의 실시간 컴퓨터 시각 응용 프로그램 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/whitphx/build-a-web-based-real-time-computer-vision-app-with-streamlit-57l2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)