目錄
文章
分類
標籤
AI ai android Bitbucket C# C++ Certbot ChatGPT Cloudflare Code Runner CPE CPU排程 cron Daphne Django DNS設定 Docker fused-location Git GPT HTML HTTPS kotlin Line Bot Linux location-app Mac macOS MySQL n8n Next.js Nginx OpenAI permissions Python Python Django Pytorch pytorch PyTorch rclone React Redis Replit SSL streamlit Swap Ubuntu Unity Vector VM設定 VSCode WebSocket WordPress Wordpress wordpress-備份 yolo 中位數 伺服器設定 修復 最佳住址 利率 前端 動態生成 即時通訊 卷積神經網路 場景切換 學習 安全性 專案管理 帳號建立 影像分類 後台 性能 惡意軟體 成績查詢 投資 排序 操作系統 效率 教學 殖利率 深度學習 演算法 版本控制 物件偵測 神經網絡 程式解題 程式設計 競程 系統管理 終端機 統計 網頁框架 股票 自動化 財務 資料共享 資料結構 距離計算 路由 遊戲開發 選單 部署 開發 開發技巧 開發環境 開發者 雲端備份 靜態文件
目錄
986 字
5 分鐘
Streamlit 結合 yolo 辨識圖片
許子恆老師的上課筆記
建立一個資料夾,我這邊取week13。
在week13資料夾中下指令。
他會自動建立基本的檔案,新版的python會使用pyproject.toml管理套件的版本。
1uv init1uv init1[project]2name = "week13"3version = "0.1.0"4description = "Add your description here"5readme = "README.md"6requires-python = ">=3.13"7dependencies = [8 "altair==4.0",9 "matplotlib>=3.10.7",10 "pillow>=12.0.0",11 "streamlit>=1.51.0",12 "torch>=2.9.1",13 "torchvision>=0.24.1",14 "ultralytics>=8.3.233",15]1[project]2name = "week13"3version = "0.1.0"4description = "Add your description here"5readme = "README.md"6requires-python = ">=3.13"7dependencies = [8 "altair==4.0",9 "matplotlib>=3.10.7",10 "pillow>=12.0.0",11 "streamlit>=1.51.0",12 "torch>=2.9.1",13 "torchvision>=0.24.1",14 "ultralytics>=8.3.233",15]以及建立虛擬環境
1uv venv1uv venv接著進入虛擬環境(Mac Book)
1source .venv/bin/activate1source .venv/bin/activate安裝相關套件
1uv add streamlit2uv add torch torchvision3uv add matplotlib4uv add ultralytics5uv add pillow6uv add altair==4.01uv add streamlit2uv add torch torchvision3uv add matplotlib4uv add ultralytics5uv add pillow6uv add altair==4.0到這個網址下載訓練好的模型
https://github.com/fullmakeralchemist/teststream/tree/master
在week13資料夾建立一個weights資料夾。
接著把剛剛github裡面的best.pt檔案放到week13的weights資料夾中。
並建立一個app.py
1# 匯入所需的函式庫2import PIL3import streamlit as st4from ultralytics import YOLO5<div></div>6# 替換成您的權重檔案的相對路徑7model_path = 'weights/best.pt'8<div></div>9# 設定頁面佈局10st.set_page_config(11 page_title="物件偵測", # 設定頁面標題12 page_icon="🤖", # 設定頁面圖示13 layout="wide", # 設定佈局為寬版14 initial_sidebar_state="expanded", # 預設展開側邊欄15)16<div></div>17# 建立側邊欄18with st.sidebar:19 st.header("圖片配置") # 在側邊欄新增標題20 # 在側邊欄新增檔案上傳器,用於選擇圖片21 source_img = st.file_uploader(22 "上傳圖片...", type=("jpg", "jpeg", "png", 'bmp', 'webp'))23<div></div>24 # 模型選項25 confidence = float(st.slider(26 "選擇模型信心閾值", 25, 100, 40)) / 10027<div></div>28# 建立主頁面標題29st.title("物件偵測")30st.caption('上傳一張帶有這些:blue[手勢訊號]的照片::+1:, :hand:, :i_love_you_hand_sign:, 和 :spock-hand:.')31st.caption('然後點擊:blue[偵測物件]按鈕並查看結果。')32# 在主頁面建立兩個欄位33col1, col2 = st.columns(2)34<div></div>35# 如果圖片已上傳,則將圖片新增到第一個欄位36with col1:37 if source_img:38 # 開啟上傳的圖片39 uploaded_image = PIL.Image.open(source_img)40 # 將上傳的圖片新增到頁面,並附上標題41 st.image(source_img,42 caption="上傳的圖片",43 use_column_width=True44 )45<div></div>46try:47 model = YOLO(model_path)48except Exception as ex:49 st.error(50 f"無法載入模型。請檢查指定的路徑:{model_path}")51 st.error(ex)52<div></div>53if st.sidebar.button('偵測物件'):54 res = model.predict(uploaded_image,55 conf=confidence56 )57 boxes = res[0].boxes58 res_plotted = res[0].plot()[:, :, ::-1]59 with col2:60 st.image(res_plotted,61 caption='偵測結果圖片',62 use_column_width=True63 )64 try:65 with st.expander("偵測結果"):66 for box in boxes:67 st.write(box.xywh)68 except Exception as ex:69 st.write("尚未上傳圖片!")1# 匯入所需的函式庫2import PIL3import streamlit as st4from ultralytics import YOLO5
6# 替換成您的權重檔案的相對路徑7model_path = 'weights/best.pt'8
9# 設定頁面佈局10st.set_page_config(11 page_title="物件偵測", # 設定頁面標題12 page_icon="🤖", # 設定頁面圖示13 layout="wide", # 設定佈局為寬版14 initial_sidebar_state="expanded", # 預設展開側邊欄15)16
17# 建立側邊欄18with st.sidebar:19 st.header("圖片配置") # 在側邊欄新增標題20 # 在側邊欄新增檔案上傳器,用於選擇圖片21 source_img = st.file_uploader(22 "上傳圖片...", type=("jpg", "jpeg", "png", 'bmp', 'webp'))23
24 # 模型選項25 confidence = float(st.slider(26 "選擇模型信心閾值", 25, 100, 40)) / 10027
28# 建立主頁面標題29st.title("物件偵測")30st.caption('上傳一張帶有這些:blue[手勢訊號]的照片::+1:, :hand:, :i_love_you_hand_sign:, 和 :spock-hand:.')31st.caption('然後點擊:blue[偵測物件]按鈕並查看結果。')32# 在主頁面建立兩個欄位33col1, col2 = st.columns(2)34
35# 如果圖片已上傳,則將圖片新增到第一個欄位36with col1:37 if source_img:38 # 開啟上傳的圖片39 uploaded_image = PIL.Image.open(source_img)40 # 將上傳的圖片新增到頁面,並附上標題41 st.image(source_img,42 caption="上傳的圖片",43 use_column_width=True44 )45
46try:47 model = YOLO(model_path)48except Exception as ex:49 st.error(50 f"無法載入模型。請檢查指定的路徑:{model_path}")51 st.error(ex)52
53if st.sidebar.button('偵測物件'):54 res = model.predict(uploaded_image,55 conf=confidence56 )57 boxes = res[0].boxes58 res_plotted = res[0].plot()[:, :, ::-1]59 with col2:60 st.image(res_plotted,61 caption='偵測結果圖片',62 use_column_width=True63 )64 try:65 with st.expander("偵測結果"):66 for box in boxes:67 st.write(box.xywh)68 except Exception as ex:69 st.write("尚未上傳圖片!")執行 streamlit run app.py

上傳圖檔,按下偵測物件

部分資訊可能已經過時
目錄
文章
分類
標籤
AI ai android Bitbucket C# C++ Certbot ChatGPT Cloudflare Code Runner CPE CPU排程 cron Daphne Django DNS設定 Docker fused-location Git GPT HTML HTTPS kotlin Line Bot Linux location-app Mac macOS MySQL n8n Next.js Nginx OpenAI permissions Python Python Django Pytorch pytorch PyTorch rclone React Redis Replit SSL streamlit Swap Ubuntu Unity Vector VM設定 VSCode WebSocket WordPress Wordpress wordpress-備份 yolo 中位數 伺服器設定 修復 最佳住址 利率 前端 動態生成 即時通訊 卷積神經網路 場景切換 學習 安全性 專案管理 帳號建立 影像分類 後台 性能 惡意軟體 成績查詢 投資 排序 操作系統 效率 教學 殖利率 深度學習 演算法 版本控制 物件偵測 神經網絡 程式解題 程式設計 競程 系統管理 終端機 統計 網頁框架 股票 自動化 財務 資料共享 資料結構 距離計算 路由 遊戲開發 選單 部署 開發 開發技巧 開發環境 開發者 雲端備份 靜態文件
目錄