Update app.py
Browse files
app.py
CHANGED
|
@@ -18,7 +18,7 @@ from yolov5.models.experimental import attempt_load
|
|
| 18 |
from yolov5.utils.general import non_max_suppression
|
| 19 |
from yolov5.utils.augmentations import letterbox
|
| 20 |
|
| 21 |
-
|
| 22 |
# Example URLs for downloading images
|
| 23 |
file_urls = [
|
| 24 |
"https://www.dropbox.com/scl/fi/n3bs5xnl2kanqmwv483k3/1_jpg.rf.4a59a63d0a7339d280dd18ef3c2e675a.jpg?rlkey=4n9dnls1byb4wm54ycxzx3ovi&st=ue5xv8yx&dl=0",
|
|
@@ -40,7 +40,7 @@ def download_file(url, save_name):
|
|
| 40 |
# Download images
|
| 41 |
for i, url in enumerate(file_urls):
|
| 42 |
download_file(url, f"image_{i}.jpg")
|
| 43 |
-
|
| 44 |
|
| 45 |
# Load YOLOv5 model (placeholder)
|
| 46 |
model_path = "best.pt" # Path to your YOLOv5 model
|
|
@@ -48,12 +48,12 @@ device = torch.device("cuda" if torch.cuda.is_available() else "cpu") # Use GPU
|
|
| 48 |
model = attempt_load(model_path, device=device) # Placeholder for model loading
|
| 49 |
model.eval() # Set the model to evaluation mode
|
| 50 |
|
| 51 |
-
def preprocess_image(image_path):
|
| 52 |
-
|
| 53 |
-
img0 = cv2.imread(image_path)
|
| 54 |
-
print("in preprocess-0
|
| 55 |
-
|
| 56 |
-
img = letterbox(img0, 640, stride=32, auto=True)[0] # Resize and pad to 640x640
|
| 57 |
print("in preprocess-1 img.shape:",img.shape)
|
| 58 |
img = img.transpose(2, 0, 1)[::-1] # Convert BGR to RGB, to 3x416x416
|
| 59 |
img = np.ascontiguousarray(img)
|
|
@@ -97,9 +97,9 @@ def postprocess(pred, img0_shape, img):
|
|
| 97 |
return results
|
| 98 |
|
| 99 |
def detect_objects(image_path):
|
| 100 |
-
|
| 101 |
-
img, img0 = preprocess_image(image_path)
|
| 102 |
-
|
| 103 |
pred = infer(model, img)
|
| 104 |
results = postprocess(pred, img0.shape, img)
|
| 105 |
return results
|
|
@@ -117,6 +117,7 @@ def show_preds_image(filepath):
|
|
| 117 |
img_with_boxes = draw_bounding_boxes(img0, results)
|
| 118 |
return cv2.cvtColor(img_with_boxes, cv2.COLOR_BGR2RGB)
|
| 119 |
|
|
|
|
| 120 |
# Define Gradio components
|
| 121 |
input_component = gr.components.Image(type="filepath", label="Input Image")
|
| 122 |
output_component = gr.components.Image(type="numpy", label="Output Image")
|
|
@@ -170,16 +171,13 @@ def read_and_preprocess_dicom(file_path: str):
|
|
| 170 |
# PIL images into NumPy arrays
|
| 171 |
numpydata = np.asarray(image_pil)
|
| 172 |
#convert to cv2 format
|
| 173 |
-
numpydata = numpydata.reshape((numpydata.shape[0], numpydata.shape[1],
|
| 174 |
print("In preprocess dicom:", numpydata.shape)
|
| 175 |
#image = np.array(numpydata)[::-1].copy()
|
| 176 |
image = np.array(numpydata)[:,:,::-1].copy()
|
| 177 |
-
|
| 178 |
-
# <class 'numpy.ndarray'>
|
| 179 |
-
print(type(numpydata))
|
| 180 |
|
| 181 |
# shape
|
| 182 |
-
print("
|
| 183 |
|
| 184 |
# Collect metadata in dictionary format and convert to DataFrame
|
| 185 |
metadata_dict = {elem.name: str(elem.value) for elem in dicom_data.iterall() if elem.name != 'Pixel Data'}
|
|
@@ -236,4 +234,4 @@ def build_interface():
|
|
| 236 |
if __name__ == '__main__':
|
| 237 |
demo = build_interface()
|
| 238 |
demo.launch
|
| 239 |
-
|
|
|
|
| 18 |
from yolov5.utils.general import non_max_suppression
|
| 19 |
from yolov5.utils.augmentations import letterbox
|
| 20 |
|
| 21 |
+
'''
|
| 22 |
# Example URLs for downloading images
|
| 23 |
file_urls = [
|
| 24 |
"https://www.dropbox.com/scl/fi/n3bs5xnl2kanqmwv483k3/1_jpg.rf.4a59a63d0a7339d280dd18ef3c2e675a.jpg?rlkey=4n9dnls1byb4wm54ycxzx3ovi&st=ue5xv8yx&dl=0",
|
|
|
|
| 40 |
# Download images
|
| 41 |
for i, url in enumerate(file_urls):
|
| 42 |
download_file(url, f"image_{i}.jpg")
|
| 43 |
+
'''
|
| 44 |
|
| 45 |
# Load YOLOv5 model (placeholder)
|
| 46 |
model_path = "best.pt" # Path to your YOLOv5 model
|
|
|
|
| 48 |
model = attempt_load(model_path, device=device) # Placeholder for model loading
|
| 49 |
model.eval() # Set the model to evaluation mode
|
| 50 |
|
| 51 |
+
#def preprocess_image(image_path):
|
| 52 |
+
def preprocess_image(image):
|
| 53 |
+
#img0 = cv2.imread(image_path)
|
| 54 |
+
print("in preprocess-0 image.shape:",image.shape)
|
| 55 |
+
img = letterbox(image, 640, stride=32, auto=True)[0] # Resize and pad to 640x640
|
| 56 |
+
#img = letterbox(img0, 640, stride=32, auto=True)[0] # Resize and pad to 640x640
|
| 57 |
print("in preprocess-1 img.shape:",img.shape)
|
| 58 |
img = img.transpose(2, 0, 1)[::-1] # Convert BGR to RGB, to 3x416x416
|
| 59 |
img = np.ascontiguousarray(img)
|
|
|
|
| 97 |
return results
|
| 98 |
|
| 99 |
def detect_objects(image_path):
|
| 100 |
+
dicom_image, dicom_meta = read_and_preprocess_dicom(image_path)
|
| 101 |
+
#img, img0 = preprocess_image(image_path)
|
| 102 |
+
img, img0 = preprocess_image(dicom_image)
|
| 103 |
pred = infer(model, img)
|
| 104 |
results = postprocess(pred, img0.shape, img)
|
| 105 |
return results
|
|
|
|
| 117 |
img_with_boxes = draw_bounding_boxes(img0, results)
|
| 118 |
return cv2.cvtColor(img_with_boxes, cv2.COLOR_BGR2RGB)
|
| 119 |
|
| 120 |
+
'''
|
| 121 |
# Define Gradio components
|
| 122 |
input_component = gr.components.Image(type="filepath", label="Input Image")
|
| 123 |
output_component = gr.components.Image(type="numpy", label="Output Image")
|
|
|
|
| 171 |
# PIL images into NumPy arrays
|
| 172 |
numpydata = np.asarray(image_pil)
|
| 173 |
#convert to cv2 format
|
| 174 |
+
numpydata = numpydata.reshape((numpydata.shape[0], numpydata.shape[1], 3))
|
| 175 |
print("In preprocess dicom:", numpydata.shape)
|
| 176 |
#image = np.array(numpydata)[::-1].copy()
|
| 177 |
image = np.array(numpydata)[:,:,::-1].copy()
|
|
|
|
|
|
|
|
|
|
| 178 |
|
| 179 |
# shape
|
| 180 |
+
print("In preprocess dicom-image.shape:",image.shape)
|
| 181 |
|
| 182 |
# Collect metadata in dictionary format and convert to DataFrame
|
| 183 |
metadata_dict = {elem.name: str(elem.value) for elem in dicom_data.iterall() if elem.name != 'Pixel Data'}
|
|
|
|
| 234 |
if __name__ == '__main__':
|
| 235 |
demo = build_interface()
|
| 236 |
demo.launch
|
| 237 |
+
|