| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- yolov11
- ComputerVision
- MTCNN
- YOLO
- pyside6
- adb
- opencv템플릿매칭
- Vanishing Gradient
- r-net
- easyocr
- CAN통신
- 컴퓨터비전
- 비동기추론
- OpenCV
- yolov8-cls
- error
- CAN-FD
- p-net
- o-net
- 이미지증강
- 온디바이스AI
- opencv설치
- wandb
- bytetrack
- 기울기소실
- Classification
- AI
- 논문리뷰
- wandb끄기
- ObjectTracking
- Today
- Total
목록전체 글 (42)
공부저장소
비동기추론이란?????YOLO 같은 모델의 추론을 기다리지 않고 다음 작업을 진행하는 추론 방식이다!!즉, 모델이 처리 끝날 때까지 멈추지 않고 그 사이에 다른 작업을 계속하는 것을 말한다!동기 추론의 분제점보통 YOLO를 추론할 때result = model.predict()이렇게 쓴다!이 방식은 모델이 끝날 때까지 코드 전체가 멈춘다-> 이걸 블로킹(blocking)이라고 한다즉,YOLO 모델 추론 시작GPU 계산 끝날 때까지 CPU가 기다림끝나고 나면 다음 코드 실행-> GPU 추론 때문에 전체 코드 속도 느려짐ㅜㅜ비동기 추론 작동 방식비동기 추론은YOLO에게 "이거 계산해줘" 요청하고 바로 돌아온다!YOLO(GPU)는 백그라운드에서 추론 시작CPU는 그 동안 다른 작업을 계속 수행GPU가 끝내면 "..
오늘은 Mediapipe에서 제공하는 Face Landmarker를 사용하여 얼굴 랜드마크를 추출해보자 ~!!!Mediapipe가 업뎃되면서 기존에 많이 사용하던 얼굴 랜드마크 검출 방식인 FaceMesh가 더 이상 최신 버전과 잘 맞지 않고 여러 환경에서 오류가 발생했다............그래서 지금은 Mediapipe Tasks API 기반의 Face Landmarker가 공식적으로 권장되는 최신 방식이다ㅎㅎㅎhttps://ai.google.dev/edge/mediapipe/solutions/vision/face_landmarker/python?hl=ko이 공식 글을 참고하였다!!!!!!!!!!!! FaceMesh vs Face LandmarkerFaceMeshimport mediapipe as m..
대용량 이미지 크롤링을 하려고 했으나 Bing 이미지 검색이 한 쿼리에서 노출해주는 이미지 수가 제한되어 있고 중복 제거 때문에 숫자가 줄어들어서 1000장을 max_img로 설정해도 200장 정도 밖에 크롤링되지 않았다ㅜㅜ이를 해결하기 위해서 검색어를 여러 개로 두고 각 검색어 마다 폴더를 만들어서 200장씩 저장해 대용량의 이미지를 얻었다.... 1. 폴더 구조일단 데이터셋 폴더 구조는 다음과 같다2. 라이브러리 설치pip install icrawler3. 코드 작성3.1 라이브러리 선언from icrawler.builtin import BingImageCrawlerimport os3.2 폴더 경로 설정root = ""3.3 키워드 설정keywords = [ "cat animal", "cat p..
오늘은 이미지 크롤링을 해볼 것이다~!Bing 검색 엔진에서 이미지를 찾아서 크롤링 할 것이다구글 이미지는 크롤링 막는 장치가 강력하고 사용 제한이 걸려서 bing으로 진행하였다ㅜㅜ(코드도 복잡해짐..........)1. 먼저 라이브러리를 설치해준다!pip install icrawler2. 이미지를 저장할 폴더를 지정해준다crawler = BingImageCrawler(storage={'root_dir': ''})3. 크롤링 할 키워드와 이미지 수를 지정해준다crawler.crawl(keyword='cat', max_num=300) 4. 전체 코드from icrawler.builtin import BingImageCrawlercrawler = BingImageCrawler(storage={'root_di..
오늘은 Ultralytics에서 제공하는 yolov8n-cls 모델을 사용해 학습을 시켜볼 것이다! 데이터셋을 구축할 때 구조는 다음과 같다dataset/ ├─ train/ │ ├─ cat/ │ └─ dog/ └─ val/ ├─ cat/ └─ dog/ 먼저 필요한 라이브러리를 설치해준다pip install ultralytics 그 다음 모델을 불러온다~!from ultralytics import YOLOmodel = YOLO("yolov8n-cls.pt") 학습 파라미터 자신이 원하는대로 설정하고 실행해주면 끝이다!model = YOLO("yolov8n-cls.pt")results = model.train( data="dataset", epoc..
코랩에서 yolo detection을 학습시킬 때는 안뜨던 wandb가 classification을 학습시킬 때는 자꾸 떠서 key를 입력하라고 한다ㅜㅜ이로 인해 학습이 진행이 안되었다...........(학습 안되는 것도 모르고 기다리다가 한시간을 날렸다 넘우울)그래서 오늘은 wandb를 끄는 방법을 소개해보려고 한다먼저 wandb는 머신러닝/딥러닝 실험을 추적하고 시각화해주는 툴이다~! 1. 런타임 재연결나는 코랩으로 진행하였다. 일단 처음으로 무조건 런타임 재연결을 시켜주어야한다.코랩에서는 이전에 실행된 환경변수/모듈 캐시가 남아있을 수 있기 때문에 반드시 런타임을 새로 시작해야 wandb가 완전히 꺼진다.....그러니까 처음 classification을 학습시킬 때는 처음부터 wandb를 꺼주도록..
데이터셋을 구성했는데 train/val 파일로 나누어지지 않았다ㅜㅜ이런 경우를 해결하기 위해!train/val 폴더로 이미지를 자동 분할하는 코드를 구현해보았다ㅎㅎ코드 설명1. 먼저 필요한 라이브러리를 선언해준다import os, random, shutil, glob2. 데이터셋 폴더와 새롭게 저장할 폴더를 선언해준다folder = ""save_folder = ""3. train과 val로 나눌 비율을 정해준다split = 0.8나는 80/20 비율로 정하였다ㅎㅎ4. 랜덤 고정하기~random.seed(42) random 결과를 고정하기 위해 seed를 쓴다!랜덤을 쓸 때마다 실행할 때마다 결과가 달라질 수 있는데, seed(42)를 주면 항상 같은 순서로 섞이게 된다!이때42는 씨앗값으로 어떤 숫자도 ..
ADB 명령어를 python 파일에서 실행할 수 있도록 정리!→ subprocess 라이브러리 사용→ 시스템 명령을 실행하는 모듈이다1. ADB 연결 확인→ adb devicessubprocess.check_out(["adb", "devices"], text=True)2. ADB 터치/드래그 이벤트 불러오기→ adb shell getevent -ltsubprocess.Popen(["adb", "shell", "getevent", "-lt"], stdout=subprocess.PIPE, text=True, bufsize=1)3. ADB 현재 화면 캡쳐 후 불러오기→ adb exec-out screencap -psubprocess.run(["a..
온디바이스 AI에 대해 알아보기 전에 클라우드 AI에 대해 먼저 알아보자!클라우드 AI인터넷 서버(데이터 센터)에서 동작하는 AI이다.GPT, Claude, Copilot처럼 대부분의 대규모 AI 서비스가 클라우드 AI에 해당한다.장점강력한 연산 능력 -> 거대한 모델 처리 가능단점인터넷 연결 필수서비스 장애 시 사용 불가사용자의 질문/데이터가 서버로 전송 -> 보안/개인정보 문제 발생서버 유지/관리 비용 큼온디바이스 AI서버에 연결하지 않고 기기 자체 칩셋(NPU, GPU, CPU 등)에서 직접 AI 연산을 수행하는 방식이다.스마트폰, PC, 웨어러블 등의 기기에서 바로 동작한다.장점인터넷 연결 없이도 사용 가능속도 빠름개인정보 보호 유리단점기기 성능/배터리 제약복잡하고 대규모 모델 처리 불가온디바이스..
OpenCV 템플릿 매칭이란?입력 이미지와 템플릿(template) 이미지를 입력 받아 입력 이미지에서 템플릿 이미지를 찾는 것템플릿 매칭을 위해 matchemplate 함수 사용-> cv2.matchTemplate(image, templ, method)image: 입력 이미지templ: 템플릿 이미지method: 매칭 방법. 이에 따라 유사도 계산 방법 달라짐템플릿 매칭 방법(총 6개)TM_SQDIFF/ TM_SQDIFF_NORMED0에 가까울수록 매칭 잘됨작을수록 매칭 좋음, 밝기 변화에 민감 (NORMED가 조금 더 안정)TM_CCORR클수록 매칭 좋음, 밝기(스케일)에 민감TM_CCORR_NORMED0~11에 가까울수록 좋음스케일 변화엔 강하지만 밝기 오프셋은 못 없앰TM_CCOEFF클수록 좋음평..