Download QWENVL-PRIVATE/analysis/tmp_plot.py from TerryPei/GroundFlow: direct link, hf CLI and curl.
- Browser
- Download file 3.1 kB
-
https://huggingface.co/TerryPei/GroundFlow/resolve/main/QWENVL-PRIVATE/analysis/tmp_plot.py
- Command line
-
hf download hf://TerryPei/GroundFlow/QWENVL-PRIVATE/analysis/tmp_plot.py
-
curl -L -o tmp_plot.py https://huggingface.co/TerryPei/GroundFlow/resolve/main/QWENVL-PRIVATE/analysis/tmp_plot.py
3.1 kB
| import matplotlib.pyplot as plt | |
| import numpy as np | |
| # Benchmarks included: DocVQA, ChartQA, OCRBench, InfoVQA, TextVQA, V*, POPE | |
| models = ['Baseline-576', '+Ours (Full)', '+Ours-Gate', 'Baseline-1024'] | |
| colors = ['#95a5a6', '#e74c3c', '#2ecc71', '#3498db'] # Grey, Red, Green, Blue | |
| markers = ['o', '^', '*', 's'] | |
| # Data Structure: {Benchmark: (Score_List, Time_List)} | |
| # Order matches 'models' list | |
| data = { | |
| 'DocVQA': ([92.0, 93.6, 93.4, 93.9], [586, 806, 722, 799]), | |
| 'ChartQA': ([82.6, 85.6, 83.9, 84.4], [227, 396, 266, 355]), | |
| 'OCRBench': ([81.5, 84.1, 83.5, 83.1], [125, 193, 155, 172]), | |
| 'InfoVQA': ([70.2, 78.7, 77.2, 76.6], [251, 454, 355, 375]), | |
| 'TextVQA': ([81.1, 83.1, 82.7, 82.8], [436, 806, 506, 678]), | |
| 'V*': ([64.4, 76.4, 77.5, 70.2], [15, 29, 26, 24]), | |
| 'POPE': ([86.7, 88.6, 87.4, 86.7], [675, 1299, 788, 1115]) | |
| } | |
| # Lists to store aggregated data | |
| avg_abs_scores = [] | |
| avg_rel_times = [] | |
| # Calculate Averages for each model | |
| num_models = len(models) | |
| for i in range(num_models): | |
| total_score = 0 | |
| total_rel_time = 0 | |
| count = 0 | |
| for bench, (scores, times) in data.items(): | |
| # Sum absolute scores | |
| total_score += scores[i] | |
| # Sum relative time (Current Time / Baseline-576 Time) | |
| base_time = times[0] | |
| total_rel_time += times[i] / base_time | |
| count += 1 | |
| avg_abs_scores.append(total_score / count) | |
| avg_rel_times.append(total_rel_time / count) | |
| # Create Plot | |
| plt.figure(figsize=(11, 8)) | |
| plt.grid(True, linestyle='--', alpha=0.6) | |
| # Plot Points | |
| for i, model in enumerate(models): | |
| plt.scatter(avg_rel_times[i], avg_abs_scores[i], | |
| color=colors[i], s=250, label=model, marker=markers[i], zorder=10, edgecolors='k') | |
| # Dynamic annotation placement to avoid overlap | |
| xytext_offset = (0, 15) | |
| if 'Baseline-1024' in model: | |
| xytext_offset = (0, -25) # Move label down | |
| plt.annotate(f"{model}\n({avg_rel_times[i]:.2f}x Time, {avg_abs_scores[i]:.1f}% Acc)", | |
| (avg_rel_times[i], avg_abs_scores[i]), | |
| xytext=xytext_offset, textcoords='offset points', ha='center', | |
| fontsize=10, fontweight='bold', | |
| bbox=dict(boxstyle="round,pad=0.3", fc="white", alpha=0.7, ec="none")) | |
| # Axis Limits (optional, for aesthetics) | |
| plt.xlim(0.9, 1.8) | |
| plt.ylim(78, 86) # Adjust based on data range to zoom in on differences | |
| # Axis Labels | |
| plt.xlabel('Relative Time Cost (Normalized to Baseline-576)\n← Faster | Slower →', fontsize=12, fontweight='bold') | |
| plt.ylabel('Average Absolute Accuracy (%)\nHigher is Better ↑', fontsize=12, fontweight='bold') | |
| plt.title('Performance vs. Efficiency Trade-off\n(Average across 7 Benchmarks)', fontsize=14, pad=15) | |
| # Reference Lines | |
| # Vertical line at Baseline-576 time (1.0) | |
| plt.axvline(x=1.0, color='#95a5a6', linestyle=':', linewidth=2, label='Baseline Speed') | |
| # Legend | |
| plt.legend(loc='lower right', fontsize=11, frameon=True, framealpha=0.9, shadow=True) | |
| plt.tight_layout() | |
| plt.show() | |
| # plt.savefig('trade_off_plot_abs.png') | |
| # print("Plot saved as 'trade_off_plot_abs.png'") |