라벨이 리눅스인 게시물 표시

tensorflow 학습된 모델 평가하기(Classification)

이미지
➢ 학습을 진행하면 model.ckpt-* 파일들이 생성이 된다. ➢ 위의 파일들을 tensorflow 폴더에 있는 eval_image_classifier.py 파일을 이용하게 된다. (실행시 나타나는 결과 값) 아래쪽에 있는 Accuracy 값을 중점으로 보면 된다. ➢ 지금 나타나는 폴더 목록에서는 하나만 나타나 있지만 학습시 여러개의 파일들이 생성이 될 것이다. 이때 checkpoint 파일을 수정을 하지 않으면 계속해서 마지막 생성된 파일만 검사를 시행할 것이다. 그렇기에 자신이 원하는 ckpt를 검사하고 싶으면 checkpoint 파일을 수정하여 주면 된다. <예시> (수정 전) (수정 후) ➢ 그 후 eval_image_classifier.py 를 실행하여 주면 된다. $ python eval_image_classifier.py --alsologtostderr --checkpoint_path= /home/user/checkpoint/file/path/train_inception_v4_flower_FineTune_logs/all --dataset_dir= /tfrecord/file/path --dataset_name= flower --dataset_split_name=validation --model_name= inception_v4 (붉은색은 자신에게 맞게 바꾸어 준다.)

tensorflow classification 학습시 model 저장

이미지
tensorflow로 classification 학습시 일정 주기마다 model.ckpt를 저장하고 일정 갯수가 넘어가면 가장 오래된 파일을 지우고 새로 저장을 한다. 이때 total loss가 가장 낮은 상황일때 model을 저장하고 싶었다. tensorflow 폴더 안의 exporter.py를 비롯한 몇몇 파일을 이용하면 될 것 같으나 결국 방법을 찾지 못 하였다. 그래서 임의로 learning.py 파일에서 코드를 수정하고 추가하여 total loss를 비교하여 가장 낮을 때 따로 저장을 하게 하였다. 아래쪽에서 비교하기전 사용할 것들을 미리 선언 sv.save_path.rfind('model')을 통해 경로에서 model이라는 문자가 어디에 있는지 확인 < .find() 사용시 문자열의 앞부터 찾기 시작하며, .rfind()사용시 문자열의 뒤쪽부터 찾기 시작함> cutPath와 path_for_remove에 각각 경로를 자른 앞부분과 model을 저장할 경로를 지정하여 주었다. 위의 사진에서는 안 나왔으나 if not (os.path.isdir(path_for_remove)):     os.makedirs(path_for_remove) 를 이용하여 해당 경로가 없을 시 디렉토리를 생성하게 하였다. 그 후 위의 사진에서 보이듯이 디렉토리에 파일들이 있는지 검사하고 있으면 지우고, 없으면 해당 지점의 model을 저장하게 해 두었다.

yolo에서 라벨링으로 생성한 txt 파일을 tensorflow에 맞는 xml 파일로 변환하기

이미지
우선 윈도우와 리눅스에서 아나콘다로 실행하여 본 결과 모두 정상 작동을 한다. 경로 작성시 window에서 아래와 같은 오류가 표시 될 시 경로 앞에 r을 붙여주면 된다. ex) IMG_PATH = r "D:\VisualStudio\WorkSpace\data\img-GBS-IMG" txt 파일에서 xml 파일로 변환시에 xml파일 이름 앞에 경로가 추가되는 오류는 고쳤으나 저장 경로가 제대로 지정되지 않는 오류는 아직 수정하지 못 하였다. 그러니 따로 디렉토리를 생성하고 그 안에서 이 코드를 돌리는 것이 나을 것이다. 코드에서 IMG_PATH와 txt_folder는 각각 .jpg, .txt 파일만 넣어 두는 것이 나을 것이다. 한 폴더 안에 jpg, txt 파일이 같이 있으면 파일 정보를 읽어 오는데 오류가 발생할 것이다.(능력자 분은 고쳐서 사용 하시면 됩니다...) from lxml import etree from PIL import Image import csv import os import io IMG_PATH = r"D:\VisualStudio\WorkSpace\data\img-GBS-IMG" fw = os.listdir(IMG_PATH) #path of save xml file save_path = r"D:\VisualStudio\WorkSpace\data\annotations" # txt_folder is txt file root that using darknet rectbox txt_folder = r"D:\VisualStudio\WorkSpace\data\img-GBS-TXT" #edit your label set labels = ['green','brown','sugar'] def csvread(fn):     with open(fn, 'r') as cs...

Tensorflow Object_detect

이미지
➢ Object Detecting을 실행하기전 자신이 원하는 사진들을 찍어둔다. 사진은 많으면 많을 수록 좋으며 200장 이상 그리고 다른 배경에서 찍은 사진일수록 좋다. (찍어둔 사진들은 임의의 폴더를 만들고 그 안에 train폴더와 test폴더를 만들어 준다.) (.csv 파일은 아래 xml_to_csv.py 실행 시 생성된다.) ➢ 사진을 찍었으면 각 이미지에서 원하는 이미지를 박싱하여 라벨을 붙여 주어야 한다. 프로그램은 labelImg를 사용하였다. ➢ 각 이미지 마다 라벨링을 완료하였으면 맞지 않는 사이즈가 있을 수 있기에 사이즈 체크를 하여준다. $ cd tensorflow1/models/research/object_detection $ python3 sizeChecker.py  --move (뒤에 붙은 --move는 옵션이기에 빼주어도 상관없으며, --move 입력시 worng 폴더가 만들어지며 이 폴더 안에 맞지 않는 사진들이 들어간다.) (sizeChecker.py의 소스코드 중 디렉토리를 이미지가 저장되어 있는 폴더로 변경하여 주어야한다.) ➢ 사이즈 확인후 .xml 파일을 만들어 준다. $ python3 xml_to_csv.py (xml_to_csv.py 안에는 실행시 어디에 파일은 만들지에 대한 디렉토리가 있기에 사용자에 따라서 바꾸거나 그대로 둔다. 나는 내 임의의 경로로 새로 설정하여 주었다.) ➢ generate_tfrecord.py를 실행하여 준다. (실행전 파일에서 라벨 수와 이름을 변경하여 주어야 한다.) python3 generate_tfrecord.py --csv_input=images\train_labels.csv --image_dir=images\train --output_path=train.record python3 generate_tfrecord.py --csv_input=images\test_labels.csv --image_dir=image...

Ubuntu(18.04)에 tensorflow 설치

➢Tensorflow를 설치하기 전 ubuntu를 업데이트와 업그레이드 해준다. $ sudo apt-get update $ sudo apt-get upgrade ➢OpenCV 설치 $ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev $ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev $ sudo apt-get install libxvidcore-dev libx264-dev $ pip3 install opencv-python ➢Tensorflow설치 및 PATH설정 $ pip3 install tensorflow $ mkdir tensorflow1 $ cd tensorflow1 $ git clone --recurse-submodules https://github.com/tensorflow/models.git $ sudo nano ~/.bashrc 마지막 줄에 export PYTHONPATH=$PYTHONPATH:/home/user/tensorflow1/models/research:/home/user/tensorflow1/models/research/slim 추가 ➢Protobuf tensorflow1/models/research에서 실행 $  protoc --python_out=. .\object_detection\protos\anchor_generator.proto .\object_detection\protos\argmax_matcher.proto .\object_detection\protos\bipartite_matcher.proto .\object_detection\protos\box_coder.proto .\object_detection\protos\box_predictor.proto .\object_detection\protos\eva...

온도 센서와 조도 센서 이용하기

이미지
➢ 라즈베리를 사용하고 온도 센서, 조도 센서를 mcp3204를 이용하여 값을 읽어와 화면에 출력을 한다. ➢ 값을 읽어 오면 부저자 짧게 두번 울리며 초록색 led가 점등한다. ➢ 온도와 조도 중 한 값이 제대로 읽어지지 않으면 적색 led가 점등한다. ➢ 조도 센서가 일정 값 만큼 어두워 지면 노란색 led가 점등한다. ➢ 모듈 ➢ 앱 ➢ 동작 영상 ➢ 나머지 헤더 파일 https://drive.google.com/drive/folders/18n9wTS1evdIPmOtWm_4icxFq_nXFGNqY?usp=sharing

wiringPi, DHT11 사용하기

이미지
라즈베리파이 wiringPi 이용하여 온습도 센서(DHT11) 사용 ➤ gpio 핀 배열 ➤ 코드 ➤ MakeFile ➤ 실행 결과

라즈베리파이와 mcp3208 사용하기

이미지
만들어 주어야 할 파일 목록 Makefile에는 나중에 컴파일 시 사용 mcp3208.c와 mcp3208.h 파일을 작성하여 준다. ➤ mcp3208.h ➤mcp3208.c ➤mcp3208main.c ➤Makefile을 이용하여 make 실행 후 생성된 mcp3208App 실행시 화면 나타는 문자열에서 첫번째(digital data)와 3번째(Temp) 까지는 온도 센서의 값 그리고 4번째(digital data)에서 5번째(analog data)의 값은 가변저항의 값을 나타낸다.

디바이스 드라이버 01

이미지
VM Ware의 우분투에서 작업 1) nano로 hello_module.c 작성 2) nano로 Makefile 생성 3) make 완료후 ko파일 생성됨 4) 라즈베라 파이로 이동하여 $sudo mknod /dev/memory c 255 0 $sudo chmod 777 /dev/memory $sudo insmod memory.ko 실행 5) TestApp.c 파일 생성 6) make 실행 7) 생성된 TestApp 을 실행 $./TestApp 작동하는것을 확인