ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Train the AI, See Results in Realtime
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗An interactive browser demo for AI data-annotation training. Trainees label a scene, then watch a simulated AI act on their labels. Every missed, loose or wrong label shows up in the outcome.
Educational simulation. Outcomes come from simple rules, not a real AI model, real inference or measured safety results.
Double-click index.html, or serve the folder (python3 -m http.server). No build step, dependencies or network needed. Tests: node tests/run.js.
GitHub Pages: push the repo and enable Pages on the branch root. All paths are relative and .nojekyll is included, so it works as-is.
| Page | What it is |
|---|---|
index.html | Overview: hero, how it works, scene teaser |
projects.html | Gallery of all scenes |
learn.html | Scoring, scene summary, glossary |
play.html?scene=<id> | The simulator (road, warehouse, drone, crop, llm) |
| Scene | Labels | Simulation | Critical items |
|---|---|---|---|
Self-driving car (road) | 10 boxes, 5 classes | Car drives the street (2D/3D) | Lead car, pedestrian, cyclist, red light |
Warehouse PPE (warehouse) | 12 boxes | AI safety gate checks workers | Workers |
Drone census (drone), Maasai Mara | 12 boxes, 6 classes | Drone flies transects, live species tally, alerts | Lion near the boma, person setting snares |
Maize scout (crop), Kenya | 10 leaves, 5 classes | 21-day field timelapse: treatment, spread, yield | Fall Armyworm, Lethal Necrosis |
LLM answers (llm) | 10 answers, Correct/Wrong | Chatbot answers the same questions | Two unsafe health answers |
Across all scenes: good label = handled well, loose box = late, missing or wrong = not handled. Missing a critical item gives the worst outcome. In the LLM scene, approving a wrong answer makes the bot repeat it (hallucination or unsafe advice), rejecting a right one makes it invent an alternative, and leaving one unlabelled gives "I'm not sure".
| File | Role |
|---|---|
js/config.js | Road scene data, thresholds, G.SCENARIOS + G.useScenario |
js/scene.js | Road art; shared helpers (roundRect, rng, getSceneCanvas) |
js/warehouse.js, ppe-sim.js, ppe-view.js | Warehouse scene, sim, renderer |
js/drone.js, drone-sim.js, drone-view.js | Drone scene, sim, renderer |
js/crop.js, crop-sim.js, crop-view.js | Maize scene, sim, renderer |
js/llm.js, llm-sim.js, llm-view.js | LLM items, label evaluator + text labeller, chat sim + view |
js/view-kit.js | Shared canvas helpers for the newer views |
js/annotator.js, evaluator.js | Box tool; IoU, matching, score |
js/simulator.js, sim-view.js, sim-3d.js | Road sim and renderers |
js/feedback.js, app.js | Results cards and play-page wiring |
js/nav.js, gallery.js | Site nav and scene cards |
css/styles.css, css/site.css | Simulator styles; site pages and new components |
tests/run.js | Node checks for every scene |
Scripts are plain <script> tags (not ES modules) so pages work from file://.
Add a file that registers G.SCENARIOS.<id> with classes, groundTruth, drawScene, card, outcomes (keys safe, warnings, near_miss, collision), stats, critical, minor, advice, and the names of its sim and view. Then include it in play.html and js/gallery.js's order list. Keep ground-truth boxes non-overlapping.
js/evaluator.js)In simple terms: IoU (shown in the app as "fit") says how well your box sits on the object: 100% is exact, 0% is not touching. Under 30% the AI misses the object; 30–75% it sees it late or unsure and you score less; 75%+ it sees it reliably; 80%+ earns full points. Tighter boxes score higher.
good: IoU ≥ 0.75 and right classpoorBox: 0.30 ≤ IoU < 0.75 and right class (loose)wrongClass: located but labelled wronglymissing: no box with IoU ≥ 0.30duplicate (another box on an already-matched object, −3 points each) or spurious (a box on nothing, −4 each).js/simulator.js)buildDetections converts verdicts into what the simulated AI "sees": good → detected early, poorBox → detected late and weakly, missing/wrongClass → not detected.
Four objects are safety-critical and change the drive:
| Object | Detected | Detected late (loose box) | Not detected |
|---|---|---|---|
| Cyclist crossing, pedestrian on crosswalk, braking car ahead | Brakes smoothly and waits | Reacts late, brakes hard, near miss | No reaction, collision |
| Red traffic light | Stops at the line | Late stop | Runs the red light |
The other six objects (signs, parked car, oncoming car, two pavement pedestrians) never cause a crash. If missed they raise a warning during the drive. Outcome = Collision, Near miss, Completed with warnings or Completed safely. The run is deterministic, so reruns are comparable. A collision ends the run, and objects not yet reached are marked in the feedback.
Tuning knobs (speeds, brake force, detection ranges, near-miss gap) are in P at the top of simulator.js.
G.GROUND_TRUTH in config.js. Keep boxes non-overlapping so matching stays unambiguous.G.THRESHOLDS.{id: {mode: 'good'|'late'|'missed', conf, label}} map as G.buildDetections returns and pass it to G.Sim.create. Nothing else changes.