【MATLAB】 물고기 사진 데이터 세트를 google 이미지 검색 스크래핑으로 만들기
개요
다이빙으로 찍을 수있는 대량의 물고기 사진.
무엇이 찍혀 있는지 판단하여 라벨을 지정하고 자동 정리하는 도구를 만들려고 했습니다.
이 3단계로 갑니다.
1. google 이미지 검색으로 물고기 사진을 모아 데이터 세트를 만듭니다.
2.1 데이터 세트를 사용하여 GoogLeNet의 전이 학습
3. 2의 네트워크를 사용하여 소지 사진의 물고기 이름을 추정, 라벨링
이번은 1의 비망록입니다.
사전 준비
[1] 사이트 을 참고로 하여 설정했습니다.
csv 파일로 작성.
이 목록을 위에서 검색합니다.
table 데이터로서 읽어들이기 위해, 1행째는 table 변수의 이름 「jname」 「flag」를 기재.
flag는 스크래핑되지 않은 것을 0, 끝난 것을 1로 했습니다.
물고기 사진 스크래핑
우선은 사전 준비로 작성한, 어명 리스트를 읽어들입니다.
flag가 0인 것을 테이블 T3에 저장합니다.
%% 検索したい魚の名前をリストアップ
% 魚名リストの読み込み
path = 'C:\Diving';
folder = 'fish_dataset';
filename = fullfile(path,folder,'fishname.csv');
T1 = readtable(filename);
% T2はflag=1のリスト(flagが0のもの消す)
T2 = T1;
T2(T2.flag==0,:) = [];
% T3はflag=0のリスト(flagが1のもの消す)
T3 = T1;
T3(T3.flag==1,:) = [];
len = size(T3,1);
검색하여 다운로드하여 저장합니다.
T3의 1 행째가 「아오미우시」였다고 하면,
%% 検索したい魚の名前をリストアップ
% 魚名リストの読み込み
path = 'C:\Diving';
folder = 'fish_dataset';
filename = fullfile(path,folder,'fishname.csv');
T1 = readtable(filename);
% T2はflag=1のリスト(flagが0のもの消す)
T2 = T1;
T2(T2.flag==0,:) = [];
% T3はflag=0のリスト(flagが1のもの消す)
T3 = T1;
T3(T3.flag==1,:) = [];
len = size(T3,1);
라는 흐름입니다.
"물고기 이름 〇"뿐만 아니라 "물고기 이름 00 다이빙"에서 검색하는 것은
물고기가 「이시다이」라든가 「시이라」라든가의 거물이라면, 낚시과 사진이 상위 10건을 차지하기 때문입니다.
%% 検索、DL、保存
% API規約の都合上50にする(2通りで検索する,50*2=100がAPIの制限)
if len > 50
len = 50;
end
option = weboptions('Timeout',60) ;
imgurl = cell(1,10); % 1リクエストにつき10枚まで
for i=1:len
% 「アオウミウシ」フォルダを作成
mkdir(fullfile(path,folder,T3.jname{i}));
% まず、「アオウミウシ」で検索してDL、保存
word = T3.jname{i};
api = ['https://www.googleapis.com/customsearch/v1'...
'?key=[APIキー]'...
'&cx=[検索エンジンID]'...
'&searchType=image'...
'&q=' word...
'&lr=lang_ja'...
'&num=10'...
'&start=1'];
data = webread(api);
% 1.jpg~10.jpgとして保存
for j=1:size(data.items,1)
imgurl{j} = data.items(j).link;
savename = fullfile(path,folder,T3.jname{i},[int2str(j) '.jpg']);
try
websave(savename,imgurl{j},option);
catch
delete([savename '*']);
end
end
% 次に、「アオウミウシ ダイビング」で検索してDL、保存
word = [T3.jname{i} ' ダイビング'];
api = ['https://www.googleapis.com/customsearch/v1'...
'?key=[APIキー]'...
'&cx=[検索エンジンID]'...
'&searchType=image'...
'&q=' word...
'&lr=lang_ja'...
'&num=10'...
'&start=1'];
data = webread(api);
% 11.jpg~20.jpgとして保存
for j=1:size(data.items,1)
imgurl{j} = data.items(j).link;
savename = fullfile(path,folder,T3.jname{i},[int2str(10+j) '.jpg']);
try
websave(savename,imgurl{j},option);
catch
delete([savename '*']);
end
end
% DL済みのものはフラグを「1」にする
T3.flag(i)=1;
end
저장이 끝나면 어명 리스트의 「flag」를 1로 갱신해 둡니다.
%% 魚名リストの更新
Tnew = [T2;T3];
writetable(Tnew,filename);
결과
폴더가 만들어져 저장되었습니다.
덧붙여 다른 물고기의 사진이 섞여 버렸을 때는…수작업으로 삭제입니다.
결국 수작업으로는 면할 수 없네요…
참고문헌
이하의 사이트를 참고로 했습니다.
[1] Google Custom Search API를 사용하여 자동 이미지 수집 도구를 만들었습니다.
htps : // q 룬 ch. 이오 / 엔 토리 S / Q 그럼 H6S mbFt76WPJ
Reference
이 문제에 관하여(【MATLAB】 물고기 사진 데이터 세트를 google 이미지 검색 스크래핑으로 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/moko_middo/items/1a3587f7134002d0486b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이하의 사이트를 참고로 했습니다.
[1] Google Custom Search API를 사용하여 자동 이미지 수집 도구를 만들었습니다.
htps : // q 룬 ch. 이오 / 엔 토리 S / Q 그럼 H6S mbFt76WPJ
Reference
이 문제에 관하여(【MATLAB】 물고기 사진 데이터 세트를 google 이미지 검색 스크래핑으로 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/moko_middo/items/1a3587f7134002d0486b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)