Spaces:
Runtime error
Runtime error
Alex Chan commited on
Commit ·
d3fbb91
1
Parent(s): 999c5c9
cleaned up scripts
Browse files- Code/Inference.py +2 -80
- app.py +1 -1
Code/Inference.py
CHANGED
|
@@ -120,7 +120,6 @@ def DLCInference(Crop,dlc_liveObj,CropSize):
|
|
| 120 |
|
| 121 |
def VisualizeAll(frame, box, DLCPredict2D,MeanConfidence,ScaleBBox, imsize):
|
| 122 |
"""Visualize all stuff"""
|
| 123 |
-
# colourList = [(255,255,0),(255,0 ,255),(128,0,128),(203,192,255),(0, 255, 255),(255, 0 , 0 ),(63,133,205),(0,255,0),(0,0,255)]
|
| 124 |
colourList = [(0,255,255),(255,0 ,255),(128,0,128),(255,192,203),(255, 255, 0),(0, 0 , 255 ),(205,133,63),(0,255,0),(255,0,0)]
|
| 125 |
|
| 126 |
##Order: Lshoulder, Rshoulder, topKeel,botKeel,Tail,Beak,Nose,Leye,Reye
|
|
@@ -131,23 +130,8 @@ def VisualizeAll(frame, box, DLCPredict2D,MeanConfidence,ScaleBBox, imsize):
|
|
| 131 |
cv2.circle(frame,roundPoint,1,colourList[x], 5)
|
| 132 |
PlotPoints.append(roundPoint)
|
| 133 |
|
| 134 |
-
|
| 135 |
-
##change box to XYWH to scale down
|
| 136 |
-
# bbox = [box[0],box[1],box[2]-box[0],box[3]-box[1]]
|
| 137 |
-
# ScaleWidth = (bbox[2]/ScaleBBox)/2
|
| 138 |
-
# ScaleHeight = (bbox[3]/ScaleBBox)/2
|
| 139 |
-
# ###based on ScaleBBox, scale back down bounding box for plotting
|
| 140 |
-
# x1 = round(bbox[0]+ScaleWidth) if round(bbox[0]+ScaleWidth)>0 else 0
|
| 141 |
-
# y1 = round(bbox[1]+ScaleHeight)if round(bbox[1]+ScaleHeight)>0 else 0
|
| 142 |
-
# x2 = round(bbox[0]+bbox[2]-ScaleWidth) if round(bbox[0]+bbox[2]-ScaleWidth) < imsize[0] else imsize[0]
|
| 143 |
-
# y2 = round(bbox[1]+bbox[3]-ScaleHeight)if round(bbox[1]+bbox[3]-ScaleHeight) < imsize[1] else imsize[1]
|
| 144 |
-
# box = [x1,y1,x2,y2]
|
| 145 |
cv2.rectangle(frame,(round(box[0]),round(box[1])),(round(box[2]),round(box[3])),[0,0,255],3)
|
| 146 |
|
| 147 |
-
#plot mean confidence
|
| 148 |
-
# import ipdb;ipdb.set_trace()
|
| 149 |
-
# font = cv2.FONT_HERSHEY_SIMPLEX
|
| 150 |
-
# cv2.putText(frame,str(round(MeanConfidence,3)),(round(box[0]),round(box[1])),font,2,[255,0,0],2)
|
| 151 |
|
| 152 |
return frame, PlotPoints
|
| 153 |
|
|
@@ -201,75 +185,13 @@ def Inference(frame,predictor,dlc_liveObj,ScaleBBox=1,Dilate=5,DLCThreshold=0.3)
|
|
| 201 |
BirdCrop = Crop[y1:y2,x1:x2] #bbox is XYWH
|
| 202 |
|
| 203 |
DLCPredict2D= DLCInference(BirdCrop,dlc_liveObj,CropSize)
|
| 204 |
-
MeanConfidence = DLCPredict2D[:,2].mean()
|
| 205 |
|
| 206 |
-
|
| 207 |
-
bbox.append(MeanConfidence)
|
| 208 |
-
frame, PlotPoints = VisualizeAll(frame, bbox, DLCPredict2D,MeanConfidence,ScaleBBox,imsize)
|
| 209 |
|
| 210 |
if BirdBBox.shape[0] == 0:
|
| 211 |
DLCPredict2D= DLCInference(InferFrame,dlc_liveObj,CropSize)
|
| 212 |
-
MeanConfidence = DLCPredict2D[:,2].mean()
|
| 213 |
bbox = [0,0,0,0]
|
| 214 |
-
|
| 215 |
-
frame, PlotPoints = VisualizeAll(frame, bbox, DLCPredict2D,MeanConfidence,ScaleBBox,imsize)
|
| 216 |
|
| 217 |
return frame
|
| 218 |
|
| 219 |
-
|
| 220 |
-
|
| 221 |
-
|
| 222 |
-
if __name__ == "__main__":
|
| 223 |
-
# VidPath = "/media/alexchan/Extreme SSD/WorkDir/Pigeon3DTrack/ManualClickTrials/Videos/Cam1_C0008.MP4_Trimmed.mp4"
|
| 224 |
-
VidPath = "/media/alexchan/Extreme SSD/SampleDatasets/PigeonsEverywhere/2022-12-01_Pilot_bottom_control.mp4"
|
| 225 |
-
|
| 226 |
-
OutDir = "/media/alexchan/Extreme SSD/WorkDir/Pigeon3DTrack/OutdoorTracking/Final2D"
|
| 227 |
-
|
| 228 |
-
ExportModelPath = "/media/alexchan/Extreme SSD/WorkDir/Pigeon3DTrack/Weights/DLC_Weights/N6000_DLC_Mask/exported-models/DLC_DLC_Segmented_resnet_50_iteration-0_shuffle-1"
|
| 229 |
-
# ExportModelPath = "/media/alexchan/Extreme SSD/WorkDir/Pigeon3DTrack/Weights/DLC_Weights/DLC_PigeonSuperModel_imgaug_efficientnet-b0_iteration-0_shuffle-2"
|
| 230 |
-
|
| 231 |
-
if not os.path.isdir(ExportModelPath):
|
| 232 |
-
#need to export model first
|
| 233 |
-
# DLC_Config = "/media/alexchan/Extreme SSD/SampleDatasets/ImageTrainingData/N5000/DLC_Seg_Aug/config.yaml"
|
| 234 |
-
|
| 235 |
-
dlc.export_model(DLC_Config)
|
| 236 |
-
else:
|
| 237 |
-
print("model already exported!")
|
| 238 |
-
|
| 239 |
-
CropSize = (320,320)
|
| 240 |
-
# WeightPath = "/home/alexchan/Documents/Pigeon3DTrack/Data/YOLO_Weights/yolov8m.pt"
|
| 241 |
-
# VidPath= "/media/alexchan/Extreme SSD/PigeonOutdoors/28032023/Cam1_C0004.MP4"
|
| 242 |
-
# import ipdb;ipdb.set_trace()
|
| 243 |
-
# YOLOModel = YOLO(YOLOPath)
|
| 244 |
-
device = "cuda"
|
| 245 |
-
# device = "cpu"
|
| 246 |
-
|
| 247 |
-
###Detectron:
|
| 248 |
-
cfg = get_cfg()
|
| 249 |
-
# add project-specific config (e.g., TensorMask) here if you're not running a model in detectron2's core library
|
| 250 |
-
cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_101_FPN_3x.yaml"))
|
| 251 |
-
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.7 # set threshold for this model
|
| 252 |
-
# Find a model from detectron2's model zoo. You can use the https://dl.fbaipublicfiles... url as well
|
| 253 |
-
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_R_101_FPN_3x.yaml")
|
| 254 |
-
predictor = DefaultPredictor(cfg)
|
| 255 |
-
|
| 256 |
-
|
| 257 |
-
##DLC:
|
| 258 |
-
dlc_proc = Processor()
|
| 259 |
-
dlc_liveObj = DLCLive(ExportModelPath, processor=dlc_proc)
|
| 260 |
-
|
| 261 |
-
RunInference(predictor,dlc_liveObj, device,OutDir,
|
| 262 |
-
VidPath,CropSize,startFrame=0,
|
| 263 |
-
TotalFrames =900, ScaleBBox=1.3,
|
| 264 |
-
DLCThreshold = 0, Dilate=5)
|
| 265 |
-
|
| 266 |
-
|
| 267 |
-
|
| 268 |
-
###DLC tests
|
| 269 |
-
# DLC_Config = "/media/alexchan/Extreme SSD/SampleDatasets/ImageTrainingData/N5000/DLC/config.yaml"
|
| 270 |
-
# Video = "/media/alexchan/Extreme SSD/SampleDatasets/ImageTrainingData/N5000/DLC/videos/Video1.mp4"
|
| 271 |
-
# dlc.analyze_videos(DLC_Config,[Video])
|
| 272 |
-
# dlc.export_model(DLC_Config)
|
| 273 |
-
|
| 274 |
-
# import pandas as pd
|
| 275 |
-
# pd.read_hdf("/media/alexchan/Extreme SSD/SampleDatasets/ImageTrainingData/N5000/DLC/videos/Video1DLC_resnet50_DLC20230401-173058shuffle1_3000.h5")
|
|
|
|
| 120 |
|
| 121 |
def VisualizeAll(frame, box, DLCPredict2D,MeanConfidence,ScaleBBox, imsize):
|
| 122 |
"""Visualize all stuff"""
|
|
|
|
| 123 |
colourList = [(0,255,255),(255,0 ,255),(128,0,128),(255,192,203),(255, 255, 0),(0, 0 , 255 ),(205,133,63),(0,255,0),(255,0,0)]
|
| 124 |
|
| 125 |
##Order: Lshoulder, Rshoulder, topKeel,botKeel,Tail,Beak,Nose,Leye,Reye
|
|
|
|
| 130 |
cv2.circle(frame,roundPoint,1,colourList[x], 5)
|
| 131 |
PlotPoints.append(roundPoint)
|
| 132 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 133 |
cv2.rectangle(frame,(round(box[0]),round(box[1])),(round(box[2]),round(box[3])),[0,0,255],3)
|
| 134 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 135 |
|
| 136 |
return frame, PlotPoints
|
| 137 |
|
|
|
|
| 185 |
BirdCrop = Crop[y1:y2,x1:x2] #bbox is XYWH
|
| 186 |
|
| 187 |
DLCPredict2D= DLCInference(BirdCrop,dlc_liveObj,CropSize)
|
|
|
|
| 188 |
|
| 189 |
+
frame, PlotPoints = VisualizeAll(frame, bbox, DLCPredict2D,MeanConfidence,ScaleBBox,imsize)
|
|
|
|
|
|
|
| 190 |
|
| 191 |
if BirdBBox.shape[0] == 0:
|
| 192 |
DLCPredict2D= DLCInference(InferFrame,dlc_liveObj,CropSize)
|
|
|
|
| 193 |
bbox = [0,0,0,0]
|
| 194 |
+
frame, PlotPoints = VisualizeAll(frame, bbox, DLCPredict2D,MeanConfidence,ScaleBBox,imsize)
|
|
|
|
| 195 |
|
| 196 |
return frame
|
| 197 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
import sys
|
| 2 |
import subprocess
|
| 3 |
-
|
| 4 |
|
| 5 |
import numpy as np
|
| 6 |
import gradio as gr
|
|
|
|
| 1 |
import sys
|
| 2 |
import subprocess
|
| 3 |
+
subprocess.check_call([sys.executable, '-m', 'pip', 'install','git+https://github.com/facebookresearch/detectron2.git'])
|
| 4 |
|
| 5 |
import numpy as np
|
| 6 |
import gradio as gr
|