cmckinle commited on
Commit
57e8402
·
verified ·
1 Parent(s): 91e34e4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -36
app.py CHANGED
@@ -12,12 +12,6 @@ import numpy as np
12
  import urllib.request
13
  import base64
14
  from io import BytesIO
15
- import logging
16
- from tqdm import tqdm
17
-
18
- # Set up logging
19
- logging.basicConfig(filename='app.log', level=logging.DEBUG,
20
- format='%(asctime)s - %(levelname)s - %(message)s')
21
 
22
  MODEL_NAME = "cmckinle/sdxl-flux-detector"
23
  LABELS = ["AI", "Real"]
@@ -47,34 +41,10 @@ class AIDetector:
47
 
48
  return label, results
49
 
50
- def custom_upload_handler(file):
51
- try:
52
- logging.info(f"Starting upload of file: {file.name}")
53
- file_size = os.path.getsize(file.name)
54
- logging.info(f"File size: {file_size} bytes")
55
-
56
- # Read and process the file in chunks
57
- chunk_size = 1024 * 1024 # 1MB chunks
58
- total_chunks = file_size // chunk_size + (1 if file_size % chunk_size > 0 else 0)
59
-
60
- with open(file.name, 'rb') as f:
61
- for chunk in tqdm(range(total_chunks), desc="Uploading"):
62
- data = f.read(chunk_size)
63
- if not data:
64
- break
65
- logging.debug(f"Processed chunk {chunk+1} of {total_chunks}")
66
-
67
- logging.info("File upload completed successfully")
68
- return file
69
- except Exception as e:
70
- logging.error(f"Error during file upload: {str(e)}")
71
- raise gr.Error(f"Upload failed: {str(e)}")
72
-
73
  def process_zip(zip_file):
74
  temp_dir = tempfile.mkdtemp()
75
 
76
  try:
77
- logging.info(f"Starting to process zip file: {zip_file.name}")
78
  # Validate zip structure
79
  with zipfile.ZipFile(zip_file.name, 'r') as z:
80
  file_list = z.namelist()
@@ -117,16 +87,14 @@ def process_zip(zip_file):
117
  false_negatives.append((img_name, img_data))
118
 
119
  except Exception as e:
120
- logging.error(f"Error processing image {img_name}: {e}")
121
 
122
  processed_images += 1
123
  gr.Progress(processed_images / total_images)
124
 
125
- logging.info("Zip file processing completed successfully")
126
  return evaluate_model(labels, preds, false_positives, false_negatives)
127
 
128
  except Exception as e:
129
- logging.error(f"Error processing zip file: {str(e)}")
130
  raise gr.Error(f"Error processing zip file: {str(e)}")
131
 
132
  finally:
@@ -345,8 +313,7 @@ def create_gradio_interface():
345
  label="Upload Zip (must contain 'real' and 'ai' folders)",
346
  file_types=[".zip"],
347
  file_count="single",
348
- max_file_size=1024 * 10, # 10240 MB (10 GB)
349
- preprocess=custom_upload_handler
350
  )
351
  batch_btn = gr.Button("Process Batch", interactive=False)
352
 
@@ -366,4 +333,23 @@ def create_gradio_interface():
366
  )
367
 
368
  def enable_batch_btn(file):
369
- return gr.Button.update(interactive=file is not None)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  import urllib.request
13
  import base64
14
  from io import BytesIO
 
 
 
 
 
 
15
 
16
  MODEL_NAME = "cmckinle/sdxl-flux-detector"
17
  LABELS = ["AI", "Real"]
 
41
 
42
  return label, results
43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  def process_zip(zip_file):
45
  temp_dir = tempfile.mkdtemp()
46
 
47
  try:
 
48
  # Validate zip structure
49
  with zipfile.ZipFile(zip_file.name, 'r') as z:
50
  file_list = z.namelist()
 
87
  false_negatives.append((img_name, img_data))
88
 
89
  except Exception as e:
90
+ print(f"Error processing image {img_name}: {e}")
91
 
92
  processed_images += 1
93
  gr.Progress(processed_images / total_images)
94
 
 
95
  return evaluate_model(labels, preds, false_positives, false_negatives)
96
 
97
  except Exception as e:
 
98
  raise gr.Error(f"Error processing zip file: {str(e)}")
99
 
100
  finally:
 
313
  label="Upload Zip (must contain 'real' and 'ai' folders)",
314
  file_types=[".zip"],
315
  file_count="single",
316
+ max_file_size=1024 # 1024 MB (1 GB)
 
317
  )
318
  batch_btn = gr.Button("Process Batch", interactive=False)
319
 
 
333
  )
334
 
335
  def enable_batch_btn(file):
336
+ return gr.Button.update(interactive=file is not None)
337
+
338
+ zip_file.upload(
339
+ enable_batch_btn,
340
+ zip_file,
341
+ batch_btn
342
+ )
343
+
344
+ batch_btn.click(
345
+ process_zip,
346
+ zip_file,
347
+ [output_acc, output_roc, output_report, output_plots, output_fp_fn],
348
+ api_name="batch_process"
349
+ )
350
+
351
+ return app
352
+
353
+ if __name__ == "__main__":
354
+ app = create_gradio_interface()
355
+ app.launch(show_api=False, max_threads=24)