datnguyentien204 commited on
Commit
676db49
1 Parent(s): 4e16656

Upload 5 files

Browse files
Files changed (5) hide show
  1. Dockerfile +27 -0
  2. requirements.txt +3 -0
  3. yolov10_deploy.py +26 -0
  4. yolov10_gr.py +29 -0
  5. yolov10n.pt +3 -0
Dockerfile ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.10.13-slim
2
+
3
+
4
+ WORKDIR /app
5
+
6
+ COPY ./requirements.txt /app/requirements.txt
7
+
8
+ RUN apt-get update && apt-get install -y && rm -rf /var/lib/apt/lists/*
9
+ RUN pip3 install --no-cache-dir -r /app/requirements.txt
10
+
11
+ # User
12
+ RUN useradd -m -u 1000 user
13
+ USER user
14
+ ENV HOME /home/user
15
+ ENV PATH $HOME/.local/bin:$PATH
16
+
17
+ WORKDIR $HOME
18
+ RUN mkdir app
19
+ WORKDIR $HOME/app
20
+ COPY . $HOME/app
21
+
22
+ EXPOSE 8501
23
+ CMD streamlit run yolov10_deploy.py \
24
+ --server.headless true \
25
+ --server.enableCORS false \
26
+ --server.enableXsrfProtection false \
27
+ --server.fileWatcherType none
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ streamlit
2
+ gradio
3
+ ultralytics
yolov10_deploy.py ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from ultralytics import YOLO
3
+ from PIL import Image
4
+ import numpy as np
5
+
6
+ # Khởi tạo model YOLOv8s
7
+ model = YOLO("yolov10n.pt") # Đường dẫn tới model YOLOv10n đã huấn luyện sẵn
8
+
9
+ st.title("YOLOv10 Image Prediction")
10
+
11
+ # Tải tệp ảnh đầu vào
12
+ uploaded_file = st.file_uploader("Chọn một tệp ảnh", type=["jpg", "jpeg", "png"])
13
+
14
+ if uploaded_file is not None:
15
+ # Hiển thị ảnh đầu vào
16
+ image = Image.open(uploaded_file)
17
+ st.image(image, caption="Ảnh đầu vào", use_column_width=True)
18
+ # Nút "Predict" để chạy mô hình
19
+ if st.button("Predict"):
20
+ # Chạy dự đoán với YOLO
21
+ results = model.predict(source=np.array(image))
22
+ # Lấy ảnh kết quả từ mô hình
23
+ result_image = results[0].plot() # Vẽ bounding box lên ảnh gốc
24
+ # Hiển thị ảnh kết quả
25
+ st.image(result_image, caption="Kết quả dự đoán", use_column_width=True)
26
+
yolov10_gr.py ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from ultralytics import YOLO
3
+ from PIL import Image
4
+ import numpy as np
5
+
6
+ # Khởi tạo model YOLOv8s
7
+ model = YOLO("yolov10n.pt") # Đường dẫn tới model YOLOv10n đã huấn luyện sẵn
8
+
9
+ # Hàm xử lý dự đoán ảnh
10
+ def predict_image(image):
11
+ # Chuyển đổi ảnh đầu vào thành định dạng NumPy
12
+ np_image = np.array(image)
13
+ # Chạy dự đoán với YOLO
14
+ results = model.predict(source=np_image)
15
+ # Vẽ bounding boxes lên ảnh gốc
16
+ result_image = results[0].plot()
17
+ return result_image
18
+
19
+ # Tạo giao diện Gradio
20
+ iface = gr.Interface(
21
+ fn=predict_image, # Hàm xử lý đầu vào
22
+ inputs=gr.Image(type="pil"), # Tệp ảnh đầu vào
23
+ outputs=gr.Image(type="pil"), # Kết quả đầu ra là ảnh
24
+ title="YOLOv10 Image Prediction",
25
+ description="Tải ảnh lên và nhấn vào Predict để xem dự đoán với YOLOv10."
26
+ )
27
+
28
+ # Khởi chạy ứng dụng
29
+ iface.launch()
yolov10n.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:11287ed0735678e7ba1ac2a9b3098c049155b3fde123992e724c1264bcc16b6f
3
+ size 5860383